プライベートルート証明書・中間証明書・サーバ証明書の作り方
環境
- OS: Amazon Linux
- 証明書のインポート先: AWS Certificate Manager
準備
Amazon Linux上で以下を発行する。
$ sudo su
# cd /usr/local/etc
# mkdir ca
# chmod 600 ca
# cd /usr/local/etc/ca
プライベートルート証明書の作成
まずは最上位のルート証明書から作っていきます。
# cd /usr/local/etc/ca
# openssl genrsa -out ca.key -des3 2048
Enter pass phrase for ca.key:(ca.keyのパスフレーズ)
Verifying - Enter pass phrase for ca.key:(ca.keyのパスフレーズ)[確認]
有効期間を10年間(3650日)に設定。
# openssl req -new -x509 -key ca.key -sha256 -days 3650 -extensions v3_ca -out ca.pem -subj "/C=JP/ST=Tokyo/O=example corp./CN=example root 2019"
Enter pass phrase for ca.key:(ca.keyのパスフレーズ)
#
中間証明書の作成
# openssl genrsa -out inca.key -des3 2048
Enter pass phrase for inca.key:(inca.keyのパスフレーズ)
Verifying - Enter pass phrase for inca.key:(inca.keyのパスフレーズ[確認])
# openssl req -new -key inca.key -sha256 -outform PEM -keyform PEM -out inca.csr -subj "/C=JP/ST=Tokyo/O=example corp./CN=example Inter CA 2019"
Enter pass phrase for inca.key:(inca.keyのパスフレーズ)
# vi openssl_sign_inca.cnf
[ v3_ca ]
basicConstraints = CA:true, pathlen:0
keyUsage = cRLSign, keyCertSign
nsCertType = sslCA, emailCA
下の方でも書きますが、AWS Certificate Managerは↓を使います。
有効期間を10年間(3650日)に設定。
# openssl x509 -extfile openssl_sign_inca.cnf -req -in inca.csr -sha256 -CA ca.pem -CAkey ca.key -set_serial 01 -extensions v3_ca -days 3650 -out inca.pem
サーバ証明書の作成
下の方でも書きますが、AWS Certificate Managerは↓を使います。
$ openssl genrsa 2048 > server.key
# openssl req -new -key server.key -outform PEM -keyform PEM -sha256 -out server.csr -subj "/C=JP/ST=Tokyo/O=example corp./CN=vpn.example.com"
下の方でも書きますが、AWS Certificate Managerは↓を使います。
有効期間を10年間(3650日)に設定。
# openssl x509 -req -in server.csr -sha256 -CA inca.pem -CAkey inca.key -set_serial 01 -days 3650 -out vpn.pem
Enter pass phrase for inca.key:(inca.keyのパスフレーズ)
AWS Certificate Managerにインポート
「Import a certificate」を押下。
「Certificate body」にサーバ証明書(vpn.pem)の中身を張り付け。
# cat vpn.pem
-----BEGIN CERTIFICATE-----
(省略)
-----END CERTIFICATE-----
「Certificate private key」にサーバ証明書の秘密鍵(server.key)の中身を張り付け。
# cat server.key
-----BEGIN RSA PRIVATE KEY-----
(省略)
-----END RSA PRIVATE KEY-----
「Certificate chain」に中間証明書(inca.pem)の中身を張り付け。
# cat inca.pem
-----BEGIN CERTIFICATE-----
(省略)
-----END CERTIFICATE-----
「Review and import」→「import」を押下して、証明書作成!
これをロードバランサにアタッチするのも可能です!
参考URL
上記の参考URLは素晴らしく詳しく書いて下さっているので、コマンドだけでなく、ちゃんと内容を理解したい方は参考URLを見てください。
コメント
ドメインさえ持っていれば、AWS Certificate Managerで無料でSSL証明書を発行できるのだが、
個人でお試しでSSL証明書を発行する時にわざわざドメイン発行したくないよねってことで、オレオレ証明書の作り方を記しました。
無料でドメイン発行できたりするサービスもあるんだけど、今回はそこまでしなくていいやーとゆるい感じのメモ書きです。
あと、「Certificate private key」にパスワード付きの秘密鍵を作って貼ろうとしたら、「The certificate private key provided is not in a valid PEM format. Learn more.」と怒られる。。。
多分、秘密鍵の中にProc-TypeやDEK-Infoが入っているのがいけないんだろうなと推測のみ。。。