2017-06-28 19 views
0

本当に有効ではない証明書を持つRESTサービスにアクセスする必要があります。だから私は自分のコードで次のように入力しました:ServerCertificateValidationCallbackをリセットする

 System.Net.ServicePointManager.ServerCertificateValidationCallback = 
      ((sender, cert, chain, errors) => 
      cert.Subject.Contains("soap.example.com")); 

その後、私はSoap-Valueを取得するために何をしなければなりません。

すべては問題ありません。

しかし、私は別のドメイン(有効なSSL証明書を持っている)に接続する必要があります。これは、IISを再起動して上に表示されたコードセグメントが呼び出された後に戻ると消える証明書エラーのためにクラッシュします再度:

System.Net.WebException:基になる接続が閉じられました: がSSL/TLSセキュアチャネルの信頼関係を確立できませんでした。 ---> System.Security.Authentication.AuthenticationException:リモートの 証明書が検証手順に従って無効です。

Soapコールを終了したら、どうすれば正常な動作が再現されていることを確認できますか?

ServerCertificateValidationCallback=nullにリセットするだけでは機能しないようです。

+0

[カスタマイズされた検証の中でデフォルトのServerCertificateValidationCallbackを呼び出す方法は?](https://stackoverflow.com/questions/28679120/how-to-call-default-servercertificatevalidationcallback-inside-customized-valida) – mjwills

答えて

1
System.Net.ServicePointManager.ServerCertificateValidationCallback = 
     ((sender, cert, chain, errors) => 
     errors == SslPolicyErrors.None || cert.Subject.Contains("soap.example.com")); 

はトリックを行う必要があります(私は、コールバックの危険性について十分に承知しています)。

+0

有望そうです。それを試みます。 –

+0

ノーエラーチェックは良好です。またはの反対側は、いくつかのshoringを使用することができます。これは、 'thatsfunny.imnot.soap.example.com'を' google.com'の有効な証明書と見なすという問題は、 'RemoteCertificateNameMatch'が設定されていないと主張しないためです。 (そして、さえ物事は難しいです) – bartonjs

+0

私は@bartonjsに同意します。それにもかかわらず、私はそのコードを尋ねられた質問と一致するようにしました。 – mjwills

関連する問題