EC2でデプロイした本番環境にELBを使ってssl化をする際の詰まったところ・注意点


下記URLを参考にELBを設定したのですが10日ほどつまづいたのでメモします.
https://recipe.kc-cloud.jp/archives/11084

一番簡単なパターンのELB(+ACM発行証明書)→EC2の形

初学者はとりあえず一番簡単なパターンのELB(+ACM発行証明書)→EC2の形でssl化を行うのが良いかと思います。
EC2内のファイルを加筆、変更しなくて済みます。
もう一度言います。

EC2内のファイルを加筆、変更しなくて済むので初学者はとりあえず一番簡単なパターンのELB(+ACM発行証明書)→EC2の形でssl化を行うのが良いかと思います。

構成は次の通り。

注意点

ACMで証明書を発行する際に入力するドメイン名はアプリ名.confに書いたドメイン名と同じにする必要がある。

つまり、取得したドメイン名はaaaa.comだけど、アプリ名.confにwww.aaaa.comと書いたらACMの方にもwww.aaaa.comをつける必要があります。

ACMで証明書を発行するドメイン名とnginx周り&Route53周りのドメイン名が異なると

NET::ERR_CERT_COMMON_NAME_INVALID

というエラーが表示されます。

ELB(ロードバランサー)用のセキュリティグループのインバウンドルールのソースは0.0.0.0/0、::/0にする。

下記画像のようにしてください。

ソースの部分でマイIPを指定してしまうと自分だけがアクセスできて第三者がアクセスできなくなります。

ACMでSSL化の証明書を発行した場合はnginxでリダイレクトさせようとするとうまくいかないので、上記のようにELBでリダイレクトさせるのが良いです。

サブネットは2つ以上作成する必要がある。

nginx.confの設定はそのままで良い。

ssl_certificate "/etc/pki/nginx/server.crt";
ssl_certificate_key "/etc/pki/nginx/private/server.key";

これは証明書までのパスを書き込むので、ACMで発行している場合EC2にはないのでnginx.conf内に書かなくて良い。