概要
WordPressのサイトを常時SSL化して、HTTPSでアクセスできるようにします。
HTTPSとは→ https://ja.wikipedia.org/wiki/HTTPS
環境
- GCP MarketplaceからデプロイしたWordPress仮想マシン
- Debian 9
- Apache
- DNS設定(Aレコード)
- blog.sasashima.works
SSHでログインする
まずは証明書を発行するために仮想マシンにSSHでログインします。
Certbotをインストールする
Let’s Encryptで証明書を発行するために必要なパッケージをインストールします。
# snapのインストール
sudo apt update
sudo apt install snapd
sudo snap install core
sudo snap refresh core
# certbotのインストール
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
証明書の発行
準備ができたので、certbotで証明書を発行します。
# 証明書の発行
sudo certbot --apache
# 証明書の更新テスト
sudo certbot renew --dry-run
証明書を定期更新する設定をする
certbotで発行した証明書は有効期間が3ヶ月しかないので、crontabで定期的に更新されるように設定します。
# 毎月1日7時に更新
0 7 1 * * sudo /usr/local/bin/certbot renew
nanoでファイルを保存するときは Ctrl + O キーを押して、ファイル名を入力して Enter キーを押します。
nanoを終了するときは Ctrl + X キーを押します。
WordPressでアドレスをhttpsに変更する
証明書の発行ができたので、WordPressのアドレスをhttpsに変更します。
ブラウザでログインするときに https でアクセスできていることを確認しました。
Really Simple SSLプラグインをインストール&SSLを有効化
サイトがSSLで実行されるようにReally Simple SSLプラグインをインストールします。
プラグインを有効化したら、「はい、SSL を有効にします。」をクリックします。
301 .htaccess 転送を有効化
「.htaccess ファイルは書き込み可能ではありません。」という警告が出ているので、.htaccessファイルをドキュメントルートに作成します。
sudo touch /var/www/html/.htaccess
sudo chown www-data:www-data /var/www/html/.htaccess
www-data は Apache を実行しているユーザーです。
Really Simple SSL から警告の表示が消えました。
.htaccess による301転送を推奨しているので、「301 .htaccess 転送を有効化」にチェックを入れて、設定を保存します。
httpリクエストがhttpsに転送されることを確認します。
# 301転送のルールが書き込まれていることを確認
cat /var/www/html/.htaccess
# httpリクエストが301で転送されることを確認(ドメインは自分のサイトに変更する)
curl -v http://blog.sasashima.works
サイトの表示確認
サイトにhttpsでアクセスしたときに表示が崩れないことを確認します。
まとめ
この記事では、Let’s Encryptで常時SSL化して、サイトがHTTPSでアクセスできるようになりました。