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を使用してWebサービスにアクセスするとArgumentExceptionが発生する
- 3. C#でSSL(https)を使用したWebサービスの使用
- 4. 異なるインターフェイスを使用してWebサービスを使用する
- 5. Railsアプリケーションを使用してRails Webサービスを使用する
- 6. PHPを使用して.Net Webサービスを使用する
- 7. JSFアプリケーションを使用してWebサービスを使用する
- 8. wsdlを使用してWebサービスを使用しています
- 9. Javaを使用してcertficateでhttpsでRESTfulサービスを使用する
- 10. MonoでUnixSignalを使用するとSystem.ArgumentExceptionがスローされる
- 11. CORSを使用したHTTPサイトからHTTPSへのWebサービス
- 12. OWINを使用したWeb APIがHttpMessageInvokerのObjectDisposedExceptionをスローする
- 13. Bing MapsをWebサービスとして使用するには?
- 14. Apache Webサービスを使用してWebサービスをロードできない
- 15. ajaxを使用してクロスサーバWebサービス
- 16. 別のWebサービスを使用するWebサービスに関するアドバイス
- 17. Pythonを使用してjavascriptとhttpsを使用してサイトにログインする
- 18. ColdFusionでリダイレクトされたWebサービスを使用する
- 19. WS-SecurityとWS-Addressingを使用したWebサービスの使用
- 20. ブラウザ技術を使用してRESTfulなWebサービスを使用する方法
- 21. C#で非asmx SOAP 1.1 Webサービスを使用してヘッダセキュリティーを使用する
- 22. オーバーロードされたメソッドを使用してWebサービスにアクセスする方法
- 23. muleを使用してHTTPSを使用する
- 24. Devise確認リンクを使用してhttpsを使用する
- 25. MVC4ネストされた@ Html.RenderPartial()を使用するとコンパイラエラーメッセージがスローされます:CS1502
- 26. WPFアプリケーションでWebサービスを使用する
- 27. WebサービスでSpring Validatorを使用する
- 28. JavaScriptを使用するWebサービス
- 29. WP7でWebサービスを使用する
- 30. WebサービスでPetaPocoを使用する
ブラウザからURLにアクセスできますか?その場合、ブラウザは証明書が無効であることを警告しますか? – dlev