ElasticBeanstalk with ALBを簡単に(雑に?)https対応する


目的

ElasticBeanstalkが設定してくれるドメイン (*.ap-northeast-1.elasticbeanstalk.com) を、簡単にhttps対応にしたい。

結論

自己署名証明書、ACM(AWS certificate manager)を使う

手順

openssl インストール

# Macデフォルトのopensslと、AWSドキュメントで使用されているopenssl差異があるためインストール
brew install openssl
% /usr/local/opt/openssl/bin/openssl version
OpenSSL 3.0.0 7 sep 2021 (Library: OpenSSL 3.0.0 7 sep 2021)

自己証明書とプライベートキー生成

# 東京リージョンの場合
# rsa:4096にすると、ALBに載せたときにエラーが起こるので rsa:2048
# 
sudo /usr/local/opt/openssl/bin/openssl req -x509 -days 365 -nodes -newkey rsa:2048 -keyout test.key >test.crt <<-EOT                                                                                                                    
JP
Tokyo-to
Nakano-ku
Example Incorporation
Example Devision
*.ap-northeast-1.elasticbeanstalk.com
[email protected]
EOT

ACM上、インポート作業

Certificate Manager -> Import

test.crt

-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----

をCertificate bodyに、

test.key

-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----

をCertificate private keyにコピペし、Import

test.crt の中身を見る場合

openssl x509 -in test.crt -text

test.key の中身を見る場合

cat test.key

ElasticBeanstalkコンソール上、作業

Configuration -> Load Balancer -> Edit

Listeners -> Add Listener

作業後、apply。環境が立ち上がるまで待ち、立ち上がったら https://~のドメインでアクセスする。

その他

Macのchromeだと、 ERR_INVALID_CRT のようなエラーが出るため、エラーページを表示した状態で thisisunsafe とタイプする

参考