前回のフェーズでは、「Wordpres のアップロード上限の変更とBitnami のバナー非表示」を行いました。
今回は「SSL 証明書を発行しhttps 化」「リダイレクト設定」するために次を行います。
- Let’s Encrypt でSSL 証明書を発行。
- http アクセスをhttps へのリダイレクト。
- メインドメインをサブドメインにリダイレクト。
この時点でもWebサイト としての運用が行えますが、常時http になってしまい、ユーザーに警告メッセージが表示されてしまいます。また、SEO的にもhttp のままは悪影響を与えます。
https化(SSL化)を行うには、VM インスタンスにSSL 証明書を発行する必要があります。
SSL 証明書を発行するには主に次の方法があります。
- サーバにSSL 証明書を発行する。
- ネットワークからSSL 証明書を提供してもらう。
ここでは、VM インスタンスにLet’s Encrypt を使ってSSL 証明書を発行します。
Let’s Encrypt でSSL 証明書の発行
Let’s Encrypt を使用してVM インスタンスでSSL 証明書を発行します。通称、https化やSSL化と言われています。
Let’s Encrypt はドメイン認証(DNS 認証)を行うため、DNS 設定を最初に行う必要があります。DNS 設定が完了していない場合は先にDNS 設定を行ってください
VMインスタンス にSSH 接続を行い、ターミナルを起動させます。

NGINX を停止するために次のコマンドを入力します。
sudo /opt/bitnami/ctlscript.sh stop nginx
Let’s Encrypt のSSL 証明書を発行するために次のコマンドの一部を変更して入力します。
sudo /opt/bitnami/letsencrypt/scripts/generate-certificate.sh -m EMAIL-ADDRESS -d YOURDOMAIN -d www.YOURDOMAIN
- EMAIL-ADDRESS:メールアドレス。
- DOMAIN:ドメイン。
- サブドメインを含め複数のドメインをSSL化を行う場合は、続けて「d=”www.DOMAIN”」と記述。

このVM インスタンスで使用するnippotea.com とsubdomain.nippotea.com のSSL 証明書を生成します。
上記のコマンドを実行すると3回の承認確認が尋ねられるので「y」を入力します。



エラーが起きず、SSL 証明書を発行したら、
NGINX を再起動するために次のコマンドを入力します。
sudo /opt/bitnami/ctlscript.sh restart nginx

ブラウザの検索バーに「https://nippotea.com/」 と「https://subdomain.nippotea.com/」を入力し、https 接続ができることを確認します。
エラーについて
発行時にエラーが発生する場合はあります。
主な理由は次になります。
- ドメイン認証ができなかった。
- 何度も証明書の発行した。
1.ドメイン認証ができなかった
Let’s Encrypt はドメイン 認証を行い、SSL 証明書を発行しています。
DNS 設定を最初に行う必要があります。
この場合のエラーは「error: 400」と表示され、以下のメッセージで返ってきます。
Could not obtain certificates:
acme: Error -> One or more domains had a problem:
[nippotea.com] acme: error: 400 :: urn:ietf:params:acme:error:dns :: No valid IP addresses found for nippotea.com,
url:
[subdomin.nippotea.com] acme: error: 400 :: urn:ietf:params:acme:error:dns :: DNS problem: NXDOMAIN looking up A fo
r subdomin.nippotea.com - check that a DNS record exists for this domain, url:
Error: Something went wrong when running the following command:

DNS 設定が正しくできておらず、検索バー「http://nippotea.com/」を入力してもサイトが表示されていないはずです。
「【ドメイン設定 編】IPアドレスの固定化&Google Domains でドメイン設定」を参考にしながら、DNS 設定を行ってください。
※利用しているDNS サービスによって設定方法が異なります。その公式ドキュメントをご覧ください。
2.何度も証明書の発行をした
単一のドメインでの証明書 発行は、1週間に5 回までに制限が設けられています。それ以降の証明書 発行の複製の制限対象となり、発行ができません。
この場合のエラーは「error: 429」 と表示され、以下のメッセージで返ってきます。
acme: error: 429 :: POST :: https://acme-v02.api.letsencrypt.org/acme/new-order :: urn:ietf:params:acme:error:rateLimited :: Error creating new order :: too many certificates already issued for exact set of domains: 4watcher365.dev,googlecloud.4watcher365.dev: see https://letsencrypt.org/docs/rate-limits/, url:
エラーメッセージの意味は「ドメインの正確なセットに対してすでに発行されている証明書が多すぎます」。SSL 証明書の発行制限の対象となっています。

発行制限をリセットする方法はないため、制限がかかった場合は制限がかかった日から1週間を待たなければなりません。
このエラーの詳細は「Let’s Encryptの証明書の発行制限&発行数の確認」をご覧ください。
http をhttpsへリダイレクト設定
http://〜〜 でアクセスされた場合に、https://〜〜 へのリダイレクトを行います。
VMインスタンス のSSH 接続を行い、ターミナルを起動させます。
bitnami.conf ファイルを編集するために次のコマンドを入力します。
sudo vim /opt/bitnami/nginx/conf/bitnami/bitnami.conf

