Kotaです。
OpenSSL関連のコマンドをいつも忘れるので備忘録でメモ
このページは随時更新しています
(自分用メモからなので動く保証はありませんが。。)
ファイルのmd5/sha1/sha256ハッシュを得る
1 2 3 |
openssl dgst -md5 plain.txt openssl dgst -sha1 plain.txt openssl dgst -sha256 plain.txt |
ファイルをAES256共通鍵で暗号化/復号化する
-aesの代わりに-base64でエンコード、デコードも可
1 2 |
openssl enc -aes256 -in plain.txt -out enc.txt openssl enc -aes256 -d -in enc.txt -out plain.txt |
serverの秘密鍵をRSA鍵長4096でを生成する
1 |
openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_bits:4096 > server.key |
Serverの秘密鍵をECDSA P-521 (secp521r1) でを生成する
1 |
openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:secp521r1 -pkeyopt ec_param_enc:named_curve > server.key |
Serverの秘密鍵をEdDSA (X25519) でを生成する
1 |
openssl genpkey -algorithm X25519 > server.key |
秘密鍵からCSRを生成する
1 |
openssl req -new -key server.key > server.csr |
SHA2で生成する場合(最近はこれがデフォルト)
1 |
openssl req -new -sha256 -key server.key > server.csr |
CSRの中身を確認
1 |
openssl req -verify -text < server.csr |
自己署名する
1 |
openssl req -in server.csr -key server.key -x509 -days 365 > server.crt |
x509の各種情報を確認
1 |
openssl x509 -text < server.crt |
正しい証明書のペアか確認する
下記コマンドのBEGIN PUBLIC KEY以降の出力が正しい事
1 2 3 4 |
openssl x509 -pubkey -noout < server.crt openssl rsa -pubout < server.key or openssl ec -pubout < server.key |
CAに対して有効な証明書か確認
1 |
openssl verify -CAfile CA.pem < server.crt |
シングルルートでないCA(ここではGlobalSing QuickSSL)に対して有効な証明書か確認
1 2 3 4 5 6 7 8 9 |
mkdir GlobalSign_QuickSSL cd GlobalSign_QuickSSL wget https://jp.globalsign.com/repository/common/cer/rootcacert.cer wget https://jp.globalsign.com/repository/common/cer/dvcacert.cer rename cer pem *.cer c_rehash . cd ../ openssl verify -CApath GlobalSign_QuickSSL < server.crt find . -type l -delete |
サーバーに接続してSSL証明書情報を取得
1 |
openssl s_client -connect www.example.com:443 -showcerts |
RSA鍵をパスフレーズ無しに変換
1 |
openssl rsa -in server.key > nopass_server.key |
逆にパスフレーズをセット
1 |
openssl rsa -des -in nopass_server.key > server.key |
DER形式に鍵を変換
1 |
openssl x509 -outform DER -in server.key > server.der |
p12形式でCA,秘密鍵、公開鍵を鍵まとめる
1 |
openssl pkcs12 -export -in server.crt -inkey server.key -certfile CA.crt > server.p12 |
p12形式からCA,秘密鍵、公開鍵を鍵をバラす
秘密鍵
1 |
openssl pkcs12 -in server.p12 -nocerts -nodes | openssl rsa |
証明書
1 |
openssl pkcs12 -in server.p12 -nokeys -clcerts |
中間証明書
1 |
openssl pkcs12 -in server.p12 -cacerts -nokeys |
reqの際に入力する値を省略する
/etc/pki/tls/openssl.cnfのstateOrProvinceName_defaultなどを編集する事で事前定義も可能。
その際は-conf /etc/pki/tls/openssl.cnfを指定する。
もしくは
1 |
openssl req -new -key server.key -subj "/C=JP/ST=Tokyo/L=Koto/O=INSANEWORKS,LLC/OU=IT/CN=insaneworks.co.jp" > server.csr |
SANsも設定したい場合
1 |
openssl req -new -key server.key -subj "/C=JP/ST=Tokyo/L=Koto/O=INSANEWORKS,LLC/OU=IT/CN=insaneworks.co.jp" -addext "subjectAltName = DNS:www.insaneworks.co.jp"> server.csr |
暗号スイートの表示
1 |
openssl ciphers -v 'RSA:!NULL!MD5:!EXP:+HIGH' |
楕円曲線暗号の表示
1 |
openssl ecparam -list_curves |
Public Key Pinning Extension for HTTPに使うBASE64を秘密鍵から取り出す
1 |
openssl rsa -in server.key -outform der -pubout | openssl dgst -sha256 -binary | openssl enc -base64 |
Public Key Pinning Extension for HTTPに使うBASE64をCSRから取り出す
1 |
openssl req -in server.csr -pubkey -noout | openssl rsa -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64 |
Public Key Pinning Extension for HTTPに使うBASE64を証明書から取り出す
1 |
openssl x509 -in server.crt -pubkey -noout | openssl rsa -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64 |
Public Key Pinning Extension for HTTPに使うBASE64をサーバーへ接続して取り出す
1 2 3 |
openssl s_client -servername www.example.com -connect www.example.com:443 | openssl x509 -pubkey -noout | openssl rsa -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64 |
TLSA/DANEに使うSHA256を秘密鍵から取り出す
1 |
openssl rsa -in server.key -outform der -pubout | openssl dgst -sha256 -binary | openssl enc -sha256 |
TLSA/DANEに使うSHA256をCSRから取り出す
1 |
openssl req -in server.csr -pubkey -noout | openssl rsa -pubin -outform der | openssl dgst -sha256 |
TLSA/DANEに使うSHA256を証明書から取り出す
1 |
openssl x509 -in server.crt -pubkey -noout | openssl rsa -pubin -outform der | openssl dgst -sha256 |
TLSA/DANEに使うSHA256をサーバーへ接続して取り出す
1 |
openssl s_client -servername www.example.com -connect www.example.com:443 | openssl x509 -pubkey -noout | openssl rsa -pubin -outform der | openssl dgst -sha256 |
1024バイトのランダムデーターの生成
1 |
openssl rand 1024 > 1024.rand |
OCSPレスポンダに状態を問い合わせる
1 2 |
openssl x509 -noout -text < old.pem | grep -i ocsp openssl ocsp -no_nonce -issuer ec/0000_chain.pem -cert pems/server.pem -url http://ocsp.int-x3.letsencrypt.org |
CAを作成(手抜きVer)
1 2 3 4 5 6 |
touch index.txt crlnumber mkdir certs newcerts cri private keys echo '01' > serial cp /etc/pki/tls/openssl.cnf openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_bits:4096 openssl req -config openssl.cnf -new -x509 -days 1825 -key private/cakey.pem > cacert.pem |
CAにて署名
1 |
openssl ca -config openssl.cnf -days 730 -infiles server.csr > server.crt |
んんんんーーーーもっともっとあったんですが、、思い出せませんw
思い出したら更新します。