23
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

GCPで作成したWordpressのSSL対応

はじめに

GCPで作成したWordpressにSSLの設定を行った際の手順を記します。

前提

手順

VMインスタンスのHTTPSトラフィックを許可する

まず、VMインスタンスに対してファイアウォールの設定を行います。

edit-instance.png

ComputeEngine - VMインスタンス から対象のインスタンスを選択し、編集をクリックします。

allow-https.png

ファイアウォールから HTTPSトラフィックを許可する をチェックして保存します。

SSH接続

open-ssh.png

続いて、SSH接続を行います。
VMインスタンスの「SSH」をクリックして、別ウィンドウでSSH画面が起動するのを待ちます。

CertBotのインストール

wget https://dl.eff.org/certbot-auto && chmod a+x certbot-auto

certbotをインストールします。

証明書の作成

./certbot-auto certonly --webroot -w /var/www/html/ -d yourdomain.com

証明書を作成します。
yourdomain.com のところは適宜変更してください。

証明書の設定

証明書の設定を行います。
まず、default-ssl.conf ファイルを開きます。

sudo vim /etc/apache2/sites-available/default-ssl.conf

ssl-tutorial-sym.png

default-ssl.confファイルの先頭に、ネットワークトラフィックをHTTPSポート443に転送するようにサーバーに指示するために、次のコード行を貼り付けます。

<Directory /var/www/html/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>

ssl-certificate-setup-wordpress-google-cloud-click-to-deploy-image-10.png

次は、default-ssl.confファイルをスクロールして、既存のSnakeoil証明書の横に#記号を配置し、以下のコマンドに示すように3つのSSL証明書ファイルへのパスを貼り付けます。
必ず、yourdomain.comを自分のドメイン名に置き換えてください。

SSLCertificateFile "/etc/letsencrypt/live/yourdomain.com/cert.pem"
SSLCertificateKeyFile "/etc/letsencrypt/live/yourdomain.com/privkey.pem"
SSLCertificateChainFile "/etc/letsencrypt/live/yourdomain.com/chain.pem"

リダイレクトを有効化する

まず、wordpress.conf を開きます。

sudo vim /etc/apache2/sites-available/wordpress.conf

wordpress-conf-configuration-2.png

wordpress.confファイル内で、ファイルの先頭にある既存の3行のコードを削除します。次に、以下のコードをコピーしてファイルに貼り付けます。yourdomain.comは自分のドメイン名に置き換えてください。

<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html

ServerName yourdomain.com
Redirect permanent / https://yourdomain.com/

<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>

Apacheサーバーの再起動

sudo a2ensite default-ssl
sudo a2enmod ssl
sudo service apache2 restart

Apacheサーバーを更新/再起動して、証明書の変更を有効にします。

確認

ss -lnt
State       Recv-Q Send-Q                            Local Address:Port                                           Peer Address:Port              
LISTEN      0      80                                    127.0.0.1:3306                                                      *:*                  
LISTEN      0      128                                           *:22                                                        *:*                  
LISTEN      0      128                                          :::80                                                       :::*                  
LISTEN      0      128                                          :::22                                                       :::*                  
LISTEN      0      128                                          :::443                                                      :::*  

443ポートが空いていればSSLが有効化されています。

Wordpress URLの更新

https.png

httpsのアドレスでアクセスしたとき、ページが表示されています。

wpaddress.png
管理画面から、WordPressアドレスとサイトアドレスをhttpsに変更します。

SSLの自動更新の設定

SSL証明書を自動的に更新しますか?次の手順では、SSL証明書の自動更新を設定する方法を学びます。それでは始めましょう。

自動更新を設定する最初のステップは、mvコマンドを使用してcertbotパッケージをletsencryptディレクトリに移動することです。

sudo mv certbot-auto /etc/letsencrypt/

cronの設定

certbot-Autoパッケージを/etc/letsencrypt/ディレクトリに移動したので、次のステップはcrontabファイルを開くことです。 crontabファイルを開くには、次のコマンドを実行します。

sudo crontab -e

crontabファイルの一番下に、証明書の更新を週に1回チェックし、期限切れになると自動的に証明書を更新するようにサーバーに指示するスクリプトを入力します。

45 2 * * 6 cd /etc/letsencrypt/ && ./certbot-auto renew && /etc/init.d/apache2 restart

参考

GoogleクラウドでのWordPress用の無料SSL証明書の設定
Webブラウザに「このサイトにアクセスできない」というエラーが表示されます

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
23
Help us understand the problem. What are the problem?