###### tags: `AWS`,`Wordpress`,`Apache`,`ELB` # サイトのSSL化 --- WEBサイトを作成するにあたりSSL化対応する 外部からの接続はAWSのELBまでSSL(443)、ELBからEC2間は80で通信が行われるので以下の対応が必要となる。 ### 1. httpd.confに追記する * 基本的な設定が済んでいる事が前提。 #### httpd.confに以下を追記する ``` SetEnvIf X-Forwarded-Proto https HTTPS=on ``` ### 2. wp-config.phpに追記する * 基本的な設定が済んでいる事が前提。 #### wp-config.phpに以下を追記する。 追記する場所はファイル内の==編集が必要なのはここまでです==が記述されている行よりも前でなければいけない ``` /* SSL if (isset($_SERVER[‘HTTP_X_FORWARDED_PROTO’]) && $_SERVER[‘HTTP_X_FORWARDED_PROTO’] === “https”) { $_SERVER[‘HTTPS’] = ‘on’; } ``` ### 3. WordPressサイトのURL更新 #### EC2からRDSへ接続し直接DBを更新する ``` 【URL確認】 SELECT * FROM wp_options WHERE option_name IN ('home','siteurl'); 【URL更新】 update wp_options SET option_value ="https://サイトURL" where option_id = 1 OR option_id = 2; ``` ### 4.httpでの接続をhttpsにリダイレクト ==ELB==の==リスナー==の==http:80==を編集 デフォルトアクションに以下を設定 ``` リダイレクト先https://#{host}:443/#{path}?#{query} ステータスコード:HTTP_301 ``` ### 【追記】 HTTPS (HTTP/2) 接続時に、プロトコルエラーが発生する Amazon Linux標準リポジトリからhttpdをインストールした場合、==http2_module==が依存関係で一緒にインストールされてしまう。 通信として利用されるのは ==ALB== → ==HTTP/2== ==ALB配下のEC2との通信== → ==HTTP/1.1== の為、ブラウザが誤作動して見れなくなっている(curlも❌) その際の対応が以下 ``` 1. rpmソースのダウンロード yumdownloader --source mod_http2 2. パッケージの更新 rpm -Uvh mod_http2-1.15.3-2.amzn2.src.rpm 3. 設定ファイルの特定&yum上書き禁止の確認(%config(noreplace)) cat ~/rpmbuild/SPECS/mod_http2.spec | grep 10-h2.conf コマンド結果:↓ %config(noreplace) echo "LoadModule http2_module modules/mod_http2.so" > %{buildroot}%{_httpd_modconfdir}/10-h2.conf %config(noreplace) %{_httpd_modconfdir}/10-h2.conf 4. モジュール無効化 sed -i -e "s/^LoadModule/#LoadModule/g" /etc/httpd/conf.modules.d/10-h2.conf 5. 無効化確認 cat /etc/httpd/conf.modules.d/10-h2.conf コマンド結果:↓ #LoadModule http2_module modules/mod_http2.so 6. httpdを再起動してok ```