先日 RSA の SSL 自己証明書を作成して AWS の Application Load Balancer へ適用する方法を書きました。
同様に ECDSA を利用した SSL 自己証明書の作成方法も調べたので、こちらも備忘録として作成方法を書いておきたいと思います。
自己証明書の作成方法
以下のコマンドで秘密鍵を作成します。調べたときによく見かけた prime256v1 を使っています。
$ openssl ecparam -name prime256v1 -out server.key -genkey $ openssl ec -in server.key -text -noout
次に、以下のコマンドで公開鍵を作成します。後で使う ALB を東京リージョンで作成すると、現時点では「*.ap-northeast-1.elb.amazonaws.com」のドメインになるので、Common Name にはそのように設定しています。
$ openssl req -new -key server.key -out server.csr ... Country Name (2 letter code) [XX]:JP State or Province Name (full name) []:Tokyo Locality Name (eg, city) [Default City]: Organization Name (eg, company) [Default Company Ltd]:zuqqhi2 Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) []:*.ap-northeast-1.elb.amazonaws.com Email Address []: ... A challenge password []: An optional company name []: $ openssl req -text -noout -in server.csr
最後に、以下のコマンドで証明書を作成します。
$ openssl x509 -in server.csr -days 365 -req -signkey server.key -out server.crt $ openssl x509 -text -noout -in server.crt
これで SSL 自己証明書の作成は完了です。
AWS ALB への作成した SSL 自己証明書の設定
基本的には冒頭で紹介した以前の記事と同じですが、現在の ACM では ECDSA の SSL 証明書はインポートできないので、ALB の HTTPS リスナー作成時に「IAM に証明書をアップロードする」を選択してインポートしてください。
また、プライベートキーを入力する際には「BEGIN PARAMETERS」から「END EC PARAMETERS」はコピーしないようにしてください。
ALB を RSA と ECDSA の両方の暗号スイートに対応させるには、証明書を 2 つ設定する必要があります。
以下のブログを参考に設定したらできました。
$ openssl s_client -connect elb-ecdsa-test-1-109828406.ap-northeast-1.elb.amazonaws.com:443 -servername elb-ecdsa-test-1-109828406.ap-northeast-1.elb.amazonaws.com -cipher ECDHE-ECDSA-AES128-GCM-SHA256 < /dev/null | grep "Cipher" New, TLSv1/SSLv3, Cipher is ECDHE-ECDSA-AES128-GCM-SHA256 Cipher : ECDHE-ECDSA-AES128-GCM-SHA256 $ openssl s_client -connect elb-ecdsa-test-1-109828406.ap-northeast-1.elb.amazonaws.com:443 -servername elb-ecdsa-test-1-109828406.ap-northeast-1.elb.amazonaws.com -cipher ECDHE-RSA-AES128-GCM-SHA256 < /dev/null | grep "Cipher" New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-GCM-SHA256 Cipher : ECDHE-RSA-AES128-GCM-SHA256
この記事へのコメントはありません。