AWSでWordpress立ち上げようと思ってしまった
きっかけは、AWSのハンズオン。
ここまで構築はなんなく出来た(資料あるし)。
「折角作った環境だから、セキュアなHTTPS通信にしよう」と意気込んだ途端、いろんな落とし穴に落とされてしまった。
このつまずいたポイントを列記した。
流れは、以下の通りである。詳しい方法はいくつかのURLを参照した。
※料金が発生する作業もあるため、予め確認してほしい。
プロセス
1. VPCを作成
2. EC2を作成(Wordpressインストール)
3. RDSを作成
4. ELBを作成
5. Wordpress設定(RDS等)
6. マルチAZ化
↑ここまではAWSのハンズオンで詳しく解説されている。
7. Route53でドメイン購入(ドメイン登録は公式ドキュメント)
8. ACMで証明書発行
9. ELBリスナーにHTTPSを追加
10. Route53にELBと(サブ)ドメインを紐付け(Aレコード)
11. WordpressでHTTPS設定
ハマったポイント
【★☆☆】証明書の検証中で止まる(ACMで証明書発行)
完全なぽかミス。DNSの検証を選択したワケだが、検証のためにCNAMEを登録する必要があった。
Route53でのレコードの作成
を押下したら、成功
にステータスが変わった。
【★★☆】HTTS通信で503 Bad Gateway
(ELBリスナーにHTTPSを追加)
ELBのリスナーにHTTPSを追加するまでは良かった。
リスナーのターゲット先でポート443の通信させるように設定していたのだが、
https://~
でアクセスすると503 Bad Gateway
が出てしまった。
セキュリティを見直したり、EC2の設定を見直したりしたが解消されなかった。
以下のサイトを見つけて、ようやく解決した。
HTTPS化をしたいのであればACMを使ってALBに証明書を設定すれば十分で、ALB→インスタンス間の通信はAWS内部の通信なので、そこに関しては基本的にHTTPで問題ありません。
【★☆☆】サブドメインが「保護されていない通信」(ACMで証明書発行)
AMCで発行した証明書がワイルドカードの形になっていなかったことが原因。
ドメインの追加
のところで*.XXXXX.XXX
の形にすれば良かった。
アスタリスクだけでは、ゾーンエイペックス(サブドメインではない、ドメイン自体)が登録されないので、一緒に登録しておく。
【★★★】 HTTPS通信で表示崩れ(WordpressでHTTPS設定)
HTTPS通信でアクセスすると表示崩れしてしまう。
検索をするとReally Simple SSL
プラグインがオススメと言う記事がたくさん出てきた。
ただ、今回のようにELBで証明書を当てているWorpressではうまく行かない。
以下のサイト等を読んで、解決した。
原因は、HTTPSでアクセスしているのに、ELBのせいでHTTPでCSSやJSを読みに行ってしまうためとのこと。
以下のファイルに、ELB側でHTTPS通信があったら内部もHTTPS通信で行うように記述。
sudo vi /var/www/html/wp-config.php
以下を追記
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
$_SERVER['HTTPS'] = 'on';
Apache再起動
sudo systemctl restart httpd.service
以上をクリアし、無事に常時SSLのページを公開することができた。