「openssl x509 -req」 と 「openssl req -x509」 コマンドの違い
openssl x509 -req と openssl req -x509 の違いを徹底解説
SSL/TLS証明書を扱う際に出てくる「openssl x509 -req」と「openssl req -x509」の2つのコマンド。名前が似ているため、どちらを使えばよいか迷うこともあります。しかし、実際にはこの2つは役割が異なります。
この記事では、わかりやすい例え話を交えながら、それぞれのコマンドが何をするのか、どのような場面で使うべきなのかまとめていきます!
openssl x509 -req: CSR(証明書署名要求)から証明書を作成
openssl x509 -req は、既に作成済みのCSR(証明書署名要求)を使って証明書を生成するためのコマンドです。
使いどころ
CSRを作成済みの場合に、その内容を基に署名された証明書を作成する。
通常はCA(認証局)がCSRを受け取って証明書を発行する際に使用されます。
自己署名証明書を生成する場合にも使用可能です。
実際の例
例えば、すでに「my_request.csr」というCSRを作成している場合、このCSRを使って証明書を作成します。
openssl x509 -req -in my_request.csr -signkey my_private.key -out my_certificate.crt -days 365
このコマンドの流れは以下の通りです:
-in my_request.csr: 作成済みのCSRを入力として指定します。
-signkey my_private.key: 証明書を署名する際に使用する秘密鍵を指定します。
-out my_certificate.crt: 出力される証明書ファイル。
-days 365: 証明書の有効期間を365日に設定。
例え話で理解する
CSRを「申請書」にたとえると、openssl x509 -req は「申請書を受け取って承認印を押す」作業にあたります。
もしCSRが他人によって作られていた場合、その申請書に基づいて証明書(承認書)を発行します。
openssl req -x509: 直接自己署名証明書を生成
一方で、openssl req -x509 は、CSRを作成せずに自己署名証明書を一気に生成するコマンドです。証明書の内容と秘密鍵を同時に作成できるので、自己署名証明書を手早く準備したいときに便利です。
使いどころ
ローカル開発環境やテスト環境で、簡単に自己署名証明書を作りたい場合。
CSRを作成するプロセスを省略し、直接証明書を生成したい場合。
実際の例
以下のコマンドで、秘密鍵と証明書を同時に作成します。
openssl req -x509 -newkey rsa:2048 -keyout my_private.key -out my_certificate.crt -days 365
このコマンドの流れは以下の通りです:
-x509: 直接自己署名証明書を生成するオプション。
-newkey rsa:2048: 2048ビットの新しいRSA秘密鍵を生成。
-keyout my_private.key: 出力される秘密鍵ファイル。
-out my_certificate.crt: 出力される証明書ファイル。
-days 365: 証明書の有効期間を365日に設定。
例え話で理解する
openssl req -x509 は、「自分で申請書を書き、自分で承認印を押す」作業にあたります。CSRの生成プロセスを省略して、一気に証明書を完成させるイメージです。
両者の違いを整理すると…
openssl x509 -req は、事前に作られたCSRをもとに証明書を作成します。他人が作った申請書に署名するプロセスをイメージしてください。
openssl req -x509 は、CSRを作らずに自己署名証明書を直接生成します。申請書作成と署名を自分一人で完結するような動きです。
どちらを使うべき?
CSRがすでにある場合:
例えば、CSRを別のツールやシステムで生成済みなら、openssl x509 -req を使って証明書を発行します。
CAとしてCSRを受け取り署名する際にも、このコマンドを使用します。
自己署名証明書を作りたい場合:
開発環境やローカルで簡易的に証明書を生成するなら、openssl req -x509 が適しています。
CSRの作成を省略して一気に作業を進めたい場合に便利です。
まとめ
openssl x509 -req: CSR(証明書署名要求)を受け取り、それをもとに証明書を生成。
openssl req -x509: 自己署名証明書を一から直接生成。
どちらもSSL/TLS証明書の作成に欠かせないツールですが、使い分けることで効率よく目的を達成できます。CSRがある場合は「署名者」として、CSRが不要なら「ワンストップで証明書を作る人」として、それぞれのコマンドを活用してみましょう! 😊