🐥

SSL証明書を作成してHTTPS通信できるようにする

に公開

はじめに

AWSのACMを使用してSSL証明書の発行を行います。
以前にアプリケーションを作成してありますので、こちらにSSL証明書を適用しHTTPS通信ができるようにします。
https://zenn.dev/eiken/articles/2b9a9f73d57d8a

1.ACMで証明書を作成する

AWS Certificate Managerを起動し、証明書のリクエストを行います。

証明書タイプとしてパブリック証明書をリクエストします。

  • ドメイン名
    • 完全修飾ドメイン名 : enjine.f5.si(前回作成したドメイン)
  • エクスポートを許可
    • エクスポートを無効にする
  • 検証方法
    • DNS検証
  • キーアルゴリズム
    • RSA2048

2.CNAMEレコードの作成

続いてRoute53のホストゾーンにCNAMEレコードを作成します。
※証明書を作成すれば、関連ホストゾーンに自動でCNAMEレコードが作成されると思ってましたが、手動で登録する必要があるようです。
レコードをクイック作成

  • レコード名 : ACMで控えたCNAMEレコード名
  • レコードタイプ : CNAME
  • 値 : ACMで控えたCNAME値(末尾のドットも必要)
  • TTL : 300
  • ルーティングポリシー : シンプルルーティング

※レコードが作成できたら、再度ACMから証明書を確認し、ステータスが発行済みになるのを確認します。

3.リスナールールの追加

ALBにHTTPS通信のリスナーとルールを追加します。ロードバランサーの「リスナーとルール」タブからリスナーの追加を行います。

  • プロトコル : HTTPS
  • ポート : 443
  • アクションのルーティング : ターゲットグループへ転送
    • ターゲットグループ : 作成したターゲットグループ
  • デフォルト SSL/TLS サーバー証明書
    • 証明書の取得先 : ACMから
      • 証明書 (ACM から) : 作成したSSL/TLS証明書

さいごに

作成したドメインに無事HTTPS通信することができました。ロードバランシングもされている事を確認できます。

(補足)はまったこと

当初ターゲットグループにHTTPS通信の設定をしてしまったことで、503エラーとなってしまいました。エラーの解消方法を調べていく上で、ターゲットグループで「HTTPSプロトコル」を設定できるのは、バックエンド(=EC2インスタンス)がHTTPSで待ち受けている場合に限られている、ということを知りました。つまり、ターゲットグループにHTTPSを使うならEC2側が対応している必要があるということです。
ターゲットグループはELBがEC2に通信するのに必要な設定を施し、ロードバランサーのリスナーをHTTPS通信として設定する事で解決できました。

Discussion