先日、SSL化されているサイトをサイト移転した時に、プライバシーエラーが発生するトラブルにあいました。
その時のサイト移転の手順は、ネームサーバーを切り替えないで事前にSSL化を済ませ、hostsファイルで正常にサイトが表示できるところまで確認後、ネームサーバーを切り替える、という流れで行いました。
サイト移転の最後に、ネームサーバーを切り替えると、プライバシーエラーが出るようになりました。hostsファイルでIPアドレスとドメインの名前解決している時は正常に表示されます。
今回、hostsファイルでSSLが問題ないのに、ネームサーバーを切り替えるとプライバシーエラーが出る件についてまとめておきたいと思います。
なぜプライバシーエラーが出るのか?
プライバシーエラーが出るのは、SSL証明書を取得したドメインと独自ドメインが一致しない場合です。
プライバシーエラーが出る詳しい条件
プライバシーエラーが出る条件を詳しく書くと、
①独自ドメイン名、②独自ドメインを割り当てたサーバのIPアドレス、③その組み合わせでSSL証明書を取得、という3点セットが揃わないとプライバシーエラーになります。
例えば、移転元でSSL化してあるのに、移転先でもSSL化が必要となる理由も上記の条件に当てはめれば、移転前後で②が違うことで、新規に③を取得しないといけないからです。
ドメイン+サーバーをSSL化していない
単純にドメイン+サーバーがSSL化されていない状態で、httpsでアクセスするとレンタルサーバーのSSL証明書が参照されます。証明書のドメインが独自ドメインと一致しなくなります。
そもそも、③のSSL証明書が無いのでSSL化すれば解消します。
ドメイン+サーバーをSSL化しているのにプライバシーエラーが出る
この現象が起きたのは、hostsファイルだとプライバシーエラーが出ないのに、ネームサーバーを切り替えるとプライバシーエラーが出たという時でした。
ローカルのhostsとネームサーバーの違いでプライバシーエラーが起きるので、名前解決に問題がありそうだというところまでは推測できました。ネームサーバーに問題がある結果なので、ネームサーバーのドメインの名前解決が間違っていることしか考えられません。
そんなことがある?と悩みました。しかし、原因は恐ろしく単純でした。
DNSゾーンのAレコードが間違っていた
DNSゾーンのAレコードがサーバーIPと異なっていました。つまり、ドメインの名前解決で参照されるIPアドレスがレンタルサーバーになっていませんでした。
この単純な問題に気が付くのに結構時間がかかりました。
プライバシーエラーが出ている時はそもそもサイトが表示されないのでどのサイトに接続しているのか分からないからです。
①独自ドメイン名、②独自ドメインを割り当てたサーバのIPアドレス、③その組み合わせでSSL証明書を取得、という3点セットが揃わないとプライバシーエラーになります。
上記に当てはめると、SSL証明書を取得した時と、①+②の組合せが違うのでSSL証明書が存在しないことになりプライバシーエラーが出ていたことになります。
プライバシーエラーが無くても、IPアドレスが違うので違うサイトにアクセスしているという致命的な問題があります。
なぜAレコードが間違ったのか?
ダウンタイム無くSSL化する方法として、移転先のAレコードを移転元のIPアドレスに書き換える方法があります。
今回、上記の方法が使えるConoha wingへの移転だったので、Aレコードを移転元のIPアドレスに書き換えてSSL化しました。最終的にAレコードを元のIPアドレスに書き戻す必要がありましたが、書き戻す時に間違ったIPアドレスを書き込んだため、今回のプライバシーエラーになりました。
しかし、hostsファイルには正しいIPアドレスが書き込まれていたため、正常に表示されていました。
最近はSSLサイトの移転が多いので、ダウンタイムを無くすためにDNSゾーンを書き換えることも多いと思うので、このようなミスが起きやすいです。
プライバシーエラー時に確認した方が良いこと
繰り返しになりますが、プライバシーエラーが出る場合、SSL証明書を取得した時の①独自ドメイン名、②独自ドメインを割り当てたサーバのIPアドレスの組合せが違う可能性を調べます。
①独自ドメイン名、②独自ドメインを割り当てたサーバのIPアドレス、③その組み合わせでSSL証明書を取得、という3点セットが揃わないとプライバシーエラーになります。
ネームサーバーのAレコードを確認
ネームサーバーのAレコードは、以下のサイトで確認できます。
サーバーのIPアドレスを確認
サーバーのIPアドレスは、レンタルサーバーのコントロールパネルから確認できると思います。ロリポップなどサーバーIPを公開していない場合は、初期ドメインのサイトのIPアドレスを調べればわかると思います。
ネームサーバーのAレコードとサーバーIPの一致を確認
ネームサーバーのAレコードとサーバーのIPアドレスが一致していれば、最低でもSSL証明書は正しく参照されているので、残念ながら今回の件とは別の問題になります。
もし、ネームサーバーのAレコードとサーバーのIPアドレスが一致してない場合、ネームサーバーのAレコードの修正が必要です。修正すればSSL証明書は正しく参照され、プライバシーエラーはでなくなります。
まとめ
Conoha wingなどのダウンタイム無しSSLサイト移転の時など、DNSゾーンのAレコードを書き換えることがありますので、今回の様な現象が起きやすいです。
関係ない人には全く役に立たない内容ですが、個人的にドハマりしたポイントなのでまとめてみました。