4

次のコードを使用して、無効な証明書も含めてすべての証明書が通過するようにしていますが、このイベントがグローバルに呼び出され、特定の HTTP 呼び出しに対してのみ証明書を通過させたいため、より良い方法があるかどうかを知りたいです。非同期に発生している他のものではありません。

// This delegate makes sure that non-validating SSL certificates are passed
ServicePointManager.ServerCertificateValidationCallback = delegate(object certsender, X509Certificate cert, X509Chain chain, System.Net.Security.SslPolicyErrors error)
{
   return true;
};

上記のコードは、証明書の未検証を無視する例にすぎません。私が抱えている問題は、それが世界規模のイベントであることです。イベントが発生しているセッションがわかりません。いくつかの http リクエストが通過する可能性があり、各リクエストに対するアクションをユーザーに要求したいと考えています。

4

2 に答える 2

1

What about the certsender argument? Does it contain anything sensible so that you can tell what connection the callback is happening for? I checked the .NET API but it doesn't say what the argument is supposed to contain...

于 2008-09-25T14:23:14.760 に答える
1

まあ、実際にこれらのパラメータのいくつかをチェックするのは面倒かもしれません. ;) たとえば、自己署名証明書がある場合は、エラー == SslPolicyErrors.RemoteCertificateChainErrorのみを通過させます。セキュリティを強化するために、証明書自体の発行者、名前などを確認することもできます。

于 2008-09-24T20:59:12.493 に答える