私のアプリケーションでは、自己署名証明書を持つサーバーに要求する必要がある状況があります。その特定の要求に対してのみ証明書の検証を無効にしたいと考えています。単一の要求の証明書検証を無効にする
ServicePointManager.ServerCertificateValidationCallbackをコールバックメソッドを指すように設定して証明書の検証を無効にし、単にtrueを返すことができます。しかし、これにより、app.configで設定するだけで、アプリケーション全体の証明書の検証が無効になります。
ただし、アプリケーション全体で無効にするのではなく、個々の要求に対して無効にしたいと考えています。それは可能ですか?私が働いている
クラスは、証明書の検証を無効にするSmtpClient
応答のためのロバートトゥク。私たちのアプリケーションの一部では、証明書が有効でない場合は許可したくありません。しかし、私たちが電子メールを送信するこの特定のケースでは、SSLを使用することを望んでいますが、多くのクライアントが自己署名SSL証明書を持っているため、電子メールの送信に失敗しています。残念なことに、これはSMTPサーバにとってはしばしば当てはまりますが、失敗したSMTPサーバごとに証明書をインポートするのは悪夢です。SMTPが証明書の失敗やアプリケーションの他の部分を受け入れて引き続き実行できるようにしたいのです。 –
次に、まったく同じ問題を抱えているAndroid "K9"メールクライアントでも使用されている検証スキームを使用する必要があります。初めて信頼されない証明書が見つかると、ユーザーにこの証明書を信頼するかどうかを確認する証明書の詳細が表示されます。ユーザーが「はい」と答えた場合、この証明書を有効とマークした設定ファイルに証明書ハッシュが保存されます。内部証明書のバリデーターは、すべての通常の証明書と保存されたハッシュの証明書を受け入れます。みんなのために働き、まだ相対的に安全です。 – Robert
残念ながら、これはサービスなので、ユーザーインターフェイスを持たないため、ユーザーがクリックして証明書を受け入れるためのダイアログが表示されません。 –