OpenSSL 証明書と鍵の包括的なガイド
OpenSSL は暗号化のスイスアーミーナイフです。Web サイト用の新しい SSL 証明書を生成する場合でも、鍵を異なるフォーマット間で変換する場合でも、証明書チェーンの問題をデバッグする場合でも、OpenSSL は使用するツールです。しかし、そのコマンドラインインターフェースは非常に複雑であることで知られています。
このガイドでは、最初の自己署名証明書の生成から高度な変換の実行まで、最も一般的な OpenSSL タスクを明確に解説します。
1. 証明書とリクエストの生成
証明書を取得する前に、鍵を生成し、多くの場合、証明書署名リクエスト (CSR) を生成する必要があります。
オンライン CSR ジェネレーター
オンライン CSR ジェネレーター はリクエストを迅速に作成する方法ですが、秘密鍵がサーバーから離れないようにローカルで生成する方が安全です。CSR には、組織に関する情報と、認証局 (CA) によって署名してもらいたい公開鍵が含まれています。
自己署名証明書ジェネレーター
内部テストやステージング環境では、自己署名証明書ジェネレーター で十分なことがよくあります。これにより、公共のブラウザからは信頼されませんが、暗号化通信においては機能的に同一の証明書を作成できます。
OpenSSL チートシート:鍵の生成
- RSA 秘密鍵の生成:
openssl genrsa -out private.key 2048 - CSR の生成:
openssl req -new -key private.key -out request.csr - 自己署名証明書の生成:
openssl x509 -req -days 365 -in request.csr -signkey private.key -out certificate.crt
2. フォーマット変換
プラットフォームやサーバーによって、必要な証明書のフォーマットが異なります。
PEM から DER および DER から PEM へのコンバーター
- PEM: 最も一般的なフォーマットで、通常は
.crtまたは.pemです。base64 でエンコードされており、-----BEGIN CERTIFICATE-----のようなテキストが含まれています。 - DER: 証明書のバイナリ表現で、Java や特殊なハードウェアでよく使用されます。
OpenSSL チートシート:変換コマンド
- PEM から DER へのコンバーター:
openssl x509 -in cert.pem -outform der -out cert.der - DER から PEM へのコンバーター:
openssl x509 -in cert.der -inform der -out cert.pem
PKCS#12 から PEM へのコンバーター
Windows や一部の企業システムでは、証明書と秘密鍵を単一のパスワード保護されたファイルにまとめる PKCS#12 (.p12 または .pfx) フォーマットが使用されます。
- PKCS#12 から PEM へのコンバーター:
openssl pkcs12 -in cert.p12 -out cert.pem -nodes
3. デバッグと検証
「無効な証明書」エラーほどイライラするものはありません。証明書をデコードしてチェックするためのツールは不可欠です。
SSL 証明書デコーダー
SSL 証明書デコーダー を使用すると、証明書ファイルの人間が読める詳細情報を読み取ることができます。
- 証明書情報の表示:
openssl x509 -in certificate.crt -text -noout - CSR 情報の表示:
openssl req -in request.csr -text -noout
証明書チェーンチェッカー
証明書チェーンチェッカー は、サーバーが中間証明書を含む完全なチェーンを提供していることを確認します。チェーンが切れていると、モバイルデバイスや一部のブラウザでセキュリティ警告が表示されます。
- ローカルファイルの検証:
openssl verify -CAfile ca-bundle.crt certificate.crt - リモートサーバーのチェック:
openssl s_client -connect google.com:4443
4. まとめ
OpenSSL は強力ですが威圧的なツールです。OpenSSL チートシート を使用し、PEM から DER への変換 や CSR 生成 などの一般的なタスクを理解することで、モダンな Web アプリケーションのセキュリティインフラを自信を持って管理できるようになります。
秘密鍵は常に秘密に保ち、強力なアルゴリズム(RSA 2048+ または ECC など)を使用し、本番環境にデプロイする前に証明書チェーンを検証することを忘れないでください。