経緯
Firefox で Google を開こうとしたところ、次のエラーが表示されてしまったので対処法をメモ。
安全な接続ができませんでした
example.jp への接続中にエラーが発生しました。SSL peer was not expecting a handshake message it received.
エラーコード: SSL_ERROR_HANDSHAKE_UNEXPECTED_ALERT
受信したデータの真正性を検証できなかったため、このページは表示できませんでした。
この問題をウェブサイトの管理者に連絡してください。
上のメッセージは example.jp
としていますが、今回のケースではここが www.google.com
だったわけです。 Google を表示しようとしただけなのですが……。
ちなみに、 Chrome 等の他のブラウザでは開くことができました。
原因
端的に言うと、 Firefox の OCSP Stapling でエラーが発生していることが原因のようです。
順番に追っていくと、まず、 Firefox は Webサイトを開く際に、そのサーバにインストールされているSSLサーバ証明書の状態をオンラインで検証しています。
検証のためのプロトコルが OCSP(Online Certificate Status Protocol) ですね。
OCSP では上述の通りSSLサーバ証明書が失効していないか検証するため、閲覧するWebサイト以外に 認証局(CA / Certificate Authority) の OCSPレスポンダー にリクエストを投げます。
しかし、 OCSPレスポンダー へ通信できなかった場合にはSSLサーバ証明書の状態が検証できなかったり、閲覧しようとするWebサイト以外に通信しているというためプライバシー的な課題もあります。
そこで、SSLサーバ証明書がインストールされているWebサーバと OCSPレスポンダー が通信を行い、その結果のキャッシュをSSLサーバ証明書と共にクライアント(ブラウザ等)に返却する、という風にすることでブラウザは OCSPレスポンダー と通信せずに検証を行うことができます。
この仕組みを OCSP Stapling (staple / ホッチキスで止めるの意) と言います。
Firefox のこの OCSP Stapling の機能が上手く働かないことが、今回の現象が原因のようです。
対処
Firefox での対処としては、先の OCSP Stapling の機能を無効化することでWebサイトを開くことができるようになります。
ただし、セキュリティ機能をオフにする、ということなので、例えば本来はOCSPの検証で失敗してエラーになるはずのフィッシングサイト等も普通に開けてしまう、といった副作用が考えられるため、あまりオススメはできません。
どうしても、という場合以外は他のブラウザで閲覧する、といった回避策を取った方が良いと個人的には感じました。
その上で一応 Firefox の OCSP Stapling を無効化する方法を以下に記します。
まず Firefox のアドレスバーに about:config
と入力してエンター。
警告が表示されますが進みます。
設定変更画面が表示されるので「ocsp」と入力してパラメータを検索します。
検索結果の中にある security.SSL.enable_ocsp_must_staple
のパラメータの true
の部分をダブルクリックして false
にします(これで「必ず検証する」をオフにする)。
これで Google を開くことができました。
閲覧後は先のパラメータを true
に戻しておくと良いと思います。
参考
Firefox のエラー対処
- 【Firefox】エラー『安全な接続ができませんでした』を回避する | パソコン修理のエヌシステムBLOG
- 【Firefox】Microsoft系サイトが開けないエラー「MOZILLA_PKIX_ERROR_OCSP_RESPONSE_FOR_CERT_MISSING」が発生中
- MicrosoftのWebサイトを「Firefox」で開けない現象が発生中 – 窓の杜