コンテンツにスキップ

openssl x509

X.509証明書 の表示・変換と、 CSR への簡易的な署名を行うコマンド。

通常は証明書を入力として扱うが、 -req を指定するとCSRを読み込み、新しい証明書を作成できる。


Terminal window
openssl x509 \
-in server.crt \
-text \
-noout

主に確認できる内容:

  • SubjectとIssuer
  • シリアル番号
  • 有効期間
  • 公開鍵
  • 署名アルゴリズム
  • X.509拡張

必要な項目だけを表示する例:

Terminal window
openssl x509 \
-in server.crt \
-subject \
-issuer \
-dates \
-ext subjectAltName \
-noout

PEM から DER へ変換する:

Terminal window
openssl x509 \
-in server.crt \
-outform DER \
-out server.der

DER から PEM へ変換する:

Terminal window
openssl x509 \
-inform DER \
-in server.der \
-outform PEM \
-out server.crt

PEMはBase64とヘッダーを含むテキスト形式、DERは同じ証明書をバイナリで表現した形式である。形式を変換しても証明書の内容や署名は変わらない。詳細は 証明書と鍵のファイル形式 を参照。


Terminal window
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が同じ自己署名証明書を作成できる。


Terminal window
openssl x509 -req \
-in server.csr \
-CA intermediate.crt \
-CAkey intermediate.key \
-days 365 \
-sha256 \
-out server.crt \
-extfile extensions.cnf \
-extensions server_cert

openssl x509 による CA 署名は簡易的な方法である。発行済み証明書のデータベースや 失効状態 は管理しない。


入力ファイルを証明書ではなくCSRとして読み込む。

Terminal window
-req

CSRから新しい証明書を作る場合に必要になる。

読み込む証明書またはCSRを指定する。

Terminal window
-in server.csr

-req がなければ証明書、あればCSRとして解釈される。

新しい証明書を自己署名する秘密鍵を指定する。 -key の別名。

Terminal window
-signkey ca.key

IssuerはSubjectと同じになり、自己発行証明書が作成される。 -CA とは同時に使用できない。

CSRへの署名に使用するCA証明書を指定する。

Terminal window
-CA intermediate.crt

作成される証明書のIssuerには、指定したCA証明書のSubjectが設定される。

-CA で指定したCA証明書に対応する秘密鍵を指定する。

Terminal window
-CAkey intermediate.key

CA証明書の 公開鍵と秘密鍵 が一致している必要がある。

CAのシリアル番号ファイルが存在しない場合に作成する。

Terminal window
-CAcreateserial

CA証明書が intermediate.crt なら、通常は intermediate.srl が作成される。

使用するシリアル番号ファイルを明示的に指定する。

Terminal window
-CAserial intermediate.srl

指定したファイルには、前回使用したシリアル番号が16進数で保存される。発行時にその値を1増やして使用し、ファイルも更新される。ファイルを使用せず、証明書ごとにランダムなシリアル番号を割り当てる場合は指定しない。

新しく作成する証明書の有効日数を指定する。

Terminal window
-days 365

既定値は30日。発行元CA証明書の有効期限を超えない期間にする。

証明書への署名に SHA-256 を使用する。

Terminal window
-sha256

証明書の出力先を指定する。

Terminal window
-out server.crt

入力する証明書の形式を指定する。既定では PEM が先に試される。

Terminal window
-inform DER

出力する証明書の形式を指定する。既定値は PEM。

Terminal window
-outform DER

証明書の内容を読みやすい形式で表示する。

Terminal window
-text

PEM または DER 形式の証明書本体を出力しない。

Terminal window
-noout

-text、 -subject、 -issuer などの結果だけを表示したい場合に使用する。

証明書へ追加する X.509拡張 を記述した設定ファイルを指定する。

Terminal window
-extfile extensions.cnf

-config と -extfile の役割の違いは、 OpenSSL設定ファイル を参照。

-extfile で指定したファイル内の、使用する拡張セクションを指定する。

Terminal window
-extensions server_cert

CSRに含まれる拡張要求を証明書へコピーする方法を指定する。

Terminal window
-copy_extensions copy

指定しなければCSRの拡張はコピーされない。CSRを作成した相手が指定した拡張を無条件に信頼すると、 basicConstraints=CA:TRUE など意図しない権限を与える危険があるため、通常はCA側の -extfile で拡張を定義する。


openssl x509 openssl ca
CSRへ簡易的に署名する CAとして証明書を継続的に発行・管理する
発行履歴を管理しない 発行済み証明書をデータベースで管理する
失効やCRL を管理しない 証明書の失効とCRL生成を扱える
検証・学習・少数の証明書に向く CA運用に必要な状態管理を行う


  • openssl-x509 証明書の表示・変換、自己署名、CSRへのCA署名。

  • x509v3_config -extfile と -extensions で使用するX.509拡張の形式。