PHPで適切な (私のサーバーの) SSL 証明書を使用して、ユーザーが私の Web サイトに接続したかどうかを確認する方法を探していました。私の質問はこれと似ていると思いますが、MITM をほのめかしているわけではありません。
周りを見回しましたが、現在の接続で使用されている証明書から情報を取得し、それをサーバーの証明書と比較する方法が見つかりませんでした。これにより、ユーザーが他の証明書に接続するのを防ぐことができます。
これを行うにはどうすればよいでしょうか。
PHPで適切な (私のサーバーの) SSL 証明書を使用して、ユーザーが私の Web サイトに接続したかどうかを確認する方法を探していました。私の質問はこれと似ていると思いますが、MITM をほのめかしているわけではありません。
周りを見回しましたが、現在の接続で使用されている証明書から情報を取得し、それをサーバーの証明書と比較する方法が見つかりませんでした。これにより、ユーザーが他の証明書に接続するのを防ぐことができます。
これを行うにはどうすればよいでしょうか。
そもそも不可能に聞こえる「ユーザーが他の証明書に接続するのを防ぐため」の意味がわかりませんが、
あなたはそうしない。
これは、クライアント証明書でのみ可能です。
Web サーバーは、PHP ではなく、クライアントに対してユーザーを識別します。PHP はこれを認識せず、環境変数が PHP に送信/渡されることはありませんHTTPS=on
。常にtrueと評価されるため、自分自身を確認しません。あなたがリンクした質問にはすでに答えがあり、中間者はあまり意味がありません. 確実な PHP スクリプトを使用して、すべての SSL Man in the Middle 攻撃に対するソリューションを効果的に求めています。
認証局に Diginotar 風の何かが起こらない限り、別の SSL 証明書を使用してホストに接続できるというようなことはありません。
彼らが本当にあなたのサイトに接続するつもりだったという保証が必要な場合は、単にクライアントが接続しているホストを確認してください. 彼らがあなたの IP にヒットし、そこから証明書を要求し、CA でそれを検証した場合、彼らは接続を続行し、接続します$_SERVER["SERVER_NAME"]
。$_SERVER["HTTPS"] == "on"
しかし、正直なところ、SSL 証明書が正しくないことを心配するのはなぜでしょうか? ユーザーの PC によってフラグが立てられます。セッションの復号化についてもっと心配します。