2017-02-23 15 views
7

これについて多くの記事があり、私はそれらを精査しましたが、解決策はまだありません。誰かが私に正しい方向を向けることを望んでいる。SoapHttpClientProtocolとTLS 1.2 - 共通のアルゴリズムを持っていないため、クライアントとサーバーは通信できません

TLS 1.2を使用してリモートプロバイダに接続する必要があります。だから私は、Windows Server 2016をインストールし、必要に応じて設定している:

enter image description here enter image description here

私は、リモートサーバがTLS 1.2を実行しているし、それが強調された暗号をサポートしていることを知っています。

エンドポイントをTLS(System.Web.Services.Protocols.SoapHttpClientProtocol)に変換する前に、プロバイダが提供するWSDLによって生成されたC#プロキシクラスを使用してリモートエンドポイントに接続します。

プロキシを使用して接続すると、「クライアントとサーバーは共通のアルゴリズムを持っていないため、通信できません」という例外が発生します。

ServicePointManager.SecurityProtocolがどこにも表示されないので、.NETがTLS 1.2を取得していると仮定しています。どのように暗号をやっているのか分かりません。

これを修正しようとすると、誰かに教えていただけますか?可能であれば、私はWSDLプロキシクラスを再生成したくありません。

+2

実行中の.NETフレームワークのバージョンは何ですか?あなたのアプリはどのように構成されていますか「ServicePointManager.SecurityProtocol」はどこにも表示されません。これは、TLS 1.2のサポートにとってすべて重要です。http:// stackoverflow。com/questions/28286086/default-securityprotocol-in-net-4-5/28502562#28502562 –

答えて

9

クライアントアプリケーションが.NET Framework 4.5.2以下でコンパイルされた場合、デフォルトではServicePointManager.SecurityProtocolSecurityProtocolType.Ssl3 | SecurityProtocolType.Tls(SSL 3.0およびTLS 1.0のみ)に初期化されるため、リモートサーバーに接続できなくなります。 TLS 1.2が必要です。

クライアントアプリケーションがTLS 1.2を使用できるようにするには、いくつかの方法があります。

  • の.NET Framework 4.6以降に対して、クライアントアプリケーションを再コンパイルしますが。
  • クライアントコンピュータで、RegEdit.exeを実行し、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319に移動し、DWORD(32ビット)を追加します。これは、Visual Studioでプロジェクトのプロパティページを開いてアプリケーションタブに移動し、 SchUseStrongCrypto名前付きの値、およびクライアントアプリケーションが起動するとTLS 1.2をオンにし、
  • (このフラグはTls | Tls11 | Tls12に初期化されるようにServicePointManager.SecurityProtocolが発生します。)1に設定します。ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls12;

あなたを再生成する必要はありませんTLSプロトコルや暗号をネゴシエートする責任を負いません。

+0

Perfect @Michael。私はすでに4.6.1に対してコンパイルするように変更しましたが、WebApiによって接続が最終的に行われているので、httpRuntime targetFrameworkを4.6.1に変更しなければならないことに気付きました。 httpRuntimeを変更すると、接続はTLS 1.2になりました。 – TheEdge

0

Webサービスに接続していたWebサイトからTLS 1.0を削除しました。 Webサービスのweb.configの4.5.1についていたのはhttpRuntimeでした。サービスが4.6.1に変更され、web.configのhttpRuntimeのバージョンを4.6.1に変更して問題を修正しました。 WebサイトはWebサービスにTLSを設定しようとしましたが、1.2と1.1しか利用できませんでした。 Webサービスは1.0をサポートしていたため、エラーが発生しました。

関連する問題