見出し画像

「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

このコマンドの流れは以下の通りです:

  1. -in my_request.csr: 作成済みのCSRを入力として指定します。

  2. -signkey my_private.key: 証明書を署名する際に使用する秘密鍵を指定します。

  3. -out my_certificate.crt: 出力される証明書ファイル。

  4. -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

このコマンドの流れは以下の通りです:

  1. -x509: 直接自己署名証明書を生成するオプション。

  2. -newkey rsa:2048: 2048ビットの新しいRSA秘密鍵を生成。

  3. -keyout my_private.key: 出力される秘密鍵ファイル。

  4. -out my_certificate.crt: 出力される証明書ファイル。

  5. -days 365: 証明書の有効期間を365日に設定。

例え話で理解する
openssl req -x509 は、「自分で申請書を書き、自分で承認印を押す」作業にあたります。CSRの生成プロセスを省略して、一気に証明書を完成させるイメージです。


両者の違いを整理すると…

  • openssl x509 -req は、事前に作られたCSRをもとに証明書を作成します。他人が作った申請書に署名するプロセスをイメージしてください。

  • openssl req -x509 は、CSRを作らずに自己署名証明書を直接生成します。申請書作成と署名を自分一人で完結するような動きです。


どちらを使うべき?

  1. CSRがすでにある場合:

    • 例えば、CSRを別のツールやシステムで生成済みなら、openssl x509 -req を使って証明書を発行します。

    • CAとしてCSRを受け取り署名する際にも、このコマンドを使用します。

  2. 自己署名証明書を作りたい場合:

    • 開発環境やローカルで簡易的に証明書を生成するなら、openssl req -x509 が適しています。

    • CSRの作成を省略して一気に作業を進めたい場合に便利です。


まとめ

  • openssl x509 -req: CSR(証明書署名要求)を受け取り、それをもとに証明書を生成。

  • openssl req -x509: 自己署名証明書を一から直接生成。

どちらもSSL/TLS証明書の作成に欠かせないツールですが、使い分けることで効率よく目的を達成できます。CSRがある場合は「署名者」として、CSRが不要なら「ワンストップで証明書を作る人」として、それぞれのコマンドを活用してみましょう! 😊

いいなと思ったら応援しよう!