0

PHPで適切な (私のサーバーの) SSL 証明書を使用して、ユーザーが私の Web サイトに接続したかどうかを確認する方法を探していました。私の質問はこれとていると思いますが、MITM をほのめかしているわけではありません。

周りを見回しましたが、現在の接続で使用されている証明書から情報を取得し、それをサーバーの証明書と比較する方法が見つかりませんでした。これにより、ユーザーが他の証明書に接続するのを防ぐことができます。

これを行うにはどうすればよいでしょうか。

4

2 に答える 2

1

そもそも不可能に聞こえる「ユーザーが他の証明書に接続するのを防ぐため」の意味がわかりませんが、

  1. SSL は、PHP がアクセスまたは制御できないプロトコル スタック内のレイヤーで発生します。
  2. クライアントの接続のセキュリティは [ウェブサイトを運営するという文脈で] 制御できません。
于 2013-02-13T20:49:46.347 に答える
1

簡潔な答え

あなたはそうしない。

より長い答え

これは、クライアント証明書でのみ可能です。
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 によってフラグが立てられます。セッションの復号化についてもっと心配します。

于 2013-02-13T20:57:57.230 に答える