【问题标题】:.NET SNI support.NET SNI 支持
【发布时间】:2014-10-02 23:56:16
【问题描述】:

我有一个由我管理的另一个开发人员用 .NET 3.5 编写的 Web 服务 (asmx) API。我们最近从 Server 2008R2 迁移到 Server 2012R2,我决定使用 SNI,而不是为每个证书设置一个 IP。

事实证明,我们的一位 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?

【问题讨论】:

    标签: .net web-services ssl sni


    【解决方案1】:

    .NET Framework 本身如果依赖 Schannel 可能无法解决问题。 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。另一种解决方案是要求所有用户使用 Windows Vista 及更高版本作为操作系统。请注意,Windows XP 已死,Windows Server 2003 已死(明年将死,所以很快)。

    【讨论】:

    • 是的,我认为这是一个操作系统问题,而 Schannel 的事情对于为什么它是一个操作系统问题是有道理的。我告诉他们 Server 2003 的 EOF 将于明年推出,而 .NET 是在 Server 2003 之后出现的。感谢您确认我的想法。
    猜你喜欢
    • 2020-06-21
    • 2011-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-18
    • 1970-01-01
    • 1970-01-01
    • 2011-11-13
    相关资源
    最近更新 更多