![W10 Edge/IE11 是否不支持 SHA-1 客户端证书?](https://linux22.com/image/745043/W10%20Edge%2FIE11%20%E6%98%AF%E5%90%A6%E4%B8%8D%E6%94%AF%E6%8C%81%20SHA-1%20%E5%AE%A2%E6%88%B7%E7%AB%AF%E8%AF%81%E4%B9%A6%EF%BC%9F.png)
我知道几年前,Windows 10 上的 Edge 和 IE11 就不再支持链接到 Microsoft 可信计划中的根 CA 证书的 SHA-1 服务器证书。
我们有一个 IIS Web Farm 托管我们的 ASP.NET 系统。该服务器使用根证书,虽然该证书是使用 SHA-1 生成的,但它不属于受信任程序,因此在用于安全连接时没有问题;问题是我们的某些应用程序需要智能卡身份验证,一旦提示输入 PIN,Edge/IE11 就会终止连接。
就好像 Edge/IE11 不允许传输基于 SHA-1 的证书。
一个奇怪的警告是,如果我强制 IE11 仅使用弃用的 TLS 版本(即 TLS 1.0),那么它就可以正常工作,因为智能卡证书会被传输并用于身份验证。如果我强制 IE11 使用 TLS 1.2,那么它就会失败。
使用certutil
我可以确定智能卡客户端证书是使用 SHA-1 生成的,并且也由服务器上使用的根 CA 证书签名。
IE11 在 Windows 7 上运行良好,所以我认为安全策略只影响 W10 版本。
我是否错过了一个公告,即这也会影响客户端证书?原始公告明确表示情况并非如此:
SHA-1 客户端身份验证证书将受到怎样的影响?
2017 年中更新不会阻止使用 SHA-1 签名证书的客户端用于客户端身份验证。
答案1
使用 SHA1 的客户端证书不再有效,这并不让我感到惊讶。客户端证书是 IIS 中一项从未真正流行起来的功能,微软也不再花太多时间在它上面。Edge 浏览器约占浏览器市场份额的 5%,而 Chrome 从未支持过 PIV。浏览器中的 PIV 身份验证已被 FIDO U2F 和 FIDO2 等较新的技术取代。如果您的应用程序需要高级别的安全性,那么您不应该使用带有 SHA1 证书的智能卡,而应该迁移到较新的技术。如果您想继续使用 PIV 协议,那么我会研究Yubikey 5或者PivKey。如果您使用 Yubikey 5,那么它支持 PIV 和 FIDO2,因此迁移应该很容易,并且不需要新的令牌。如果您不想进行大量编码,Yubikey 还支持 Yubikey 身份验证,您只需 5 行代码即可完成。
PIVKey 的价格约为 20 美元,具体价格取决于其规格。Yubikey 5 的起价为 45 美元。FIDO 令牌的价格约为 20 美元。
如果您想继续使用 PIV,那么您将需要重新签发所有智能卡,但是,根证书应该仍然有效,因为它直接受到计算机信任(如果在根证书存储中),因此哈希版本无关紧要。
答案2
您确定 IE11 不支持 SHA1 证书吗?
我们有带 IIS 的 Win 2012R2(Web 服务器证书为 SHA256,仅限 TLSv1.2)。网页使用用户个人证书进行身份验证。带有 SHA1 签名算法的证书的 IE11 可以正常工作 - 用户可以进行身份验证并在应用程序中工作。这也适用于 Firefox。
在 Edge/chrome 中它不起作用,连接已关闭。
也许你应该检查这个设置——防止弱加密算法: https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/dn375961(v=ws.11)?redirectedfrom=MSDN