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
OCSPレスポンダに状態を問い合わせる
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)
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
思い出したら更新します。