証明書に関連するあれこれに悩まされてきたので、いろいろまとめてみる

  • tmp - 証明書一般
  • cacert - 証明局の証明書
  • cakey - 証明局の秘密鍵
  • servercert - サーバ証明書
  • crl - certificate revocation list 失効リスト
  • cachain - ルート証明局〜中間認証局の証明書を連結したファイル

便利コマンドとかハマりポイント対策まとめ

  1. 証明局を作らず、証明書署名要求を自分の秘密鍵で署名して、証明書と秘密鍵をぱぱっと作る

    $ 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"
    
  2. 証明書署名要求と秘密鍵を作る

    $ openssl req -new -newkey rsa:4096 -sha512 -nodes -keyout cert.key -out cert.csr
    
  3. 証明書表示

    $ openssl x509 -text < tmp.crt
    $ openssl s_client -showcerts -connect google.com:443
    
  4. pem から der へ変換

    $ openssl x509 -inform PEM -outform DER < cert.pem > cert.der
    $ openssl crl -inform PEM -outform DER < crl.pem > crl.der
    
  5. CAに同じCNの証明書を発行させる

    $ vim index.txt.attr
    unique_subject = no
    
  6. 証明書目的表示(server証明書はserverのフラグが立っていないとエラー)

    $ openssl x509 -purpose < tmp.pem
    
  7. CRL表示

    $ openssl crl -text < revoked.crl
    
  8. 証明書からBEGIN CERTIFICATEの部分だけを切り出す

    $ openssl x509 -clrext < cert.pem
    
  9. revoke

    $ openssl ca -gencrl -revoke cert.pem -config openssl.conf
    $ openssl ca -gencrl -out revoked.crl -config openssl.conf
    
  10. revoke検証

    $ openssl verify -crl_check_all -verbose -CAfile <(cat rootCA.pem crl.pem) server.pem
    
  11. ocsp responder

    $ openssl ocsp -index index.txt -CA cacert.pem -rsigner cacert.pem -rkey private/cakey.pem -port 80
    
  12. ocsp client

    $ openssl ocsp -issuer cacert.pem -cert servercert.pem -url http://ocsp.server.com/ -CAfile cachain.pem -header HOST=ocsp.server.com
    
  13. DH param 2048bit以下だと警告がでる

    $ openssl dhparam -out dhparams.pem 2048
    
  14. 複数の証明書がまとまったファイルのテキスト出力 stackoverflow様

    $ openssl crl2pkcs7 -nocrl -certfile CHAINED.pem | openssl pkcs7 -print_certs -text -noout
    

サムネイル

谷川岳景観