120

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 webmaster@localhost
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

こんな感じ。

参考:GCPで作成したWordpressのSSL対応

それでは!

白戸
  • 白戸
  • 2019年現在、32歳。元女社長で、今はフリーランスのブロガー兼SE。
    アプリ作成・システム構築みたいにモノ作りもやるし、ITコンサルみたいなアドバイザーもやってます。ブログもこの通り、時々更新してます。
    <経歴>
    早稲田理工の新卒で某ITコンサル会社に入社。でも6年で鬱になって退職。個人事業主として起業し、28歳でフリーランス生活が始まる。
    ITから離れたくて小説家を目指すも1年で挫折。その後、株式会社を立ち上げてビジネス始めようとしたけど軌道にのらないのでいまは休眠中。
    フリーランス活動しながら、裏でシコシコ次のビジネスを立ち上げ中w
    あ、あと、彼氏募集中!(←強調

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です