TechnologyTips

OpenSSL Tips

Kotaです。
OpenSSL関連のコマンドをいつも忘れるので備忘録でメモ

(自分用メモからなので動く保証はありませんが。。)

ファイルのmd5/sha1/sha256ハッシュを得る

openssl dgst -md5 plain.txt
openssl dgst -sha1 plain.txt
openssl dgst -sha256 plain.txt

ファイルをAES256共通鍵で暗号化/復号化する
-aesの代わりに-base64でエンコード、デコードも可

openssl enc -aes256 -in plain.txt -out enc.txt
openssl enc -aes256 -d -in enc.txt -out plain.txt

serverの秘密鍵をRSA鍵長4096でを生成する

 openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_bits:4096 > server.key

Serverの秘密鍵をECDSA P-521 (secp521r1) でを生成する

openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:secp521r1 -pkeyopt ec_param_enc:named_curve  > server.key

Serverの秘密鍵をEdDSA (X25519) でを生成する

openssl genpkey -algorithm X25519 > server.key

秘密鍵からCSRを生成する

openssl req -new -key server.key > server.csr

SHA2で生成する場合(最近はこれがデフォルト)

openssl req -new -sha256 -key server.key > server.csr

CSRの中身を確認

openssl req -verify -text < server.csr

自己署名する

openssl req -in server.csr -key server.key -x509 -days 365 > server.crt

x509の各種情報を確認

openssl x509 -text < server.crt

正しい証明書のペアか確認する
下記コマンドのBEGIN PUBLIC KEY以降の出力が正しい事

openssl x509 -pubkey -noout < server.crt
openssl rsa -pubout < server.key
or
openssl ec -pubout < server.key

CAに対して有効な証明書か確認

openssl verify -CAfile CA.pem < server.crt

シングルルートでないCA(ここではGlobalSing QuickSSL)に対して有効な証明書か確認

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証明書情報を取得

openssl s_client -connect www.example.com:443 -showcerts

RSA鍵をパスフレーズ無しに変換

openssl rsa -in server.key > nopass_server.key

逆にパスフレーズをセット

openssl rsa -des -in nopass_server.key > server.key

DER形式に鍵を変換

openssl x509 -outform DER -in server.key > server.der

p12形式でCA,秘密鍵、公開鍵を鍵まとめる

openssl pkcs12 -export -in server.crt -inkey server.key -certfile CA.crt > server.p12

p12形式からCA,秘密鍵、公開鍵を鍵をバラす

秘密鍵

openssl pkcs12 -in server.p12 -nocerts -nodes | openssl rsa

証明書

openssl pkcs12 -in server.p12 -nokeys -clcerts

中間証明書

openssl pkcs12 -in server.p12 -cacerts -nokeys

reqの際に入力する値を省略する

/etc/pki/tls/openssl.cnfのstateOrProvinceName_defaultなどを編集する事で事前定義も可能。
その際は-conf /etc/pki/tls/openssl.cnfを指定する。

もしくは

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も設定したい場合

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

暗号スイートの表示

openssl ciphers -v 'RSA:!NULL!MD5:!EXP:+HIGH'

楕円曲線暗号の表示

openssl ecparam -list_curves

Public Key Pinning Extension for HTTPに使うBASE64を秘密鍵から取り出す

openssl rsa -in server.key -outform der -pubout | openssl dgst -sha256 -binary | openssl enc -base64

Public Key Pinning Extension for HTTPに使うBASE64をCSRから取り出す

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を証明書から取り出す

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をサーバーへ接続して取り出す

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を秘密鍵から取り出す

openssl rsa -in server.key -outform der -pubout | openssl dgst -sha256 -binary | openssl enc -sha256

TLSA/DANEに使うSHA256をCSRから取り出す

openssl req -in server.csr -pubkey -noout | openssl rsa -pubin -outform der | openssl dgst -sha256

TLSA/DANEに使うSHA256を証明書から取り出す

openssl x509 -in server.crt -pubkey -noout | openssl rsa -pubin -outform der | openssl dgst -sha256

TLSA/DANEに使うSHA256をサーバーへ接続して取り出す

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バイトのランダムデーターの生成

openssl rand 1024 > 1024.rand

CAを作成(手抜きVer)

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にて署名

openssl ca -config openssl.cnf -days 730 -infiles server.csr > server.crt

んんんんーーーーもっともっとあったんですが、、思い出せませんw
思い出したら更新します。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください