目的は、独自ドメインのhttpsサーバをaws上に立てること
- ドメイン名だけを例えばChromeのアドレスに打って、セキュリティの警告も出ずにサクッと表示されるWebサーバを作る。

Route 53 でドメインの取得
- ダッシュボードから、ドメイン名を購入する。
Certificate Managerで証明書の取得
- 証明書のリクエストから、指定するドメイン名は、*.domain.exampleだけじゃなくて、別名としてdomain.exampleも追加しておく。
- メール認証等で、approvalする。
EC2でインスタンスとロードバランサの作成
インスタンス
- Amazon Linux AMIを選択、適当なタイプを選択して作成する。
- Elastic IPで静的IPの取得と、インスタンスへの関連付けをする。
- パブリックDNSは、sshで入るときに使うのでコピーしておく。
- セキュリティグループのインバウンドルールで、HTTP許可を追加する。
ロードバランサ
- ロードバランサをClassic Load Balancerで作成し、転送先のインスタンスを作成したインスタンスに指定する。
- リスナーのhttpsには作成済みの証明書を指定して転送先は80ポート、httpも80に転送しておく。
- セキュリティグループのインバウンドは、HTTP、HTTPSを許可しておく。
- ヘルスチェックは、80番ポートのindex.phpとしておく。
- ロードバランサのDNS名をコピーしておく。
Route 53に戻って、ドメインにエイリアスを設定
- ドメインのレコードセットの作成で、名前は空、タイプはA(IPv4)、エイリアスはハイ、エイリアス先をロードバランサのDNS名にする。
Apache, PHP, MySQLのインストール
- Amazon Linuxでサーバを作成 (Apache2.4 + PHP7.2 + MySQL5.7)を参考にさせて頂きました。
- /var/www/html/index.phpを適当に作っておく。
HTTPをHTTPSにリダイレクト
- /etc/httpd/conf/httpd.conf の最後に以下を追加する。
/etc/httpd/conf/httpd.conf
<VirtualHost *:80>
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule .* https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]
</VirtualHost>
- ロードバランサからHTTPで来たものを、X-Forwarded-Protoで判定し、httpsに送るようにクライアントに依頼する。
- ロードバランサ自体は、何もしていない。
ドメイン名だけをブラウザのアドレス欄に入力して、つながればOK!
その他
- ロードバランサをClassic Load Balancerではなく、Applicatin Load Balancerにするとhttpからhttpsへの転送設定ができるっぽい。
- 証明書は、ロードバランサではなくCloudFrontに関連付けることもできる。インスタンスに直接は、できないもよう。