「openssl x509 -req -in sample.csr -CA car.crt -CAkey car.key -CAcreateserial -out sample.crt -days 100」 コマンドに関して
証明書の発行は、SSL/TLS通信を実現する上で重要なステップです。openssl x509 コマンドは、認証局(CA)が証明書署名リクエスト(CSR)を署名して新しい証明書を生成する際に使用されます。
この記事では、このコマンドの詳細な解説とともに、実際の利用シーンや例え話を交えながらまとめていきます。
コマンドの目的
以下のコマンドは、CSR(Certificate Signing Request)を元に、既存のCA証明書を使用して新しい署名済み証明書を発行します。
openssl x509 -req -in sample.csr -CA car.crt -CAkey car.key -CAcreateserial -out sample.crt -days 100
このコマンドの役割は、CSRに対して「署名」を行い、信頼性を付与した証明書を生成することです。本来、これは 認証局(CA) が行うプロセスです。
コマンドの詳細
openssl x509 \ # X.509証明書の操作を行う
-req \ # CSR (証明書署名リクエスト) を入力として使用
-in sample.csr \ # 入力ファイル: CSR (署名対象)
-CA car.crt \ # 署名に使用するCA証明書
-CAkey car.key \ # CA証明書に対応する秘密鍵
-CAcreateserial \ # シリアル番号ファイルを自動生成 (car.srl)
-out sample.crt \ # 出力ファイル: 生成された証明書
-days 100 # 証明書の有効期間を100日間に設定
各オプションの意味
openssl x509
X.509形式の証明書操作を行うOpenSSLのサブコマンド。
-req
入力としてCSR(証明書署名リクエスト)を使用することを指定。
-in sample.csr
署名対象のCSRファイルを指定。
-CA car.crt
CSRの署名に使用するCA証明書を指定。
-CAkey car.key
上記CA証明書に対応する秘密鍵を指定。
-CAcreateserial
証明書の一意性を保証するためのシリアル番号ファイル(car.srl)を生成。
-out sample.crt
生成された署名済み証明書の出力ファイルを指定。
-days 100
証明書の有効期限を指定(この場合100日)。
このコマンドの実行者:誰が使う?
本来、このコマンドは 認証局(CA) が使用します。認証局は、信頼性のある証明書を発行する役割を担っています。
認証局が実行する理由
署名権限がある
CA証明書(car.crt)と対応する秘密鍵(car.key)を使用して、CSRに署名を行う。
信頼を提供する
商用CAが署名した証明書は、広く信頼されるブラウザやシステムで認識されます。
開発者や管理者が使う場合
一方で、開発者やサーバー管理者も以下のようなシナリオでこのコマンドを利用します。
1. 自己署名CAでの運用
内部システムや開発環境用に、自分でCAを作成して署名付き証明書を発行する場合。
2. 開発・テスト環境でのHTTPS通信
テスト用のHTTPS通信で証明書が必要なときに、自己署名証明書を簡単に作成。
3. 商用CAを使う前の手順確認
CSRを商用CAに送信する前に、署名プロセスを内部CAでシミュレーションして確認。
実行の結果
署名済み証明書の生成
ファイル名:sample.crt
この証明書をサーバーやアプリケーションで使用できます。
シリアル番号ファイルの生成
ファイル名:car.srl
証明書の一意性を保証するために使用。
例え話
このコマンドのプロセスを、免許証の発行 に例えると次のようになります:
CSR(証明書署名リクエスト):
運転免許申請書のようなもの。運転者の個人情報や写真(公開鍵など)が記載されています。
CA(認証局):
運転免許試験場。申請書を確認し、署名(信頼性の付与)を行います。
秘密鍵(CAkey):
試験場の公印。この印鑑を使って免許証(証明書)を正式に発行します。
署名済み証明書(sample.crt):
発行された免許証そのもの。これを見せることで、本人であることが証明できます。
シリアル番号(car.srl):
免許証番号。各証明書が一意であることを保証します。
本番環境と開発環境の違い
本番環境
商用CA(例: Let's Encrypt, DigiCert)を使用し、信頼性のある証明書を発行。
商用CAの証明書は、ほとんどのブラウザやクライアントで自動的に信頼されます。
開発環境
自己署名CAで十分な場合が多い。
内部テストやイントラネットでの使用を想定。
注意点
秘密鍵と証明書の管理
car.crt や car.key は安全に管理し、不正利用を防ぐことが必須です。
有効期限の更新
証明書が期限切れになると無効になるため、更新スケジュールを計画的に管理しましょう。
本番環境では商用CAを推奨
自己署名CAは信頼設定が必要になるため、本番環境では商用CAを使用するのが安全です。
まとめ
openssl x509 コマンドは、証明書の署名に使用される強力なツールです。本来は認証局が使うものですが、開発者や管理者が自己署名CAやテスト環境で利用するケースも多くあります。
本番環境 では、商用CAで信頼性のある証明書を発行。
開発環境 では、自己署名CAを活用して効率的に証明書を管理。
証明書の署名プロセスを理解し、適切に活用することで、セキュリティと利便性を両立させましょう。