
私は、CentOS 7(Diladeleアプライアンス)上でSquid 3.5.10を実行している企業ウェブプロキシを管理しており、SSLバンピングを行っていますが、システムの信頼ストアに新しいCA証明書を追加するのに問題があり、ユーザーがSSLで保護されたいくつかのサイトにアクセスできなくなっています。それらのサイトの1つはhttps://www.sexierdating.com/(確かにその通りですが、合法である限り、昼休みに人々が何をサーフィンしようと気にしないというのが私たちのポリシーです)。
Squid からのエラー メッセージは通常の でX509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY
、これは何らかの理由で Squid が宛先サーバーの証明書を信頼していないか、検証できないことを意味します。これまでは、CA のサポート ページから PEM 形式の CA ルート証明書を取得し、 に入れてSquid を/etc/pki/ca-trust/source/anchors
実行しupdate-ca-trust
、再起動することで問題を解決できましたが、今回のケースではそうではありませんでした。マシン上で yum update 全体を実行しただけなので、ca-certificates パッケージは最新バージョンです。
現在問題を抱えているすべてのドメインには、「Go Daddy Secure Certificate Authority - G2」証明書があります。私はサポートページからすべての証明書をダウンロードしました(https://certs.godaddy.com/repository/)、上記のようにインストールし、squid をリロードしましたが、エラーは解決しません。strace を使用して update-ca-trust を監視し、正しい PEM ファイルが取得されているかどうかを確認しましたが、取得されています。
少し奇妙に感じるのは、certs.godaddy.com のダウンロード ページが、問題のあるドメインの一部とまったく同じルート証明書と中間証明書を使用しているように見えることです。ただし、そのページは Squid 経由では正常に動作します。Firefox で証明書を比較すると、全体的な仕様とアルゴリズムに違いは見られませんが、それでも 1 つは動作し、その他は動作しません。
もう途方に暮れています。誰かが私を正しい方向に導いて、この問題を解決してくれることを願っています。GoDaddy 証明書を使用して、2 ページごとにプロキシ例外を追加することはできません。
答え1
マシンおよびブラウザ上の CA ストアには、ルート CA 証明書が含まれます。
ウェブサイトには、ルート CA からではなく、仲介者から証明書が発行される必要があります。
独自の証明書と中間証明書の両方を返すのは Web サイトの責任であるため、ブラウザーは信頼するルート証明書の 1 つに中間証明書をチェーンできます。
あなたが示したウェブサイトの例では、中間証明書が含まれていないため、ユーザーはサイトを信頼できません。これは、次の ssllabs スキャンで確認できます。https://www.ssllabs.com/ssltest/analyze.html?d=www.sexierdating.comご覧のとおり、2 つの証明書ではなく 1 つの証明書のみが送信されており、このため不完全な警告が表示されます。証明書パス セクションを展開すると、完全なチェーンが表示され、インストールする場合はこの中間証明書をダウンロードできます。
多くの場合、ブラウザはこのような状況に対処します。これは、他のサイトにアクセスしたときにキャッシュされた共通の中間証明書を持っているか、欠落している中間証明書を見つけようとするためです。そのため、多くの場合、これらの誤った構成はほとんどのユーザーやサイト運営者によって発見されません。ここで SSL バンピングを推測することは、これらのエラーを処理するのにそれほどユーザーフレンドリーではありません。
これはcerts.godaddycom(https://www.ssllabs.com/ssltest/analyze.html?d=certs.godaddy.com) は完全なチェーンを送信しています。実際は逆の問題があり、ルート証明書を送信する必要がないため、証明書が多すぎます (ただし、歴史的な理由により、証明書チェーン パスが 2 つあることがわかります。そのうちの 1 つは、ルート証明書が別の証明書によって署名されている必要があり、これはおそらく、信頼ストアに新しいルート証明書がない古いブラウザーによって使用されます)。
とにかく、選択肢は次のとおりです:
- ユーザーに、Web サイトが正しく設定されていないことを伝え、仕事に戻って怪しいサイトを見て会社の時間を無駄にしないようにします。
- 中間証明書を Squid CA ルート ストアに追加します。もちろん、これはルート CA ではないので、ストア内に保存すべきではありません。また、何らかの理由で取り消された場合でも、引き続き信頼されます (信頼ストアから削除するのが非常に難しいため、ルート証明書から証明書が発行されない理由の 1 つです)。したがって、これを含めるとセキュリティ リスクが発生します。
- ウェブサイトに連絡して問題を説明し、修正を依頼してください。そして、基本的にユーザーが望む他のすべての壊れたサイトのトラブルシューティングを準備してください。
私だったら間違いなくオプション 1 を選びます :-)