我有一个Web服务(asmx)API,由我管理的另一个开发人员用.NET 3.5编写。我们最近从Server 2008R2迁移到了Server 2012R2,我决定使用SNI而不是每个证书都有一个IP。
事实证明,在切换到SNI后,我们的某个API用户无法再连接到我们的API。我发现他们使用Server 2003,我认为它是它不再工作的原因。我继续为网站分配了一个修复问题的公共IP。当然,他们完全将其归咎于.NET框架。
我有一个测试项目设置,它连接到我们的API并运行各种测试,它在转换后工作正常。
有人可以对此有所了解吗? SoapHttpClientProtocol是否使用sslstream?
答案 0 :(得分:1)
嗯,根据第一个链接,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即将死亡(明年将会死亡,很快就会死机)。