ゴマちゃんフロンティア

アザラシが大好きなエンジニアの開発日記です

「Let’s Encrypt」を使用してブログをSSL対応したお話

time 2018/10/28

というわけで、前々からずっとやりたいと思っていたことの1つに「ブログをSSL対応する」があります。

このサイト自体は特にSSL化しなきゃいけないような重大コンテンツがあるわけではないのですが、今日のSSL化プッシュの流れは凄まじく、モダンブラウザや検索エンジンもSSL対応していないサイトへの風当たりが強くなることが予想されるので、この機会に挑戦してみました。
使用したSSL証明書は「Let’s Encrypt」です。しっかりした証明書が無料で作れるなんていい時代になったものです。

やったこと

本ブログはWordPress (本記事の時点でv4.9.8) を使用しているため、それを前提としたお話になりますが、著名なCMSだけあってぐぐればいくらでも方法がでてきます。
以降は実際に作業してみて気になった点や詰まった点をご紹介します。

certbotの導入

私のVPSは「CentOS 6.7」なので、以下のQiitaの記事を参考にしました。
https://qiita.com/sugasaki/items/94a5a9f3f3dbbcfbb6f9

実行するとCGI上でいくつか質問を聞かれるので、回答を入力していきます。
途中でWebサーバのリダイレクトに関する設定がありましたが、WordPress側の準備が整っていなかったのでスキップしました。それでもApacheの設定があれこれ編集されるため、この時点でhttpsでのアクセスができるようになっています。

「certbox-auto renew」をcronに登録

新しくcronを作成し、定期的に証明書が更新されるようにします。
私の場合は/etc/crontabに以下のように記述しました。

0 0 * * 0 root /usr/local/certbot/certbot-auto renew --post-hook "service httpd restart"

毎週日曜日の0時にcertbot-auto renewを実行し、更新があればhttpdを再起動するようにします。
2ヵ月ほど経ってから証明書を確認して延長されていれば問題なさそうです。

httpへアクセスされた場合のhttpsへのリダイレクト

.htaccessへ301リダイレクトの記述を追加する必要があります。
WordPressはデフォルトで「BEGIN WordPress」から「END WordPress」までのリライトルールが書かれていますが、そことは別のセクションに書く必要があります。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

私は知らずにWordPressの「RewriteBase /」の下に書き足して500エラーにしてしまいました。お気をつけください。

「Search Console」の対応

Googleの「Search Console」を使用している場合、登録しているプロパティもhttpsに変更する必要があります。
厳密にはプロパティのURLを変更する方法はないようなので、新規プロパティとしてhttps版を登録する必要がありました。

Search Consoleの再設定は以下のサイトが参考になりました。
https://nelog.jp/reentry-google-search-console

あとがき

そんなわけで、ブログをSSL対応させてみました。
WordPress故に情報が充実していること、certbotクライアントでWebサーバの設定まで行ってくれることから、思った以上に手間を掛けずに終わらせることができました。

down

コメントする