概要
今回そこそこ苦戦しながらポートフォリオのSSL対応したので忘れないうちに手順を書き留めておく。
殴り書き程度なのでこれを読んでSSL対応は難しいと思われます。
前提
- EC2にRailsアプリをデプロイ済
- Nginx等のWebサーバーでhttpで外部公開している
- 独自ドメインを取得している。
- VPCなどで適切なネットワークを構築済
- httpですでにアプリケーションにアクセスできる
本題
1.
ACMでSSL証明書のリクエストを行う。
ここでリクエストするドメイン名が公開するドメイン名と違うとSSL化しないので注意
リクエストするドメインがRoute53でレコード作成済だとCレコードの登録を勝手にやってくれるボタンが出るので便利
ex)
実際のサイトのドメイン www.hogehoge.com
証明書申請したドメイン hogehoge.com
上の例だとドメインが違うためアウト
おすすめはサブドメインにワイルドカードを指定して *.hogehoge.com
とすること
こうすることでwww.hogehoge.comやunko.hogehoge.comなど様々なサブドメインに対応できる。
2.
EC2のELB(ロードバランサー)を設定する。
- リスナー: https
- ターゲット: EC2のインスタンス(http)
- VPCとサブネット: 設定しているやつを入れとく
- 証明書: 1で申請した証明書を入れる。
3.
心配な場合はロードバランサーのDNSにアクセスしてアプリケーションが開けるかどうか確認
4.
Route53でロードバランサーへのエイリアスを貼る
www.hogehoge.comとかでロードバランサーにアクセスするようAレコード(エイリアス)を作成する
5.終わり
補足
・ELBの作成や証明書の認証などこの辺りはやたらと処理に時間がかかる模様で、設定はできてるのにうまく動かないとやたら焦ることもあるが気長に待つとなんかうまくいったりするので待ちの姿勢も重要。
・今回のSSL対応はあくまで外部とロードバランサーとの間をSSL化しているため、アプリケーションとロードバランサー間はhttp通信である。よってEC2側のWebサーバーの設定はhttpのままで一切いじる必要なし。ここを勘違いすると沼る
・当たり前っちゃ当たり前だけどロードバランサーにアタッチするセキュリティグループではインバウンドルールで443ポート(https)を許可していないと弾かれてアクセスできない。
ここらへんのセキュリティグループの設定もうまくいかなかったら見直す。
・うまくいかなかったらぐぐる。
最後に
本当に殴り書きなので間違ってたりおかしかったりするところがあれば連絡ください😭
また、同じような境遇の方がいてもし詳しく聞きたいことがあればできる限りお答えします
こちらのTwitterアカウントのDMやリプで連絡ください
https://twitter.com/TakeWeb1