优雅地检测用户无法支持ASP.net的SHA256 SSL连接

时间:2014-11-24 17:55:59

标签: asp.net ssl configuration iis-6

MicrosoftGoogle都宣布了SHA1的结束。

鉴于此,我们将转向SHA256获取SSL证书。由于SHA256 is not supported before XP SP3about 17% of user use XP(至少其中一些不会使用SP3),因此会有用户无法连接到我们的https页面。

我想要做的是让我的网站认识到他们无法通过SSL连接,并将其发送到支持页面,解释他们无法连接的原因,并告诉他们如何纠正它。

我们的网站在IIS 6上运行ASP.NET。

在我看来,应该有一个Web.Config设置或IIS设置来执行此操作。有谁知道任何这样的设置?对Chris Hutchinson'sThis SO Question回答似乎表明存在这样的设置。

1 个答案:

答案 0 :(得分:1)

这只是可能解决方法的部分答案。

考虑到Windows XP上的Internet Explorer还有另一个已知的SSL / TLS限制,它不支持服务器名称指示(SNI),您可能能够根据客户端是否使用它来区分客户端服务器名称扩展名在其初始客户端Hello消息中。

您需要升级到IIS 8才能获得SNI支持(我必须承认,如果没有使用服务器名称扩展,我不知道如何为具有不同证书的默认站点配置它),但从协议的角度来看,这种检测至少应该是可行的。您仍然需要为该备用网站提供单独的SHA-1证书。

在这种情况下,来自XP上的IE的任何连接都将转到该备用站点(不幸的是,即使使用SP3)。

这样的XP机器上的Firefox应该能够处理SHA-256,因为它的实现完全独立于XP堆栈。

Chrome可能会出现问题,因为它会使用服务器名称扩展名,但它也依赖XP的证书管理来验证CA证书。我没有尝试过,但我预计会遇到可能的问题。

这些当然不是理想的解决方案,但根据您的要求,您可能会发现其中一些妥协可以接受。


以上所有内容均假设用户的网站入口点使用https://

如果您的用户首先通过http://页面访问您的网站,您可以让该网页向您的https://网站发出AJAX请求,以检查它是否可以连接,并显示错误消息如果它不能。这当然更容易,更通用(甚至不需要IIS升级)。您可能无法确切知道为什么AJAX请求无法连接到您的https://站点(除了缺少SHA-256支持之外还有其他失败原因),但是一条解释性消息说这是最有可能的原因肯定会有所帮助。