概要
ALBの利用においてHTTPS化を行うための方法。
ALBのDNS名と同名の自己証明書を作成し、ACMへインポート。後、ALBに適用すればできると想定。
前提
構成のポイントは以下。
・ALBはプライベート
・ALB-バックエンドサーバ(Nginxコンテナ)間はhttps化しない
構築順序は以下の通り。
1.SSL証明書の作成
2.ACMへのSSL証明書のインポート
3.ALBリスナーの設定変更(https化)
SSL証明書の作成
# 秘密鍵の作成
> openssl genrsa -out private.key
# CSRファイルの作成
# 対話モードでCSRファイルの各種属性を設定する
# その際「Common Name」の設定値はALBのDNS名※を登録すること
> openssl req -new -key private.key -out server.csr
# SSL証明書の作成
# 有効期限は1年(365日)
> openssl x509 -req -days 365 -in server.csr -signkey private.key -out server.crt
ACMへのSSL証明書のインポート
各種情報を入力。入力値はAWSのマニュアルを参照。
https://docs.aws.amazon.com/ja_jp/acm/latest/userguide/import-certificate-api-cli.html
>証明書をインポートする
「次へ」を押下。確認画面も問題がなければ「インポート」を押下する。
ALBリスナーの設定変更(https化)
ALBのリスナー設定より、「ACMへのSSL証明書のインポート」でインポートした証明書を利用する。
リスニングポートをhttp→httpsへ変更
作成した証明書をアタッチ。
なお、Securitypolicyは、どの暗号プロトコルをサポートするかの選択を指すと理解。
上図の設定はAWSの推奨に則りELBSecurityPolicy-2016-08を選択。暗号プロトコルの互換性のためとのこと(2022/5/1現在)。
https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/create-https-listener.html#describe-ssl-policies
>セキュリティポリシー
動作確認
# 自己証明書のため「-k」で証明書の検証を無視する必要あり
> ~/environment/ssl-credentials $ curl -I https://<ALBのホスト名>.ap-northeast-1.elb.amazonaws.com -k
HTTP/1.1 200 OK
・・・
ステータスコード200が返ってきたためOK!