2014-10-02 79 views
1

我有一個Web服務(asmx)API,由我管理的另一個開發人員在.NET 3.5中編寫。我們最近從Server 2008R2遷移到了Server 2012R2,並決定使用SNI而不是爲每個證書配置一個IP。.NET SNI支持

事實證明,我們的一個API用戶在切換到SNI之後不再能夠連接到我們的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嗎?

回答

1

如果依賴於Schannel,.NET Framework本身可能無法解決問題。 Schannel只開始支持SNI,因爲Windows Vista/Windows Server 2008(或來自其他來源Windows 8/Windows Server 2012

那麼,根據第一個鏈接,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的源代碼,但我不認爲微軟使用SslStream或Schannel以外的任何其他東西。

因此,在您的情況下,我建議您在服務器端回滾您的更改,並且不要使用SNI。另一個解決方案是要求所有用戶使用Windows Vista及更高版本作爲操作系統。請注意,Windows XP已經死了,而Windows Server 2003正在消亡(明年將會很快死掉)。

+0

是的,我認爲這是一個操作系統問題,Schannel的事情是有道理的,因爲它是一個操作系統問題。我告訴他們Server 2003的EOF即將在明年推出,.NET在Server 2003之後推出。感謝您確認我的想法。 – JoeyZero 2014-10-03 16:02:55