証明書に関連するあれこれに悩まされてきたので、いろいろまとめてみる
- tmp - 証明書一般
- cacert - 証明局の証明書
- cakey - 証明局の秘密鍵
- servercert - サーバ証明書
- crl - certificate revocation list 失効リスト
- cachain - ルート証明局〜中間認証局の証明書を連結したファイル
便利コマンドとかハマりポイント対策まとめ
証明局を作らず、証明書署名要求を自分の秘密鍵で署名して、証明書と秘密鍵をぱぱっと作る
$ openssl req -x509 -nodes -new -keyout tmp.key -out tmp.pem -days 3600 -newkey rsa:2048 -sha512 -subj "/C=CountryName/ST=StateOrProvinceName/L=LocalityName/O=OrganaizationName/OU=OrganizationalUnit/CN=CommanName"
証明書署名要求と秘密鍵を作る
$ openssl req -new -newkey rsa:4096 -sha512 -nodes -keyout cert.key -out cert.csr
証明書表示
$ openssl x509 -text < tmp.crt $ openssl s_client -showcerts -connect google.com:443
pem から der へ変換
$ openssl x509 -inform PEM -outform DER < cert.pem > cert.der $ openssl crl -inform PEM -outform DER < crl.pem > crl.der
CAに同じCNの証明書を発行させる
$ vim index.txt.attr unique_subject = no
証明書目的表示(server証明書はserverのフラグが立っていないとエラー)
$ openssl x509 -purpose < tmp.pem
CRL表示
$ openssl crl -text < revoked.crl
証明書からBEGIN CERTIFICATEの部分だけを切り出す
$ openssl x509 -clrext < cert.pem
revoke
$ openssl ca -gencrl -revoke cert.pem -config openssl.conf $ openssl ca -gencrl -out revoked.crl -config openssl.conf
revoke検証
$ openssl verify -crl_check_all -verbose -CAfile <(cat rootCA.pem crl.pem) server.pem
ocsp responder
$ openssl ocsp -index index.txt -CA cacert.pem -rsigner cacert.pem -rkey private/cakey.pem -port 80
ocsp client
$ openssl ocsp -issuer cacert.pem -cert servercert.pem -url http://ocsp.server.com/ -CAfile cachain.pem -header HOST=ocsp.server.com
DH param 2048bit以下だと警告がでる
$ openssl dhparam -out dhparams.pem 2048
複数の証明書がまとまったファイルのテキスト出力 stackoverflow様
$ openssl crl2pkcs7 -nocrl -certfile CHAINED.pem | openssl pkcs7 -print_certs -text -noout