本シリーズ『【初心者向け】GCPでWordPressブログサイトを構築する』の第3回にて、GCPのロードバランサーを使用してブログサイトをHTTPS化しました。
ですが、『【初心者向け】料金計算ツールでGCPの費用を見積もってみよう』でも記載した通り、GCPのロードバランサーを使用した場合、GCPの利用料金が最低でも毎月2,500円(2023年6月現在)ほどかかります。
そのため、ロードバランサーを使用せず、サーバ自体でHTTPSを処理できるようにすれば、GCPの使用料を下げることが可能です。
今回は、WordPressサーバにSSL/TLSサーバ証明書を組み込んで、ロードバランサーを使用せずにブログサイトをHTTPS化する方法を解説します。
GCP仮想マシンの設定変更
まずはロードバランサーなしで直接WordPress仮想マシンがHTTP/HTTPSのトラフィックを受けられるようします。
HTTP/HTTPSのトラフィックを許可
GCPのコンソールにて、左上メニューから『Compute Engine』を選択し、WordPress仮想マシンの名前をクリックします。
上部メニューから『編集』をクリックして設定の編集画面を開きます。
『ネットワーキング』セクションにある『Allow HTTP traffic』と『Allow HTTPS traffic』にチェックを入れ、『保存』ボタンをクリックします。
静的外部IPアドレスの割り当て
続いて、仮想マシンに固定のグローバルIPアドレスを割り当てます。
GCPのコンソールにて、左上メニューから『VPCネットワーク > IPアドレス』を選択します。
現在使用されているIPアドレスが表示されます。
上部メニューの『RESERVE EXTERNAL STATIC IP ADDRESS』をクリックします。
『静的アドレスの予約』画面が開きます。
各項目を以下のように設定します。
設定項目 | 設定内容 |
---|---|
名前 | IPアドレスを管理するための名前を入力します。ここでは”static-ip-address-1″とします。 |
ネットワークサービスティア | スタンダードに変更します。※より高品質なネットワークを使用したい場合はプレミアムでも良いのですが、今回は費用を最小限にしたいのでスタンダードを選択します。 |
IPバージョン | IPv4のままにします ※スタンダードティアの場合はIPv4のみが使用可 |
リージョン | 仮想マシンが稼働しているリージョンを選択します。 ここでは”us-west1(オレゴン)”を選択します。 |
接続先 | IPアドレスを割り当てるWordPress仮想マシン名を選択します。 |
入力が完了したら『予約』をクリックします。
静的IPアドレスが作成されました。
仮想マシンの設定も見てみます。
作成したIPアドレスが割り当てられています。
以上でGCPの設定は完了です。
ドメインとIPアドレスの紐づけ変更
Google Domainsのカスタムレコードの設定を、先ほど作成したグローバルIPアドレスに変更します。
DNSレコードの反映には、最大でAレコードのTTLの秒数だけかかりますので、しばらく時間をおいてからアクセスしてみましょう。
Webブラウザから先ほど作成したIPアドレスとドメイン名でアクセスしてみて、あなたのブログサイトが表示できていればOKです。
※この段階ではまだHTTPのみでアクセス可能です。
SSL/TLS証明書の発行とサーバへの組み込み
SSL/TLS証明書を発行し、WordPress仮想マシンにサーバに組み込みます。
無償で使用可能なSSL/TLS証明書の発行方法として最もメジャーなのは、非営利団体の Internet Security Research Group (ISRG)が運営している『Let’s Encrypt』というサービスを利用することです。
ですが、今回はGoogle Domainsで独自ドメインを取得していることもあり、Googleが提供しているサービスである『Google Trust Services』を使用します。
Google Domainsから証明書発行用のキーを取得
Google Domains にログインして、証明書を適用するドメインを選択します。
メニューから『セキュリティ』 をクリックします。
『ドメインの SSL/TLS 証明書』セクションの 『Google Trust Services』を展開して、『EAB キーを取得』をクリックします。
『EAB キー ID』 と 『EAB HMAC キー』 の 2 つの値が表示されたダイアログが開きます。
それぞれの値の横にあるコピーボタンをクリックして値をコピーし、メモ帳などに控えておきます。
Certbotを使用して証明書を発行する
GCPコンソールにてWordPress仮想マシンに『SSH』で接続します。
SSHコンソールが開きます。
“Certbot”をインストール
以下のコマンドを実行してACMEクライアントであるCertbotをインストールします。
sudo apt -y install certbot python3-certbot-apache
Google Trust Servicesにアカウントを登録
次のコマンドを実行します。
[CONTACT_EMAIL]には管理者(あなた)のメールアドレスを入力してください。
[EAB_KEY_ID]と[EAB_HMAC_KEY]には、前の手順で控えておいた[EAB キー ID]と[EAB HMAC キー]を入力します。
certbot register --email [CONTACT_EMAIL] --no-eff-email --server "https://dv.acme-v02.api.pki.goog/directory" --eab-kid "[EAB_KEY_ID]" --eab-hmac-key "[EAB_HMAC_KEY]"
Saving debug log to /var/log/letsencrypt/letsencrypt.log
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at https://pki.goog/GTS-SA.pdf. You must agree
in order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y ←アカウントを登録するか確認されるので"Y"を入力してEnter
Account registered.
Google Trust Servicesにアカウントが登録されました。
SSL/TLS証明書の発行
Certobotを使用してSSL/TLS証明書を発行します。
このとき、Certobotがポート80番を使用するので、いったんApache HTTPDを停止します。
以下のコマンドを実行します。
sudo systemctl stop apache2
続いて証明書を発行します。
以下のコマンドを実行します。
sudo certbot -d [YOUR_DOMAIN] --server "https://dv.acme-v02.api.pki.goog/directory" --apache
[YOUR_DOMAIN]にはブログサイトのドメイン名を入力します。
Congratulations! You have successfully enabled https://[YOUR_DOMAIN]
と表示されていれば成功です。
Apache HTTPDを起動しておきます。
以下のコマンドを実行します。
sudo systemctl start apache2
これでWordPress仮想マシンのHTTPS化が完了しました。
Webブラウザにて https://[ドメイン名]/ にアクセスして、HTTPSでアクセスできるようになっていることを確認しましょう。
SSL/TLS証明書の更新について
今回発行したSSL/TLS証明書の有効期限は3カ月間となっています。
Certbotを使用して発行した場合、自動的に更新される仕組みになっていますので、定期的に更新手続きをする必要はありません。
念のため、自動更新が有効になっているか見てみましょう。
発行された証明書の情報を確認
$ sudo certbot certificates
Saving debug log to /var/log/letsencrypt/letsencrypt.log
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Found the following certs:
Certificate Name: your-domain.net
Serial Number: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Key Type: RSA
Domains: your-domain.net
Expiry Date: 20xx-xx-xx 08:28:42+00:00 (VALID: 89 days)
Certificate Path: /etc/letsencrypt/live/your-domain.net/fullchain.pem
Private Key Path: /etc/letsencrypt/live/your-domain.net/privkey.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
更新処理の次回実行時刻を確認
$ sudo systemctl list-timers certbot.timer
NEXT LEFT LAST PASSED UNIT ACTIVATES
Tue 20xx-xx-xx 14:22:25 UTC 4h 39min left n/a n/a certbot.timer certbot.service
ロードバランサーの削除
本シリーズ『【初心者向け】GCPでWordPressブログサイトを構築する』の第3回で、GCPのロードバランサーを使用してHTTPS化した場合は、ロードバランサーが不要になりましたので削除してしまいます。
GCPのコンソールを開き、『ネットワークサービス > ロードバランシング』にアクセスします。
削除するロードバランサーを選択し、画面上部の『削除』をクリックします。
ロードバランサー作成時に一緒に作成した各リソースも不要ですので一緒に削除します。
それぞれチェックを入れて、『ロードバランサと選択したリソースを削除』をクリックします。
※ここでのSSL証明書は、今回作成したSSL証明書ではなく、ロードバランサー作成時に作成したものですので削除しても問題ありません。
1-2分程度で削除が完了します。
おわりに
いかがでしたでしょうか。
GCPでWordPressブログサイトを構築する場合、HTTPS化の方法として
1.ロードバランサーでHTTPSを処理する
2.WordPressサーバ自体でHTTPSを処理する
という2つの方法があり、今回は2の方法について解説しました。
将来的にブログのPV数が多くなった場合など、ロードバランサー経由での構成のほうがメリットが出てくる可能性もあります。しかし、できるだけ費用をかけずに小さく始めたい場合は、今回解説した方法でHTTPS化を行う方法を推奨します。