この記事は「AWSでhttpsを使いたい」という要望に5分で応えるために書きます。難しい話は他のサイトを参考にしてください。
AWSでhttpsを使う際のポイントは以下
- 証明書はPEM形式でないとN.G.。Apacheで使う形式ではダメ。
- 2016年6月現在、AWSの各種ダッシュボードからは何故かアップロードできない。
- AWS CLIを使ってコマンドラインから証明書をアップロードして登録する。
- EC2、Beanstalkのロードバランサに対して、ポート番号443をリスナ登録する際に登録済み証明書を設定する。
前提として、AWS CLIがインストール済みであるものとします。まだの人は過去記事(IAM (Identity and Access Management)ユーザの追加と AWS CLIのセットアップ)を参考にしてインストールを済ませてください。
オレオレ証明書(PEM形式)の作成
サーバ証明書の作成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
$ pwd /home/ikuty/cert $ openssl req -new -keyout certkey.pem -text -out cert.req -- 秘密鍵のパスワードを入力 Country Name (2 letter code) [AU]:JP State or Province Name (full name) [Some-State]:Tokyo Locality Name (eg, city) []:Minatoku Organization Name (eg, company) [Internet Widgits Pty Ltd]:OreOreCompany Organizational Unit Name (eg, section) []:Tech Common Name (eg, your name or your server's hostname) []:oreore.com Email Address []:ikuty@oreore.com Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: -- |
次に証明書の自己署名。
1 2 |
$ openssl req -x509 -in cert.req -text -key certkey.pem -out cert.crt 上記の秘密鍵のパスワードを再入力 |
秘密鍵からパスワードを削除
1 2 |
$ openssl rsa -in certkey.pem -out certnokey.pem 上記の秘密鍵のパスワードを再入力 |
AWS CLIを使ってオレオレ証明書をアップロード
※改行は見易さのためです。コピペする時は1行にしてください。
1 2 3 4 5 6 7 |
$ pwd /home/ikuty/cert $ aws iam upload-server-certificate --server-certificate-name MyOreOreCertification --certificate-body file://cert.crt --private-key file://certnokey.pem |
成功するとjsonが返ってくる。
1 2 3 4 5 6 7 8 9 10 |
{ "ServerCertificateMetadata": { "ServerCertificateId": "**********************", "ServerCertificateName": "MyOreOreCertification", "Expiration": "2016-07-11T06:10:41Z", "Path": "/", "Arn": "*********************************", "UploadDate": "2016-06-11T06:17:20.991Z" } } |
確認
- EC2のロードバランサに443のリスナを追加する画面で、上で追加したMyOreOreCertificationを選択できるようになります。
- Elastic Beanstalkのロードバランサでも同様に MyOreOreCertificationを証明書として443のリスナを追加できるようになります。