1

Mono (実際には MonoTouch) アプリケーションでサーバーへの接続を保護しようとしています。したがって、私は接続しましたSystem.Net.ServerCertificateValidationCallback(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)

このコールバックは、中間者攻撃の場合にエラーでトリガーされることになっていますか? または、偽の証明書の名前が本物の証明書と一致する場合、このケースは検出されませんか?

チェックは、Microsoft が実装する方法と同じですか?

4

2 に答える 2

1

コールバックを使用すると、SSL/TLS の結果に関するアプリケーションの動作をカスタマイズできます。一般的なカスタマイズについては、この記事で説明しています:信頼されたルートを尊重して使用する

基本的な検証はSystem.Net.ServicePointManager (Mono ソースへのリンク) によって行われます。プラットフォームごとに少し異なります。MonoTouch の場合、基本的には、証明書が有効かどうかを確認するための iOS への呼び出しです。その上で、追加のHTTPS固有のチェックが行われます (HTTP over SSL/TLS の RFC 要件に一致させるため)。

このコールバックは、中間者攻撃の場合にエラーでトリガーされることになっていますか?

エラーが報告されます。これには、MitM 攻撃に使用される可能性のある証明書の無効な署名が含まれます。OTOH ほとんどのエラーはより良性です (有効期限など)。

または、偽の証明書の名前が本物の証明書と一致する場合、このケースは検出されませんか?

HTTPS RFC では、証明書名 (通常は CN) が Web サイトの名前と一致する必要があります。IOW は検出されます (DNS を信頼できる限り)。ただし、これはすべての実装に当てはまります ;-)。

チェックは、Microsoft が実装する方法と同じですか?

Microsoft は、これを詳細に文書化していません。ただし、X.509 チェックと HTTPS RFC に従うため、かなり近いはずです。

于 2012-06-05T12:03:04.127 に答える
0

msdn ServicePointManager.ServerCertificateValidationCallback Propertyによると、クライアントによって実行されるカスタム検証に使用されます。たとえば、開発環境で自己署名証明書の検証をオーバーライドする場合です。

于 2012-06-05T09:57:05.403 に答える