こんにちは。三國です。
アフィブログを運営するにあたって、SEO対策としてブログをhttps化するのは現在必須事項となっています。
「Wordpress https化 AWS」とかで検索して調べまくったのですが、出てくるものがまぁ違う違う…。
どれが正解でどれが間違っているのか全然わかりませんでした。
取り敢えず試してみたものの、ことごとく失敗。
4回はEC2再構築し直しました…(ヽ´ω`)
もしEC2をまだ構築していないという方は、
を参考にしてみてください。
うおぉぉぉぉぉぉぉぉっぉ!1!!1!となりながらなんとか成功したのがこの方法です。
是非ご賞味あれ。
目次
AWS上で証明書を取得する
証明書の取得
セキュリティ、アイデンティティ、コンプライアンスメニューにあるCertificate Manager (ACM)をクリックします。
証明書はAWSでEC2を利用している以上無料です。
パブリック証明書を選択肢、証明書のリクエストをクリックします。
次にドメイン名を入力します。
ACMの証明書はワイルドカード証明書に対応しているので、
[取得したドメイン名]
*.[取得したドメイン名]
の2パターン記入しておきましょう。
※ワイルドカード証明書とは、一次サブドメインまでカバーする証明書になります。
www.[ドメイン名]
check.[ドメイン名]
等の複数のサブドメインを1枚の証明書で運用できます。
入力ができたら確認とリクエストをクリックします。
DNSでの証明書の検証
よくEメールで承認しますという作成ブログを見つけますが、
Eメール承認の場合ドメインのプライバシー設定を解除する必要があります。
AWSの場合、初期設定はプライバシー設定がONになっているため解除が必須となります。
うーんうーんメールが届かない…。。
と私も結構悩んでいました。
またEメール承認だと承認までの時間が少し長いです。
そのため、ここでは「DNSの検証」で進めていきます。
DNSの検証を選択し、確認をクリックします。
ドメイン名の左の ➤ をクリックして詳細を出します。
Route53でDNSを設定していると、「Route53でのレコードの作成」というボタンが出ているはずです。
[ドメイン名]
*.[ドメイン名]
の両方ともこのボタンをクリックします。
なんとコレで認証完了です!!
Route53でDNS設定をしていないという方は、
を参考に設定してみてください。
AWSはなんと行っても1サービスで必要事案をすべて賄えるのが利点です!
安さを求めて他サービスとの併用もいいですが、運用コストを考えるとAWSでまとめてしまったほうが吉です。
儲かってくるとかかった費用の計算や、サーバーのスケールアップ、もしくはスリム化を考えると思いますが、
AWS上で完結していればそれも管理しやすいです。
少し待ってもらうと、「状況」が「発行済み」になると思います。
これで証明書の発行は完了です!!
証明書のALBへの割り当て
ALB(Application Load Balancer)の作成
サービスからEC2を選択し、左メニューでロードバランサーをクリックします。
一番左の、「Application Load Balancer」の作成ボタンを押します。
この画面で、「ロードバランサーの名前の設定」と「リスナーの登録」を行います。
ロードバランサーの名前は適当でいいです。というと悩む人がいるので、
load-b-[ドメイン名]
とかつけておきましょう。
後々アフィサイトを増やしたときにわかりやすくするだけです。
リスナーの登録はすでにHTTPはされていると思いますので、
リスナーの追加をクリックし「HTTPS」を追加してください。
少しスクロールしてもらって、
「アベイラビリティゾーンの設定」を行います。
取り敢えず全部選んでください。
「次の手順へ」をクリックします。
「セキュリティ設定の構成」画面になります。
おそらくデフォルトで選ばれていると思いますが、「ACMから証明書を選択する」を選択します。
先程取得した証明書を選択します。
セキュリティポリシーはそのままで大丈夫です。
ここも適当な名前でいいのですが、取り敢えず
load-b-[ドメイン名]
とでもつけておきましょう。
それ以外は変更せず次の手順へ。
最後に「ターゲットの登録」の設定です。
インスタンスにWordpressのインスタンスがあるともうのですが、
インスタンスを選択して、まずはポートを「80」で「登録済みに追加」ボタンを押します。
次にポートを「443」にして「登録済みに追加」ボタンを押します。
ポート80というのはhttp通信。
ポート443といのはhttps通信の設定になります。
両方登録しておかないと、ALBをドメインに割り付けたときに接続ができなくなります。
こんな状態になると思います。
最終的にはhttpsでしかアクセスしなくなるとは思いますが、
httpポートが空いているからといってマイナスではありません。
すべての設定が終わったら「確認」ボタンを押しましょう。
今までの設定を確認して「作成」を押します。
これでALBの作成は完了です。
ALBのDNSへの登録
「DNS management」の「Hosted Zone」をクリックします。
www.[ドメイン名]の設定があると思います。
この記事から見ていただいている方は、
を参考にALB設定をしてください。
www.[ドメイン名]の設定を選択すると右側に設定メニューが出ると思います。
上の記事では、「Alias」を「No」にしてEIPを入れていましたが、
今回は「Alias」を「Yes」にします。
「Alias Target」のプルダウンをクリックし、先程設定したロードバランサーを選択しましょう。
選択したら「Save Record Set」を押して設定完了です。
ブラウザのURL欄に、「www.[ドメイン名]」を入力して表示されたら問題なく設定ができています!!
httpsでアクセスしてみてもいいのですが、まだWordpress側の設定が完了していないため崩れて表示されると思います。
あまり気にせず次へ進みましょう。
WordPressのhttps化
wp-config.phpの書き込み有効化
EC2への接続に関してはTeratermで行いますが、もし接続まだという方は下記の記事を参考に接続してください。
それでは、まずWordpressの管理画面をhttps化します!!
大体Really Simple sslのプラグインを入れるとほら簡単。すぐSSL化できるよ!
とか書いてありますが、大体管理画面がSSL化せずハマります。
まず、Teratermを使ってEC2へログインします。
wp-config.phpに書き込み権限を追加するために以下のとおりに実行してください。
cd /opt/bitnami/apps/wordpress/htdocs/
まずはwordpressのフォルダへ入ります。
ls -l wp-config.php
次にwp-config.phpの書き込み権限をチェックします。
そうするとおそらく
-rw-r—– 1 bitnami daemon 4245 Jun 8 11:44 wp-config.php
と出てくるはずです。
コレが出てきたら書き込み権限がオフになっています。
書き込み権限をオンにするために、
chmod g+w wp-config.php
と打ちます。
再度wp-config.phpの書き込み権限をチェックすると、
ls -l wp-config.php
-rw-rw—- 1 bitnami daemon 4245 Jun 8 11:44 wp-config.php
となっていれば、書き込み権限がオンになり書き込むことができるようになります。
管理画面のhttps化
まずはWordpressの管理画面をhttps通信でログインできるように設定します。
sudo vi /opt/bitnami/apps/wordpress/htdocs/wp-config.php
と打ってwp-configを表示します。
「i」を押すとINSERTモードになって書き込みができるようになりますので、
define群の下に
$_SERVER['HTTPS']='on'; define('FORCE_SSL_LOGIN', true); define('FORCE_SSL_ADMIN', true);
を追加します。
追加したら「ESC」を押すと編集モードから抜けるので、「:wq」を押して保存してください。
保存できない!みたいなエラーが出る場合は「:wq!」と打てば保存終了できます。
管理画面に、「https://www.[ドメイン名]/wp-login.php」でアクセスしてみてください。
Cookieは無いはずなのでもう一度ID/PASSWORDを入力しログインしてください。
ログインできたら設定完了です。
ブログ全体のhttps化
次はプラグインを利用してブログ全体をhttps化します。
今回は簡単でわかりやすい「Really simple SSL」のプラグインを使用します。
まずは、Wordpressのメニューから「プラグイン」→「新規追加」を選びます。
右上の検索欄に「Really simple SSL」と入力し、検索します。
上の画像のプラグインを「インストール」し、「有効化」してください。
SSLをほんとに有効化するか聞いてくるので、「はい。有効化します。」ボタンをおします。
エラーが出ずにこの画面が出たら、設定完了です!!!
エラーが出た場合はwp-config.phpの設定がうまく行っていない可能性が高いので前述の設定をもう一度見直してください。
少し不安定になりますが、ちょっと放置しておいてください。
アニメ1話でも見ていればすぐ終わります。
ブログ本体も管理画面もhttpsでの接続が可能になっているはずです。
wp-config.phpの書き込み無効化
最後にセキュリティ的に書き込める状態だと面倒なことになるので、w-config.phpを書き込み無効化しておきましょう。
前述の方法の逆を行います。
まず再度EC2に接続してください。
前回の手順の逆を行います。
cd /opt/bitnami/apps/wordpress/htdocs/
でワードプレスのフォルダに入り、wp-config.phpの書き込み権限をチェックします。
ls -l wp-config.php
そうするとおそらく
-rw-rw—- 1 bitnami daemon 4245 Jun 8 11:44 wp-config.php
と出てくるはずです。
コレが出てきたら書き込み権限がオンになっています。
書き込み権限をオフにするために、
chmod g-w wp-config.php
と打ちます。
再度wp-config.phpの書き込み権限をチェックし、
ls -l wp-config.php
の反応が、
-rw-r—– 1 bitnami daemon 4245 Jun 8 11:44 wp-config.php
となっていれば、書き込み権限がオフになっています。
最後に
如何だったでしょうか。
あまり知識がなくてもポチポチしていれば設定できるものが多いですね。
かくいう私も、全然知識がないのに思い立ってブログを一から作ってみた勢です。
雑記も含めて広く浅く記事を書いていますので、是非別の記事もご覧になってください。