1

私が管理している別の開発者によって .NET 3.5 で記述された Web サービス (asmx) API があります。最近 Server 2008R2 から Server 2012R2 に移行したので、証明書ごとに IP を使用する代わりに SNI を使用することにしました。

SNI に切り替えた後、API ユーザーの 1 人が API に接続できなくなったことが判明しました。私は、彼らが Server 2003 を使用していることを知り、それが機能しなくなった理由であると考えました。私は先に進み、問題を修正したパブリックIPをサイトに割り当てました. もちろん、彼らは完全に .NET フレームワークのせいにしています。

彼らの証拠はこのリンクでした: https://connect.microsoft.com/VisualStudio/feedback/details/729925/net-4-4-5-sslstream-no-supports-the-tls-server-name-indication-sni

API に接続してさまざまなテストを実行するテスト プロジェクトのセットアップがあり、変換後に正常に動作します。

誰でもこれに光を当てることができますか?SoapHttpClientProtocol は sslstream を使用しますか?

4

1 に答える 1

1

Schannel に依存している場合、.NET Framework 自体では問題を解決できない可能性があります。Schannel は、 Windows Vista/Windows Server 2008以降(または別のソースWindows 8/Windows Server 2012から)のみ SNI のサポートを開始します。

最初のリンクによると、SslStream は実際に Schannel に依存しています。Windows 7/.NET 4 と Windows 8.1/.NET 4.5.1 の両方でテスト ケースを完了したところ、クライアント側アプリケーションが SslStream SNI を利用して期待どおりに動作することがわかります。したがって、貼り付けた Microsoft Connect リンクは有効なものではないと思います。SNI は、Windows XP および Windows Server 2003 では失敗する可能性がありますが、Windows Vista 以降では機能するはずです。

SoapHttpClientProtocol のソース コードは確認していませんが、Microsoft は SslStream または Schannel 以外は使用していないと思います。

したがって、あなたの場合、サーバー側で変更をロールバックし、まだ SNI を使用しないことをお勧めします。もう 1 つの解決策は、すべてのユーザーに Windows Vista 以降を OS として使用するように依頼することです。Windows XP が廃止され、Windows Server 2003 が廃止されることに注意してください (来年には廃止されるので、すぐに廃止されます)。

于 2014-10-03T05:53:21.580 に答える