LoginSignup
26
21

More than 5 years have passed since last update.

EC2をAWSの無料SSL証明書を使ってhttps化してみた

Last updated at Posted at 2016-04-03

AWSは現在SSLの証明書を無料で発行していますが、まだいくつかの制約があります。
例えば、

  • 証明書を適用できるのはCloudFrontとELBに対してのみ
  • さらにELBの場合、リージョンがバージニア北部でないといけない (バージニア北部だと、日本からのアクセスの場合東京リージョンと比べて300msほどレスポンスが遅くなるらしい)

今回httpsはどうしても必要だったので、最悪300msのレイテンシを我慢してでもELBに証明書を適用させるか、
もしくはAWS以外で証明書をとるか考えていましたが、どうやらELBの手間にCloudFrontを挟んで、
CloudFrontからELBにhttpでつなぐようにすればhttps化を実現できることがわかりました。

つまり、
クライアント <---- https ----> CloudFront <---- http ----> ELB <---- http ----> EC2
ということですね。
クライアントからサーバーのエンドポイントへの通信がhttpsであれば、URLとしてはhttpsとしてアクセスが可能のようです。

上記の、

CloudFront <---- http ----> ELB

の部分を実現するには、CloudFrontの設定で
Origin Protocol Policy (CloudFront ⇔ ELBのProtocol)をHTTP Onlyにすれば良いです。

そして、

クライアント <---- https ----> CloudFront

の部分を実現し、httpでURLアクセスされたリクエストもhttpsに飛ばすためには、

Viewer Protocol Policy (クライアント ⇔ CloudFrontのProtocol)をRedirect HTTP to HTTPS

にしておくと実現できました。

ちなみに、CloudFrontはAWSサービスの中でも更新したときの反映が遅いので注意が必要です。
また、CloudFront、ELB、EC2にはそれぞれ固有のIPアドレスやAWSが発行するURLが振られているので、DNSを変える前に一度それぞれのURLで問題なく動くことをテストすることが可能です。

26
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
21