GCP上のWordPressでSSL証明書の有効期限が切れた時の対処法

どうも、白戸です。当サイトのテーマ変えてからレスポンスが悪すぎてアクセス数が目に見えて落ちてきたので、テーマをガラッと変更してリニューアルしました。
で、気づいたんですが、自作アプリ紹介用のサイト(aolabo.net)から飛ぶと「接続がプライベートではありません。」エラーページに行き着く。。。
マジかーw
SSL証明書の有効期限切れの症状
ずーーーっと放置していた自作アプリ紹介用のサイト(aolabo.net)、SSL証明書の有効期限が切れてて、
「接続がプライベートではありません。このWebサイトは、あなたの個人情報または金融情報を盗むために ‘ aolabo.net ‘ になりすましている可能性があります。前のページに戻ってください。」
エラーになってました。最悪ですね。こんな怖い警告を、興味を持ってくださったみなさまの目に晒していたかと思うと、、、もう、、、本当にすみません。

一応断っておきますが、個人情報とか金融情報を盗もうとか、一切考えてませんから。てかそこまで高度なことできませんから(白目)
放置しすぎてSSL証明書の期限が切れてたことに気づかなかったという、超低レベルな理由なので、ご安心くださいませ。
原因は、SSL証明書の期限切れ
上記のエラーが表示された場合は、Qualys SSL LabsのSSL Server Test でテストしてみてください。

This server’s certificate is not trusted, see below for details.
こんな感じで、エラーが出ています。スクロールすると

という表示。赤い部分がエラー個所ですね。
Wed, 05 Sep 2018 04:38:03 UTC (expired 10 months and 23 days ago) EXPIRED
翻訳すると、
水、05 9月2018 04:38:03 UTC(10ヶ月23日前に期限切れ)期限切れ
です。SSL証明書の有効期限切れってことですね。クソですね。すみません。
GCPのCompute EngineにVMインスタンス立ててWordpress入れた人向け、SSL証明書の有効期限切れ対処法
①GCPコンソールからSSH接続する
まず、GCPコンソールにログインして、該当インスタンスがあるプロジェクトを選択します。で、左のメニューのCompute Engine > VMインスタンスを選択。
で、該当するWordpressが入ってるVMインスタンスを選択し、「SSH」でリモートアクセスします。なんでもいいけど、今回は「ブラウザウィンドウで開く」を選択。

② certbotをインストール
ssh.cloud.google.com という黒い画面が開いたら、下記コマンドを入力します。
wget https://dl.eff.org/certbot-auto && chmod a+x certbot-auto
③ SSL証明書の作成
続けて、以下のコマンドを入力。
./certbot-auto certonly –webroot -w /var/www/html/ -d [サイトのドメイン名]
[サイトのドメイン名]の部分は、各自置き換えてくださいね。aolabo.netの場合はaolabo.netと入力します。
したら、こんな感じでずらずら表示されます。

④ SSL証明書の設定(default-ssl.confの修正)
続いて、以下のコマンドを入力。
sudo vim /etc/apache2/sites-available/default-ssl.conf
で、default-ssl.confが開くので、編集します。
ちなみに編集は「a」を押すと編集できるようになります。編集し終わったら、[esc]キーを押して「:wq」で保存して閉じることができます。(保存したくない場合は「:q!」です)
<VirtualHost _default_:443>の中に、以下を追記
<Directory /var/www/html/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
こんな感じ。

もう一箇所。「SSLCertificateFile」と「SSLCertificateKeyFile」の前に「#」をつけてコメントアウトし、下記を追記します。
SSLCertificateFile “/etc/letsencrypt/live/[サイトのドメイン名]/cert.pem”
SSLCertificateKeyFile “/etc/letsencrypt/live/[サイトのドメイン名]/privkey.pem”
SSLCertificateChainFile “/etc/letsencrypt/live/[サイトのドメイン名]/chain.pem”
[サイトのドメイン名]の部分は、各自置き換えてくださいね。aolabo.netの場合はaolabo.netと入力します。
こんな感じ。

⑤ リダイレクトの有効化
続いて、「:wq」で先ほどのvim編集を終えたら、以下を入力し、今度はwordpress.congを編集します。
sudo vim /etc/apache2/sites-available/wordpress.conf
既存の内容を全削除して、以下を貼り付けます。([サイトのドメイン名]の部分は各自置き換えてくださいね。aolabo.netの場合はaolabo.netと入力します)
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www/html
ServerName [サイトのドメイン名]
Redirect permanent / https://[サイトのドメイン名]/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/html/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory “/usr/lib/cgi-bin”>
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
最終的に下記の内容になっていればOKです。

⑥ Apache再起動
sudo a2ensite default-ssl
sudo a2enmod ssl
sudo service apache2 restart
これで証明書の変更が有効になります。

⑦ 443ポートが開いてるか確認
ss -lnt
これで確認します。

これで完了!
SSL証明書を自動更新しよう
もう二度とこんな想いをしたくない、面倒な作業をしたくない方は、SSL証明書の自動更新の設定をお勧めします。
先ほどの続きで、以下のコマンドを入力。
sudo crontab -e

1〜3を選べっていわれてるので、「1」を入力してEnter。
エディタが開いたら一番上に下記を入力して、[command]押しながら「X」で編集終了。保存する場合は続いて「Y」を押すと、完了です。
45 2 * * 6 cd /etc/letsencrypt/ && ./certbot-auto renew && /etc/init.d/apache2 restart

こんな感じ。
それでは!