6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CloudFrontとElasticBeanstalkを使った際のHTTPS化

Posted at

CloudFrontとElasticBeanstalkを併用する構成の場合にどうやって通信をHTTPS化するを解説します。

ざっくり概要

  • CloudFrontだけじゃなく、ElasticBeanstalkの方にもドメイン名を指定しておくと便利です。
  • ユーザーとCloudFront間の通信だけではなく、CloudFrontのオリジンとなるとElasticBeanstalk間の通信もHTTPS化します。
  • ElasticBeanstalkはCloudFrontを経由しないアクセスを制限するために別途設定を追加します。

Untitled Diagram.jpg

ドメイン設定

CloudFrontの方をexample.com、ElasticBeanstalkの方をserver.example.comと設定することにします。

CloudFrontのHTTPS化

CloudFrontのHTTPS化はCertificateManagerから証明書を発行し、それをCloudFrontで利用します。

スクリーンショット_2020-03-13_9_32_53.jpg

このときに気をつけることはただ一つだけです。CloudFrontで使う証明書は__バージニア北部リージョン__で作らなくてはいけません。東京リージョンで作ったものは使えませんのでご注意ください。

ElasticBeanstalkのHTTPS化

スクリーンショット_2020-03-13_9_37_14.jpg

証明書をElasticBeanstalkの設定画面で設定します。このときの証明書は東京リージョンのElasticBeastalkを使っているのであれば東京リージョンのCertificateManagerで設定した証明書を使います。つまりCertificateManagerとElasticBeanstalkで使う証明書は全く別物になります。

ElasticBeanstalkでリダイレクト設定

リダイレクトの方法は複数考えられると思いますが、今回はApacheのmod_rewriteでリダイレクト設定します。

.ebextensions/force_host_redirect.config
files:
  # ALBを通しているのにHOST名がAPP_URLと一致していなかったらリダイレクト
  # healthcheckのためにALBを通していないアクセスはリダイレクトしない
  "/tmp/force_host_redirect.sh":
    mode: "000755"
    owner: root
    group: root
    content: |
      #!/bin/bash
      {
        echo "RewriteEngine On"
        echo "RewriteCond %{HTTP:X-Forwarded-Proto} !^$"
        echo "RewriteCond https://%{HTTP_HOST} !=https://example.com"
        echo "RewriteRule (.*) https://example.com%{REQUEST_URI} [R=301,L]"
      } > /etc/httpd/conf.d/force_host_redirect.conf

container_commands:
  set_up:
    command: /tmp/force_host_redirect.sh

HOSTが期待したものと違ったらリダイレクトする、というだけの設定ですが、ElasticBeanstalkのhealthcheckが通るように工夫しています。

まとめ

最初、CloudFrontとElasticBeanstalkで同じ証明書を使わないといけないんじゃないかと思って、だいぶハマってしまいましたが、ElasticBeanstalkに対してCloudFrontがクライアントのように働きHTTPS通信してくれるので、問題なく設定出来るということが分かりました。CloudFrontからElasticBeanstalkへの通信がグローバルなインターネット経由であるという認識がなかったですが、理解したら早かったです。

6
3
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
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?