openssl x509
通常は証明書を入力として扱うが、 -req を指定するとCSRを読み込み、新しい証明書を作成できる。
証明書の表示
Section titled “証明書の表示”openssl x509 \ -in server.crt \ -text \ -noout主に確認できる内容:
- SubjectとIssuer
- シリアル番号
- 有効期間
- 公開鍵
- 署名アルゴリズム
- X.509拡張
必要な項目だけを表示する例:
openssl x509 \ -in server.crt \ -subject \ -issuer \ -dates \ -ext subjectAltName \ -nooutPEM形式とDER形式を変換する
Section titled “PEM形式とDER形式を変換する”openssl x509 \ -in server.crt \ -outform DER \ -out server.deropenssl x509 \ -inform DER \ -in server.der \ -outform PEM \ -out server.crtPEMはBase64とヘッダーを含むテキスト形式、DERは同じ証明書をバイナリで表現した形式である。形式を変換しても証明書の内容や署名は変わらない。詳細は 証明書と鍵のファイル形式 を参照。
CSRを自己署名する
Section titled “CSRを自己署名する”openssl x509 -req \ -in ca.csr \ -signkey ca.key \ -days 3650 \ -sha256 \ -out ca.crt \ -extfile extensions.cnf \ -extensions root_ca-signkey でCSRに対応する秘密鍵を指定すると、SubjectとIssuerが同じ自己署名証明書を作成できる。
CAでCSRへ署名する
Section titled “CAでCSRへ署名する”openssl x509 -req \ -in server.csr \ -CA intermediate.crt \ -CAkey intermediate.key \ -days 365 \ -sha256 \ -out server.crt \ -extfile extensions.cnf \ -extensions server_certopenssl x509 による CA 署名は簡易的な方法である。発行済み証明書のデータベースや 失効状態 は管理しない。
よく使うオプション
Section titled “よく使うオプション”入力ファイルを証明書ではなくCSRとして読み込む。
-reqCSRから新しい証明書を作る場合に必要になる。
読み込む証明書またはCSRを指定する。
-in server.csr-req がなければ証明書、あればCSRとして解釈される。
-signkey
Section titled “-signkey”新しい証明書を自己署名する秘密鍵を指定する。 -key の別名。
-signkey ca.keyIssuerはSubjectと同じになり、自己発行証明書が作成される。 -CA とは同時に使用できない。
CSRへの署名に使用するCA証明書を指定する。
-CA intermediate.crt作成される証明書のIssuerには、指定したCA証明書のSubjectが設定される。
-CAkey
Section titled “-CAkey”-CA で指定したCA証明書に対応する秘密鍵を指定する。
-CAkey intermediate.keyCA証明書の 公開鍵と秘密鍵 が一致している必要がある。
-CAcreateserial
Section titled “-CAcreateserial”CAのシリアル番号ファイルが存在しない場合に作成する。
-CAcreateserialCA証明書が intermediate.crt なら、通常は intermediate.srl が作成される。
-CAserial
Section titled “-CAserial”使用するシリアル番号ファイルを明示的に指定する。
-CAserial intermediate.srl指定したファイルには、前回使用したシリアル番号が16進数で保存される。発行時にその値を1増やして使用し、ファイルも更新される。ファイルを使用せず、証明書ごとにランダムなシリアル番号を割り当てる場合は指定しない。
新しく作成する証明書の有効日数を指定する。
-days 365既定値は30日。発行元CA証明書の有効期限を超えない期間にする。
-sha256
Section titled “-sha256”証明書への署名に SHA-256 を使用する。
-sha256証明書の出力先を指定する。
-out server.crt-inform
Section titled “-inform”入力する証明書の形式を指定する。既定では PEM が先に試される。
-inform DER-outform
Section titled “-outform”出力する証明書の形式を指定する。既定値は PEM。
-outform DER証明書の内容を読みやすい形式で表示する。
-text-noout
Section titled “-noout”-noout-text、 -subject、 -issuer などの結果だけを表示したい場合に使用する。
-extfile
Section titled “-extfile”証明書へ追加する X.509拡張 を記述した設定ファイルを指定する。
-extfile extensions.cnf-config と -extfile の役割の違いは、 OpenSSL設定ファイル を参照。
-extensions
Section titled “-extensions”-extfile で指定したファイル内の、使用する拡張セクションを指定する。
-extensions server_cert-copy_extensions
Section titled “-copy_extensions”CSRに含まれる拡張要求を証明書へコピーする方法を指定する。
-copy_extensions copy指定しなければCSRの拡張はコピーされない。CSRを作成した相手が指定した拡張を無条件に信頼すると、 basicConstraints=CA:TRUE など意図しない権限を与える危険があるため、通常はCA側の -extfile で拡張を定義する。
openssl ca との違い
Section titled “openssl ca との違い”openssl x509 |
openssl ca |
|---|---|
| CSRへ簡易的に署名する | CAとして証明書を継続的に発行・管理する |
| 発行履歴を管理しない | 発行済み証明書をデータベースで管理する |
| 失効やCRL を管理しない | 証明書の失効とCRL生成を扱える |
| 検証・学習・少数の証明書に向く | CA運用に必要な状態管理を行う |
OpenSSL公式ドキュメント
Section titled “OpenSSL公式ドキュメント”-
openssl-x509 証明書の表示・変換、自己署名、CSRへのCA署名。
-
x509v3_config
-extfileと-extensionsで使用するX.509拡張の形式。