GCEのHTTPS化

1.CertBotをインストール

CertBotとは、Let’s Encryptが提供しているクライアントソフトウェア。

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

画像1

2.証明書の発行

CertBotで証明書を作成。

./certbot-auto certonly --webroot -w /var/www/html/ -d ドメイン名

アップデートの確認をされるので、「Y」

画像2

通知用のメールアドレスを入力

画像3

規約の同意を求められるので「A」

画像4

Electronic Frontier Foundationとメールアドレスを共有してよいか?

OKな場合、「Y」、ダメな場合、「N」

画像5

証明書完成!

赤枠で囲った部分が作成された証明書のパス

画像7

3.証明書の反映

証明書を反映させるため、default-ssl.confを編集

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

まず、HTTPSでの通信設定として、ファイルの先頭に下記の設定を追記

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

画像7

証明書設定のため、既存設定値のコメントアウト(「#」を行の先頭に記載)と作成された証明書のパスを設定

SSLCertificateFile /etc/letsencrypt/live/自分のドメイン名/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/自分のドメイン名/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/自分のドメイン名/chain.pem

画像8

4.HTTPをHTTPSへリダイレクトさせる設定

Apacheの設定ファイル(wordpress.conf)を編集

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

規定値を削除後、転送設定を記載

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

ServerName 自分のドメイン名
ServerAlias 自分のドメイン名

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

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

画像13

5.Apacheの設定更新と再起動

下記のコマンドを実行

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

画像10

6.証明書の自動更新設定

Let’s Encryptの有効期限は3ヵ月となっているので、証明書が切れる前に自動更新するよう設定

certbotパッケージをletsencryptディレクトリに移動

sudo mv certbot-auto /etc/letsencrypt/

移動されたか確認

ls -la /etc/letsencrypt/

画像11

移動はされたが、ファイルの所有者・グループが異なるため、変更

sudo chown -R root.root /etc/letsencrypt/certbot-auto

再度、確認

ls -la /etc/letsencrypt/

画像12

自動更新の設定を行うため、crontabを編集

sudo crontab -e

スクリプトを記載し、CTRL + X、Y、Enterの順に押して、crontabファイルを保存

※スクリプトの意味は、「毎週日曜日の3:45に証明書の更新チェック・更新を行い、Apacheを再起動」

45 3 * * 0 /etc/letsencrypt/certbot-auto renew && systemctl restart apache2

画像13

HTTPS化の設定完了!


この記事が気に入ったらサポートをしてみませんか?