2016-10-24

秘密鍵、公開鍵、証明書、CSR生成のOpenSSLコマンドまとめ

よくある秘密鍵生成のコマンドまとめ

なお、OpenSSLのコマンドの使い方はサブコマンドのmanページを見るのが手っ取り早いです。

秘密鍵・公開鍵関連

パスなし秘密鍵を作成

$ openssl genrsa 2048 -out private_key_nopass.pem

パス有り(暗号化)秘密鍵を作成

$ openssl genrsa 2048 -aes256 -out private_key.pem

秘密鍵のパスワード(暗号化)の解除

$ openssl rsa -in private_key.pem -out private_key_nopass.pem

秘密鍵のパスワードの変更

$ openssl rsa -in private_key.pem -out private_key.pem -aes256

秘密鍵から公開鍵を作成する

$ openssl rsa -in private_key.pem -pubout -out public_key.pem

サーバー証明書関連

CSRを作成する

$ openssl req -new -key private_key.pem -out server.csr

CSRの中身を確認したい

$ openssl req -text -in server.csr

秘密鍵とCSRを一括で作成したい

$ openssl req -out server.csr -new -newkey rsa:2048 \
-nodes -keyout private_key.pem

秘密鍵と自己署名証明書を一括で作成したい

$ openssl req -x509 -sha256 -nodes -days 365 \
-newkey rsa:2048 -keyout private_key.pem -out server.crt

CSRから自己署名証明書を作りたい

$ openssl x509 -days 365 -req -signkey private_key.pem \
-in server.csr -out server.crt

電子署名関連

電子署名の作成

$ openssl dgst -sha256 -sign private_key.pem -binary target.txt | base64
$ echo -n "{payload}" | openssl dgst -sha256 -sign private_key.pem | base64
$ echo -n "{payload}" | openssl dgst -sha256 -sign private_key.pem -binary > {signature_file}

署名の検証(hoge.sigはバイナリ形式のSignature)

$ echo -n "{payload}" | openssl dgst -verify public_key.pem \
-sha256 -signature {signature_file}

JWTの作成

header=`echo -n '{"alg":"RS256","typ":"JWT"}' | base64`
payload=`echo -n '{"aud":"mobile","exp":1470646848,"iss":"token.service","sub":"dghubble"}' | base64`
signature=`echo -n $header.$payload | openssl dgst -sha256 -sign private_key_nopass2.pem -binary | base64`

echo $header.$payload.$signature

参考URL

このエントリーをはてなブックマークに追加