2011-10-26 13 views
5

私のアプリケーションでは、自己署名証明書を持つサーバーに要求する必要がある状況があります。その特定の要求に対してのみ証明書の検証を無効にしたいと考えています。単一の要求の証明書検証を無効にする

ServicePointManager.ServerCertificateValidationCallbackをコールバックメソッドを指すように設定して証明書の検証を無効にし、単にtrueを返すことができます。しかし、これにより、app.configで設定するだけで、アプリケーション全体の証明書の検証が無効になります。

ただし、アプリケーション全体で無効にするのではなく、個々の要求に対して無効にしたいと考えています。それは可能ですか?私が働いている

クラスは、証明書の検証を無効にするSmtpClient

答えて

0

は一般的に悪い考えです。カスタム証明書をシステムまたはアプリケーションに信頼できる証明書として追加するだけではどうでしょうか。

AFAIRこれは、たとえば次のように行うことができます。あなた自身のX509CertificateValidatorを実装してください。 アプリケーションにカスタム証明書を埋め込み、両方が等しい場合はX509CertificateValidatorで比較するだけです。

も参照してください。How safe is my custom SSL verification logic to handle excepted RemoteCertificateNameMismatch?

+0

応答のためのロバートトゥク。私たちのアプリケーションの一部では、証明書が有効でない場合は許可したくありません。しかし、私たちが電子メールを送信するこの特定のケースでは、SSLを使用することを望んでいますが、多くのクライアントが自己署名SSL証明書を持っているため、電子メールの送信に失敗しています。残念なことに、これはSMTPサーバにとってはしばしば当てはまりますが、失敗したSMTPサーバごとに証明書をインポートするのは悪夢です。SMTPが証明書の失敗やアプリケーションの他の部分を受け入れて引き続き実行できるようにしたいのです。 –

+0

次に、まったく同じ問題を抱えているAndroid "K9"メールクライアントでも使用されている検証スキームを使用する必要があります。初めて信頼されない証明書が見つかると、ユーザーにこの証明書を信頼するかどうかを確認する証明書の詳細が表示されます。ユーザーが「はい」と答えた場合、この証明書を有効とマークした設定ファイルに証明書ハッシュが保存されます。内部証明書のバリデーターは、すべての通常の証明書と保存されたハッシュの証明書を受け入れます。みんなのために働き、まだ相対的に安全です。 – Robert

+0

残念ながら、これはサービスなので、ユーザーインターフェイスを持たないため、ユーザーがクリックして証明書を受け入れるためのダイアログが表示されません。 –

関連する問題