HTTPSを使用するサーバー上で実行されているWebサービスを呼び出すと、アプリケーションがSystem.Net.WebExceptionをスローします。リモートサーバーとの信頼関係を確立しません "。この問題を回避して通話を成功させる方法がわかりません。HTTPSを使用してWebサービスを使用するとSystem.Net.WebExceptionがスローされる
答えて
いくつかの研究の後、私は何が起こっているかを説明しJan Tielensにより、ブログエントリ、私の問題の回避策が見つかりました:
あなたはHTTPSサイトを参照するとき、あなたはおそらくあなたを尋ねるダイアログウィンドウを取得するにはWebサーバーによって提供された証明書を信頼したい場合。したがって、証明書を受け入れる責任は、ユーザーによって処理されます。 Webサービスのシナリオに戻って、SSLとHTTPSを使用するWebサーバーにあるWebサービスを呼び出す場合は、問題があります。コードから呼び出しを行うと、ダイアログウィンドウが表示されず、証明書を信頼するかどうかを尋ねるメッセージが表示されます(幸いにも、これはサーバーサイドのシナリオではかなり醜いものです)。タイプ
System.Net.WebException
の未処理の例外がSystem.dllのに
発生しました追加情報:基礎となる 接続が閉じられました: リモートサーバーとの信頼関係を確立できませんでした。おそらく、次の例外を取得します
しかし、この 問題の解決策があり、あなたは( が
ICertificatePolicy
インタフェースを実装する)独自のCertificatePolicy
クラスを作成することによって、あなたの コードでこれを解決することができます。このクラスでは、 はあなた ダイアログ ]ウィンドウで[はい]を押すか、何だろうと同じように、true
またはfalse
を返さないために持っていることを、あなた自身のCheckValidationResult
機能を記述する必要があります。開発目的のために私は は は、すべての証明書を受け入れ、以下のクラスを作成しましたので、あなたは はもう嫌なWebException
を得ることはありません。
public class TrustAllCertificatePolicy : System.Net.ICertificatePolicy
{
public TrustAllCertificatePolicy() { }
public bool CheckValidationResult(ServicePoint sp, X509Certificate cert, WebRequest req, int problem)
{
return true;
}
}
あなたが を
CheckValidationResult
機能を常に見ることができるようにすべての証明書が になるようにtrueを返します。この クラスを少し安全にしたい場合は、 は、たとえばX509Certificate
パラメータを使用してチェックを追加できます。このCertificatePolicy
を使用するには 、あなたはそれを使用するServicePointManager
を指示する必要があり ます:
System.Net.ServicePointManager.CertificatePolicy = new TrustAllCertificatePolicy();
これは 呼び出しを行う前に( アプリケーションのライフサイクルの間に1回)行われなければなりませんあなたのwebserviceに。
自己署名入りSSL証明書または信頼できないSSL証明書を使用している場合は、アプリケーションに無視するように指示できます(本当に無視したい場合)。例えば
ServicePointManager.ServerCertificateValidationCallback = _
new RemoteCertificateValidationCallback(IgnoreSelfSSL)
public bool IgnoreSelfSSL(ServicePoint sp, X509Certificate cert,WebRequest req, int problem) {
return true;
}
サービスコールを実行する前にコールバックをどこにでも置くことができます。
答えに記載されたヒントは、のテストの場合にのみを使用してください。受諾/生産のためには、マシンにWS証明書がインストールされていなければなりません.WSの有効期限や件名などを呼び出す前に証明書の検証を行います。その後、SoapHttpClientProtocol.Proxy.ClientCertificatesによってWS依頼にこの証明書を追加できます。
- 1. HTTPS Webサービスの使用
- 2. HTTPSを使用したRESTful Webサービス
- 3. HTTPSを使用してWebサービスにアクセスするとArgumentExceptionが発生する
- 4. C#でSSL(https)を使用したWebサービスの使用
- 5. wsdlとsoap12バージョンのHTTPS Webサービスを使用する方法。
- 6. 異なるインターフェイスを使用してWebサービスを使用する
- 7. npmを使用してhttpsで 'localhost' Webクライアントにサービスを提供
- 8. JSFアプリケーションを使用してWebサービスを使用する
- 9. NTLM認証を使用してWebサービスを使用するクライアント
- 10. Railsアプリケーションを使用してRails Webサービスを使用する
- 11. PHPを使用して.Net Webサービスを使用する
- 12. REST POSTメソッドを使用してSOAP Webサービスを使用する
- 13. ajax jqueryを使用してSOAP Webサービスを使用する
- 14. JMXを使用して監視されるWebサービスのメトリックリスト
- 15. SpringBootApplicationクラス内のサービスを使用すると、NullPointerExceptionがスローされます
- 16. wsdlを使用してWebサービスを使用しています
- 17. 指定されたapiキーとapiトークンを使用してHTTPS WCFサービスを使用しています。 C#.net
- 18. Javaを使用してcertficateでhttpsでRESTfulサービスを使用する
- 19. SqlHierarchIdを使用するとDapperでSystem.InvalidCastExceptionがスローされる
- 20. MonoでUnixSignalを使用するとSystem.ArgumentExceptionがスローされる
- 21. HttpURLConnectionを使用するとjava.net.ConnectExceptionがスローされる
- 22. CORSを使用したHTTPサイトからHTTPSへのWebサービス
- 23. org.apache.http.impl.client.ProxyClientを使用したプロキシトンネル経由のHTTPS Webサービスへのアクセス
- 24. サービスのプロパティとして使用されるクラスをモックする
- 25. 証明書なしでHTTPSを使用してSOAP Webサービスを呼び出す
- 26. OWINを使用したWeb APIがHttpMessageInvokerのObjectDisposedExceptionをスローする
- 27. loadModelを使用するとリクエストがスローされます
- 28. ヘルパーメソッドgetLayout()を使用すると、エラーがスローされます
- 29. Bing MapsをWebサービスとして使用するには?
- 30. 配列をWebサービスのデータソースとして使用する
ブラウザからURLにアクセスできますか?その場合、ブラウザは証明書が無効であることを警告しますか? – dlev