opensslコマンドで個人的によく使うまとめ

個人的によく使うOpenSSLのコマンドをまとめてみましたよ!

証明書関係、PKCS#8、PKCS#12あたりですが間違ってたらすまん。


証明書を適当に作る。

鍵を作って

openssl genrsa -out private.key 2048

証明書署名要求を作って

openssl req -new -sha256 -subj /C=JP/CN=sample.com -key private.key -out csr.pem

適当なCAが署名する

openssl ca -md sha256 -batch -policy policy_anything -in csr.pem -keyfile cakey.key -cert cacert.cer -out certificate.cer

opensslではだいたいPEMで扱ってるので、DERが欲しいときはこんな感じでフォーマットを指定する。自動では認識してくれない。

PEMからDERへ変換。

openssl x509 -inform PEM -in certificate.cer -outform DER -out certificate.der

DERからPEMに変換。

openssl x509 -inform DER -in certificate.der -outform PEM -out certificate.pem

ちなみに鍵だとこんな感じで変換。

openssl rsa -in -inform PEM pricate.key -outform DER -out private.der

openssl rsa -in -inform DER private.der -outform PEM -out private.key

証明書の情報を参照するには。

openssl x509 -in certificate.cer

multi-valued RDNを表示したい人もいるだろう。opensslで作るのは面倒で別の機会に。

-nameoptを付けると"+"で追加表示される。

openssl x509 -nameopt rfc2253 -in certificate.cer

秘密鍵にパスワードを設定して暗号化する。(今回はAES256)

openssl rsa -aes256 -in private.key -out private_enc.key -passout pass:password

パスワードが設定された鍵を解除する。

openssl rsa -in private_enc.key -out private.key -passout pass:password

秘密鍵から公開鍵を取り出す。

openssl rsa -pubout -in private.key -out public.pem



PKCS#8ファイルの作成

まず格納する鍵を作成しましょうか。

openssl genrsa -out privatekey.key 2048

出力はPEMでもDERでも

openssl pkcs8 -v1 PBE-SHA1-3DES -topk8 -in private.key -inform PEM -out pkcs8.pem -outform PEM -passout pass:password

暗号化したくなかったら

openssl pkcs8 -topk8 -in privatekey.pem -inform PEM -out pkcs8.pem -outform PEM -noiter -nocrypt

-v2オプションでAESなんかでも暗号・完全性のチェックが可能。

openssl pkcs8 -in privatekey.pem -topk8 -v2 aes-256-cbc -v2prf hmacWithSHA256 -out pkcs8.pem



PKCS#12の作成

鍵を作る。

openssl genrsa -out private.key 2048

証明書署名要求を作って

openssl req -new -sha256 -subj /C=JP/CN=sample.com -key private.key -out csr.pem

適当なCAが署名する

openssl ca -md sha256 -batch -policy policy_anything -in csr.pem -keyfile cakey.key -cert cacert.cer -out certificate.cer

private.key 秘密鍵

certificate.cer 秘密鍵に対応する証明書

cacert.cer 上記証明書を検証できる証明書で、さらに中間層の証明書が必要ならエディタで追加する。

暗号化と完全性にそれぞれパスワードを設定できたり。まぁ何通りか作ってみる。

完全性と暗号化が同じ1つのパスワードの場合(デフォルトはRC2なのでちょっと他の選択肢)

AESとかしたくてもPKCS#5に無いので不可?

openssl pkcs12 -export -keypbe PBE-SHA1-3DES -certpbe PBE-SHA1-3DES -password pass:password -in certificate.cer -inkey private.key -certfile cacert.cer -out pkcs12.p12

秘密鍵に対応する証明書以外の証明書は、使う人が既に持っていれば別に設定しなくても良い。

openssl pkcs12 -export -keypbe PBE-SHA1-3DES -certpbe PBE-SHA1-3DES -password pass:password -in certificate.cer -inkey private.key -out pkcs12.p12

生成されたPKCS#12ファイルの確認

openssl pkcs12 -info -password pass:password -n pkcs12.p12

とりあえず、作ったファイルから鍵と証明書を抜き出してみよう。

証明書

openssl pkcs12 -password pass:password -nokeys -in pkcs12.p12 -out certificate_out.pem

秘密鍵

openssl pkcs12 -password pass:password -nodes -nocerts -in pkcs12.p12 -out privatekey_out.pem

完全性のチェックだけする

openssl pkcs12 -in $PKCS12 -password pass:password -nodes -noout

続いて、いろいろなパターンで。

完全性だけの場合

openssl pkcs12 -export -nodes -certpbe PBE-SHA1-3DES -password pass:password -in certificate.pem -inkey private.key -out pkcs12.p12

暗号化だけの場合

openssl pkcs12 -export -noiter -keypbe PBE-SHA1-3DES -password pass:password -in certificate.pem -inkey private.key -out pkcs12.p12

暗号化も完全性も設定しない場合

openssl pkcs12 -export -noiter -nodes -in certificate.pem -inkey private.key -out pkcs12.p12 -password pass:password

暗号化と完全性のパスワードが違う場合。-twopassを加えるのだがこれは-passwordオプションでは同時に設定できないので使わず。

openssl pkcs12 -export -keypbe PBE-SHA1-3DES -certpbe PBE-SHA1-3DES -in certificate.pem -inkey private.key -out pkcs12.p12 -twopass




ThreeLeaf

情報技術や気になったニュース、製品、動画、旅情報など、自分の感じた視点で書いています。

0コメント

  • 1000 / 1000