AmazonのAWSのLightsailでWordPressを立ち上げたら、やっておきたいのがSSL化(https)です。方法は色々ありますが、Let’s Encryptを使うことで、無料で設定ができます。
SEO的な面でも、SSL化はやっておきたいですね。
コンテンツリンク(目次)
マルチサイトでの前提
本記事ではマルチサイトでの複数ドメインでのSSL化についても触れています。
マルチサイトでの複数サイトのSSL化については「WordPress Mu Domains Mapping」をインストールして有効化していることが前提です。
マルチサイトで無い人は、上記を無視して大丈夫です。
bncert toolを使って設定
LightsailはBitnamiがインストールされていますが、そこで使えるのが Bitnami HTTPS Configuration Tool (bncert tool)です。
SSL化の方法を色々ためしてみましたが、初心者がつまづきづらく簡単に設定するなら、この方法がオススメです。
ちなみに、独自ドメインは持っていて、ドメイン側の設定は済んでいる前提で話を進めます。
まずは、LightsailインスタンスにSSH接続して、コマンド画面を出したら、以下を実行してbncert toolを立ち上げてください。
sudo /opt/bitnami/bncert-tool
はじめての起動の際にはアップデートを促されることがありますので、その場合は「Y」(yes)で実行して、再度bncert toolを立ち上げてください。
立ち上がったら、設定するドメインのリストを聞いてきますので、SSL化したいドメインを指定します。1つのインスタンスで複数のドメインを運用する場合は、それらも全て入れます。
Domain list []: △△.info ○○○.com ■■■.com
マルチサイト運営で複数ドメインを指定する場合は、ドメインとドメインの間に半角スペースを入力。複数設定する場合は、リストの最初のドメインは、マルチサイトの親サイト、つまりネットワーク管理のドメインを指定すること。
なお「www.○○○.com」での接続も想定してるのであれば、ここでwwwつきのドメインも指定したほうがいいです。後ほど、「www」付きも設定するかとの質問がbncert tool側から聞かれますが、サブドメインを設定した際などにおかしなことになるらしく、設定するならこの段階でwww付きも別ドメインとして設定してください。
サブドメイン「hoge.○○○.com」などもSSL化したいのであれば、「*」などで省略するのではなく、ひとつひとつ入力します。入力が終わったら「enter」キーをポチ。
「The following domains were not included:」と、wwwを含めるかと聞いてくるので、先ほど説明した通りでここは「n」でノーに。
そうすると下記のような感じで確認してきます。
The following changes will be performed to your Bitnami installation:
1. Stop web server
2. Configure web server to use a free Let's Encrypt certificate for the domains:
△△.info ○○○.com ■■■.com
3. Configure a cron job to automatically renew the certificate each month
4. Configure web server name to: △△.info
5. Start web server once all changes have been performed
Do you agree to these changes? [Y/n]:
英語の意味はDeepLあたりで翻訳してください。ちなみに3は、毎月証明書をリニューアルするよと言っています。自動で更新してくれるので便利です。
問題なければ「Y」を入力してEnter。
そうすると、メールアドレスを聞いてきますので入力してEnter
Create a free HTTPS certificate with Let's Encrypt
Please provide a valid e-mail address for which to associate your Let's Encrypt
certificate.
Domain list: △△.info ○○○.com ■■■.com
Server name: △△.info
E-mail address []:
規約に同意しますか?って聞いてくる。
The Let's Encrypt Subscriber Agreement can be found at:
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf
Do you agree to the Let's Encrypt Subscriber Agreement? [Y/n]:
問題なければ「Y」でEnter。
Success
The Bitnami HTTPS Configuration Tool succeeded in modifying your installation〜〜〜〜〜〜〜〜
てな感じで成功するので、最後にEnter押して終わりです。SSH接続を終了するには、「exit」を入力してEnter。これで、SSLの証明書の発行が出来ました。
プラグイン「Really Simple SSL」で常時SSL化
あとはhttpでのアクセスも、httpsになるように、常時SSL化させていくだけです。Lightsail公式も薦めているのが、プラグインの「Really Simple SSL」を使う方法です。
まずプラグインを入れる前に「wp-config.php」が書き込み可能になっているか確認してください。なってなければ設定変更が必要です。
FTP接続でもいいですし、インスタンスにSSH接続して下記コマンドを実行してもOKです。
sudo chmod 666 /opt/bitnami/apps/wordpress/htdocs/wp-config.php
続いて、WordPressのダッシュボードに入って(マルチならネットワーク管理で)「プラグイン」で「新規追加」、「Really Simple SSL」を検索してインストールから「有効化」してください。
※マルチサイトの場合は「ネットワーク全体」「サイトごと」のどちらにするか聞かれます。特に理由がなければ「ネットワーク全体」で有効化にしてください。(後で変更できます)
有効化されるとダッシュボードの「設定」のところに項目「SSL」が現れます。そこで「SSLを有効化します」とクリックして、SSL化を実行してください。
有効化されると、強制的にログアウトして「https」のURLでのログインになると思いますので、再度ログインしてダッシュボードへ。これで常時SSL化が実行されました。
ただし、マルチサイトの場合は、次の設定が必要です。
マルチサイトはURLを手動で修正
マルチサイトの場合は、現状親サイトのみ自動で切り替わっていますので、子サイトのURLを手動で変更しなければならないところがあります。
サイトネットワークの管理画面で、「サイトネットワーク管理」→「サイト」で、子サイトのURLにポインタをもっていって現れる「編集」をクリック。
サイトアドレスが「http」のままになっているので、それを手動で「https」に修正すればOKです。複数ある場合は、すべてにおこないましょう。
最後に「サイトネットワークをアップグレード」もかけておきましょう。
各サイトのダッシュボードでにいければ、細かく設定が変更できますが、特に必要なければ、そのままで大丈夫です。
マルチサイトに追加したドメインの証明書は?
ちなみに、マルチサイトに新しくサイト(ドメイン)を設定するたびに、新しいドメインを追加した証明書を発行する必要があります。
bncert toolを使って、最初から設定していきますが、ドメインリストは追加分だけでなく、既存+新規の全てのドメインを列挙したものを再度入力します。
Do you want to disable/revoke the existing certificate and create a new one?
入力すると上記のように、書き換えしますか?と聞いてくるので、「y」でEnterして、書き換えに同意します。
あとは新規の時と証明書の発行の流れは同じです。
証明書が発行されたら「Really Simple SSL」も再度かけたほうが安全です。一度「サイトごと」に修正して保存、再度「サイトネットワーク全体」にして保存すれば、だいたい問題なく書き換えされます。
そのあとは、サイトネットワーク管理のサイトでURLを手動で変更→サイトネットワークをアップグレードして完了です。