web-dev-qa-db-ja.com

System.Net.CertificatePolicyからServerCertificateValidationCallbackすべての証明書ポリシーを受け入れる

少し古いサンプルコードをダウンロードしました。次のクラスがあります。

public class TrustAllCertificatePolicy : System.Net.ICertificatePolicy
{
    public TrustAllCertificatePolicy()
    { }

    public bool CheckValidationResult(ServicePoint sp,
              System.Security.Cryptography.X509Certificates.X509Certificate cert,
              WebRequest req, 
              int problem)
    {
        return true;
    }
}

コードの後半では、次のように呼び出します。

System.Net.ServicePointManager.CertificatePolicy = new TrustAllCertificatePolicy();

次の警告が表示されます。

警告1'System.Net.ServicePointManager.CertificatePolicy 'は廃止されました:'このタイプのCertificatePolicyは廃止されました。代わりにServerCertificateValidationCallbackを使用してください。 http://go.Microsoft.com/fwlink/?linkid=14202 '

同等の機能を実現するための現在の手順は何ですか?

MSDNで article を読みましたが、変換方法がわかりませんか?これはクラスライブラリ用です。私はこれを十分に研究していないように思われる場合はお詫びしますが、SSL証明書に関しては、私の領域から少し外れています。どんな助けでも大歓迎です!

11
Oxymoron

コードに次のクラスを含めます

 public static class SSLValidator
        {
            private static bool OnValidateCertificate(object sender, X509Certificate certificate, X509Chain chain,
                                                      SslPolicyErrors sslPolicyErrors)
            {
                return true;
            }
            public static void OverrideValidation()
            {
                ServicePointManager.ServerCertificateValidationCallback =
                    OnValidateCertificate;
                ServicePointManager.Expect100Continue = true;
            }
        }

次に、サービスコールを行う前に以下に電話しますが、実際の証明書がある場合は、本番環境でこのコードを削除するように注意してください

SSLValidator.OverrideValidation();  

または、以下を実行して、デバッグのみに使用することもできます

#if DEBUG

            SSLValidator.OverrideValidation();
#endif 
16
Dan Hunex

他のWebサービスに接続するときは以下を使用します。

//workaround for SSL certificate issue
ServicePointManager.ServerCertificateValidationCallback = 
  (sender, certificate, chain, sslPolicyErrors) => { return true; };

コメントごとに宣伝文句に追加する必要があります-これを本番環境で実行しないでください(追加する場合は、Paypalアカウントに500ドルを送ってください)

4
BozoJoe