Amazon LightsailのWordPressインスタンスで HTTPS を有効にしたいとき、こちらに基づいて設定すれば無償でしかも定期的に証明書を自動更新してくれるので便利なのだが、設定時にトラブったのでメモしておきます。
前提条件
- Amazon LightsailのWordPressインスタンス を利用している。
- このインスタンスのHTTPSを有効にしたい。
- DNS ゾーンにレコードを追加済み(こちらのステップ3)。
- HTTPS を有効にする手順(こちらのステップ5)の sudo /opt/bitnami/bncert-tool を実行した。
- Warning: The domain ‘<ドメイン名>’ resolves to a different IP address … が出て進まない。
- 2021年6月10日時点の最新の bncert-tool を利用した場合。
bncert-toolの実行例
Amazon LightsailのWordPressインスタンスで HTTPS を有効にする のステップ5まで進め、指示に従い、sudo /opt/bitnami/bncert-tool を実行したとき次のように進まなくなることがある。
$ sudo /opt/bitnami/bncert-tool
----------------------------------------------------------------------------
Welcome to the Bitnami HTTPS Configuration tool.
----------------------------------------------------------------------------
Domains
Please provide a valid space-separated list of domains for which you wish to
configure your web server.
Domain list []: <ドメイン名> www.<ドメイン名>
Warning: The domain '<ドメイン名>' resolves to a different IP address than the
one detected for this machine, which is 'nnn.nnn.nnn.nnn'. Please fix its DNS
entries or remove it. For more info see:
https://docs.bitnami.com/general/faq/configuration/configure-custom-domain/
<ドメイン名>のアドレス解決とIPアドレス(nnn.nnn.nnn.nnn(=IPv4形式))が一致しないとのこと。
<ドメイン名>がどうアドレス解決されているのか ping コマンドで確認してみます。
ping www.<ドメイン名>
PING www.<ドメイン名>(xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx (xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx)) 56 data bytes
: [Ctrl]+[C]で抜ける
IPアドレスは xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx のIPv6形式で解決されていました。
IPv4形式のアドレス解決はできないのか ping コマンドに -4 オプションを指定して明示的にIPv4解決をやってみます。
$ ping -4 www.<ドメイン名>
PING <ドメイン名> (nnn.nnn.nnn.nnn) 56(84) bytes of data.
: [Ctrl]+[C]で抜ける
IPv4形式で<ドメイン名>のアドレス解決ができることは確認できました。
つまり、現時点の bncert-tool の<ドメイン名>のアドレス解決は、デフォルト形式(IPv6形式が優先)で解決してしまう実装のため、IPv4形式との一致に失敗してしまいます。
DNS ゾーンのレコード設定を確認する
Lightsailの DNSゾーンのレコード設定を確認します。
Lightsailのネットワーキング画面を開きます。
[グローバル]-[DNSゾーン]の部分の <ドメイン名> の部分をクリックして各ドメインのDNSゾーンの設定画面を開きます。
Aのレコード(IPv4)および、AAAAのレコード(IPv6)共にサブドメインを @.<ドメイン名>に設定してあります。
これは、クライアントの通信環境に応じて、IPv4とIPv6の都合が良い方のどらちでも繋がることを目的として同じサブドメインに設定していたのでが、bncert-toolの実行においては、裏目に出てしまいました。
DNS ゾーンのレコード設定を変更する
AAAAのレコード(IPv6)のサブドメインを変更またや削除する必要があります。
ここでは、@.<ドメイン名>から ipv6.<ドメイン名> に変更します。(変更方法は省略)
変更が適用されたか確認します。
$ ping www.<ドメイン名>
PING <ドメイン名> (nnn.nnn.nnn.nnn) 56(84) bytes of data.
: [Ctrl]+[C]で抜ける
www.<ドメイン名> が nnn.nnn.nnn.nnn のIPv4形式でアドレス解決していることが確認できました。
$ ping ipv6.<ドメイン名>
PING ipv6.<ドメイン名>(xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx (xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx)) 56 data bytes
: [Ctrl]+[C]で抜ける
ipv6.<ドメイン名> が xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx のIPv6形式でアドレス解決していることも確認できました。
これで、www.<ドメイン名> がIPv6形式でアドレス解決されることはありません。
再度、Amazon LightsailのWordPressインスタンスで HTTPS を有効にする のステップ5の sudo /opt/bitnami/bncert-tool を実行して、作業をすれば次に進めます。
なお、HTTPS化が終われば、AAAAレコードのサブドメインを元の @.<ドメイン名> に戻しても大丈夫です。
ただし、証明書の有効期限が90日で自動更新が実行され、そのときに失敗する可能性があります。(現時点ではまだ設定してから90日たってないため未確認)
このときは、再度AAAAレコードの変更や削除が必要かもしれません。
こればかりは、bitnami(bncert-tool)側の対応を待つしかありません。
コメント