Let’s EncryptでWordPressを常時SSL化

常時SSL化のメリット・デメリット

下記サイト参照。

一番のメリットはGoogle様に優遇されること。

一番のデメリットはhttpで築き上げてきたURL的な資産がなくなること。

Let’s Encryptとは

一言でいうと常時SSL化に必要な「SSL/TLSサーバ証明書」を無料で発行してくれるところ。

スクリプトを叩くだけで証明書の発行からインストール・更新までしてくれる。

詳細は下記サイト参照。

Let’s Encryptのインストール

うちのさくらVPSはCentOS6なので下記サイトを参考にインストールする。

yum install epel-release
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
./certbot-auto

必要なパッケージがインストールされるので完了するまで待つ。

証明書の発行・取得

WordPressを止めたくないので、Apacheを利用して証明書を発行・取得する。

※Python関係のWarningが出ても動作に支障はないので無視する。

./certbot-auto certonly --webroot -w /var/www/html(apacheの公開ディレクトリ) -d example.com,www.example.com(ドメイン名) -m mail@example.com(メールアドレス)

上手くいくと下記のようなファイルが作成される。

ls -1 /etc/letsencrypt/live/example.com/
README
cert.pem
chain.pem
fullchain.pem
privkey.pem

Apacheの設定

Apacheに証明書を組み込む

vi /etc/httpd/conf.d/ssl.conf
SSLCertificateFile /etc/letsencrypt/live/hogehoge.hugahuga.jp/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/hogehoge.hugahuga.jp/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/hogehoge.hugahuga.jp/chain.pem

デフォルトだとセキュリティ上問題があるので設定を変更する。

POODLE脆弱性のあるSSLv3は無効にする

# SSL Protocol support:
# List the enable protocol levels with which clients will be able to
# connect. Disable SSLv2 access by default:
#SSLProtocol all -SSLv2
SSLProtocol all -SSLv2 -SSLv3

POODLE脆弱性については下記サイトを参照。

セキュリティ強度の低い暗号化方式は使わない

# SSL Cipher Suite:
# List the ciphers that the client is permitted to negotiate.
# See the mod_ssl documentation for a complete list.
#SSLCipherSuite DEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:+3DES
SSLHonorCipherOrder ON
SSLCipherSuite EECDH+HIGH:EDH+HIGH:HIGH:MEDIUM:+3DES:!ADH:!RC4:!MD5:!aNULL:!eNULL:!SSLv2:!LOW:!EXP:!PSK:!SRP:!DSS:!KRB5

詳しくは下記サイト参照。

httpへの接続をhttpsに転送する

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

Apacheを再起動する

service httpd restart

WordPressの設定

  • [設定]->[一般]で「WordPress アドレス (URL)」と「サイトアドレス(URL)」をhttpsに直す。
  • 記事の内部リンクをhttpsへできれば修正する。

証明書の自動更新設定

cronで週1回期限切れが近い証明書を更新してApacheで読み込むように設定する。

(2018/05/27更新)

いつの間にか自動でサービスの再読込をしてくれるようになっていたので以下の設定でOK。

crontab -e

0 6 * * 0 /root/certbot-auto renew

スポンサーリンク
PC