OpenSSL/やりたい事から探すコマンド実行例

OpenSSLは、コマンドオプションがたくさんありすぎて
どう実行すればよいのかすぐ忘れます。
ここに備忘録のため「目的をベース」に実行例を残していこうと思います。

鍵の生成

PKCS#1 RSA秘密鍵の生成
% openssl genrsa -out aaa.prvkey 1024
PKCS#1 DSA秘密鍵の生成
% openssl dsaparam -out aaa.prm 1024
% openssl gendsa -out aaa.prvkey aaa.prm
PKCS#1 ECDSA秘密鍵の生成*1
% openssl ecparam -out ec.prm -name prime192v1
% openssl req -new -newkey ec:ec.prm -keyout ec.prvkey -nodes -out ec.req -subj /C=JP/O=T1; rm -f ec.req
PKCS#1 RSA/DSA秘密鍵から保護しないPKCS#8鍵への変換*2
% openssl pkcs8 -in prvkey.pem -out p8.pem -topk8 -nocrypt
暗号化されたPKCS#1 RSA秘密鍵の生成
% openssl genrsa -out prvkey.pem -des3 -passout pass:passwd 2048


証明書の生成

(1) PKCS#1秘密鍵からPKCS#10を経ず名前を指定して自己署名ルート証明書の生成
% openssl req -new -key aaa.prvkey -x509 -subj /C=JP/O=TEST1 -set_serial 1 -days 3652 [-sha256] -out aaa.cer.pem
(2) (1)と同じでmultivalue RDNの場合(DERでSET OFは自動ソートされるのでO=T, O=TTTTTの順になる)
% openssl req -new -key t.prv -x509 -subj "/C=JP/O=TTTTT+O=T" -set_serial 1 -days 3652 -multivalue-rdn -out t.cer
(3) (1)と同じで拡張を一つ追加する(addext)。上書き不可
openssl req -new -key aaa.prvkey -x509 -subj /C=JP/O=T1 -set_serial 1 -days 3652 -sha256 -out aaa.cer.pem -addext subjectAltName=IP:192.168.1.1
(4) (1)と同じで拡張群を設定する。設定ファイルaaa.cfgのmyext1セクションンにある拡張を設定する
openssl req -new -key aaa.prvkey -x509 -subj /C=JP/O=T1 -set_serial 1 -days 3652 -sha256 -out aaa.cer.pem -config aaa.cfg -extensions myext1

証明書からの情報取得

証明書からの情報の取得
% openssl x509 -in aaa.cer.pem -noout -text
X.509証明書のRSA/DSA公開鍵のモジュラスの取得*3
% openssl x509 -in aaa.cer.pem -noout -modulus
Modulus=1F2F...
証明書のSubject Public Key InfoからPKCS#8形式の公開鍵を取り出す
% openssl x509 -in aaa.cer.pem -noout -pubkey > aaa.p8pub.pem

証明書関連 (その他)

PEMテキストからDERバイナリへの変換
% openssl x509 -inform PEM -in aaa.cer.pem -outform DER -out aaa.cer.der
DERテキストからPEMバイナリへの変換
% openssl x509 -inform DER -in aaa.cer.der -outform PEM -out aaa.cer.pem

鍵ストア PKCS#12関連

証明書(PEM)ファイルと秘密鍵(PEM)ファイルからPKCS12を生成する
% openssl pkcs12 -export -inkey 秘密鍵 -in 証明書 -out PKCS12ファイル
PKCS#12ファイルの内容を表示する
% openssl pkcs12 -in PKCS12ファイル -info

OCSPオンライン証明書状態プロトコル

OCSP要求ファイルの内容表示
% openssl ocsp -reqin req.der -text
OCSP応答ファイルの内容表示
% openssl ocsp -respin res.der -text -noverify
URL指定されたOCSPレスポンダとの通信による証明書の状態の確認
% openssl -ocsp -issuer ca.cer -cert ee.cer -url http://ocsp.foo.com -resp_text -respout resp.der

タグ:

OpenSSL
最終更新:2020年06月01日 07:46

*1 ECDSAにはgen*オプションは無いらしいので証明書発行要求のついでに生成する

*2 Challenge PKI Test Suiteを使う場合にKey Managerのところでは、PKCS#8の保護しない秘密鍵を使います

*3 RSAならモジュラス、DSAなら公開鍵Y、ECDSAならModulus=Wrong Algorithm typeエラー