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」を検索してインストールから「有効化」してください。

Lightsail 常時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を手動で変更→サイトネットワークをアップグレードして完了です。