キー「a」を押し、インサイト モードに変更します。
#http server のServer 内に、https でのアクセスをhttps に301 リダイレクト(恒久的な転送)させるために次のコードを適当な箇所に記述します。
return 301 https://$host$request_uri;

キー「Esc」を押し、ノーマルモードに変更します。
「:wq」で上書き保存を行いファイルを閉じます。
NGINX 設定ファイルを再読み込みするために、次のコマンドを入力します。
sudo nginx -s reload

「http://nippotea.com/」を入力し、「https://nippotea.com/」 にリダイレクトされていることを確認します。
WordPress のURLを変更
上記のステップでは、http を https へのリダイレクト設定を行いました。
しかし、WordPress の設定ではhttp のままになっています。
この状態で記事を投稿や画像をアップロードするとWordPress 内でエラーが起きる可能性があります。
そのため、WordPress アドレスをhttps に変更します。
WordPress 管理コンソールにログインし、「設定画面」を開きます。WordPress アドレス (URL) とサイトアドレス (URL)が、http://〜〜 担っているのを確認します。

wp-config.php を編集するために次のコマンドを入力します。
sudo vim /opt/bitnami/apps/wordpress/htdocs/wp-config.php

次の箇所を探し、「http」から「https」へ変更します。
define(‘WP_SITEURL’, ‘https://’ . $_SERVER[‘HTTP_HOST’] . ‘/’);
define(‘WP_HOME’, ‘https://’ . $_SERVER[‘HTTP_HOST’] . ‘/’);

「Esc」キーを押し、ノーマルモードに変更します。
「:wq」で上書き保存を行いファイルを閉じます。
NGINX 設定ファイルを再読み込みするために次のコマンドを入力します。
sudo nginx -s reload
WordPress 管理コンソールにログインし、「設定画面」を開きます。
WordPress アドレス (URL) とサイトアドレス (URL) が「https://~~」に変更された事を確認します。

指定ドメインへリダイレクト
このWebサイトはnippotea.com を使用せず、サブドメイン「subdomain.nippotea.com」で運用したいと思います。
そのため、nippotea.comやIP アドレスでアクセスされた場合は、subdomain.nippotea.com に自動的に飛ぶリダイレクト設定を行います。
VMインスタンス のSSH 接続を行い、ターミナルを起動させます。
bitnami.conf ファイルを編集するために次のコマンドを入力します。
sudo vim /opt/bitnami/nginx/conf/bitnami/bitnami.conf

「/」キーを押し、インサイトモードに変更します。
#https server のserver 内に次のコードを適当な箇所に記述します。
if ($host != "www.YOURDOMAIN") {
return 301 https://www.YOURDOMAIN$request_uri;
}

「Esc」キーを押し、ノーマルモードに変更し、「:wq」で上書き保存を行いファイルを閉じます。
NGINX 設定ファイルを再読み込みするために次のコマンドを入力します。
sudo nginx -s reload
ブラウザの検索バー「https://nippotea.com/」を入力し、 「https://subdomain.nippotea.com/」にリダイレクトされている事を確認します。また、配下のページも同様にディレクトリを保持したままリダイレクトされてるか確認します。
以上で「SSL 証明書の発行」「リダイレクト設定」は完了となります。
次のフェーズでは、「Cloudflare のCDNを利用してWebサイトを高速表示化」を行います。
まとめ
Google は、2015年ごろからhttps 接続を推奨しており、「http 接続=保護されていない通信」として定めています。
近年は、https が通常化しているのでブログ サイトであってもhttps化しておくことをおすすめします。
全記事
- 【概要 編】無料を目指してGCPでWordPress 環境構築
- 【WordPress構築 編】GCP でWordPress をクリック操作のみでデプロイ
- 【ドメイン設定 編】IPアドレスの固定化&Google Domains でドメイン設定
- 【WordPresss設定 編】WordPressのアップロード上限を変更&Bitnami バナーの削除
- 今ココ→【https化 編】SSL 証明書の発行とリダイレクトの設定
- 【Cloudflare設定 編】Webサイトの表示速度を高速化
- 【WP-Stateless設定 編】WordPres の画像をGoogle Clould Storage へ移行/バックアップ
後日 編
こんにちは。
ここのサイトの解説を参考にして、無事Wordpressをデプロイする事が出来ました。
有難うございます。
ところで、SSL化の部分だけちょっとよく分からなかったので、以下の公式サイトを参考にしました。
https://docs.bitnami.com/google/how-to/generate-install-lets-encrypt-ssl/#alternative-approach
直接シェルスクリプトを使うだけで必要な設定が行われるのかどうか不安があったんですね。
私もよく理解してないですが、上記の指示の通りに行えば上手くいきましたので、参考にならないでしょうか。