无法在 Windows 10 上的 Chrome 或 IE 中使用客户端证书

无法在 Windows 10 上的 Chrome 或 IE 中使用客户端证书

我有一个 nginx 安装和一个自签名 CA,我希望我的用户使用该 CA 签名的客户端证书进行身份验证。

在 Linux 上,Firefox 和 Chrome 都运行正常。在 Windows 10 上,Firefox 运行正常。所以我知道这不是服务器、系统时钟或证书本身的配置错误。

我通过运行 certmgr.msc 导入证书。我将客户端证书存储在“个人”存储中,将 CA 的证书存储在“受信任的根证书颁发机构”中。然后我通过重新启动 chrome,chrome://restart甚至重新启动了 Windows,但无济于事。

在收到有关服务器证书真实性未经验证的(预期)警告后,在 Linux 和 Windows 上的 Firefox 中,我可以选择“继续”。在 Windows Chrome 和 IE 上,我没有这样的选项。Chrome 显示以下屏幕:

在此处输入图片描述

我正在使用 Chrome v56(64 位)

有没有我不知道的方法来解决这个问题?为什么 Chrome 在 Windows 上取消了继续的选项,而其他操作系统上仍然有这个选项?

编辑

在 MacOS 上,Chrome 的行为与在 Linux 上的行为类似。将证书导入用户钥匙串后,我会看到相同的警告和“仍然继续”选项。

我不知道这是 Chrome 的问题还是 Windows 强制执行的一些安全限制,但我发现它极其不切实际且烦人。

答案1

如果有人遇到同样的问题,这里有解决方案,它应该适用于 Windows 7、8 和 10。

  1. 创建一个 Windows 管理控制台文件。Start -> Run -> mmc.exe

  2. 在控制台窗口中:File -> Add/Remove Snap-in...

  3. 选择Certificates管理单元并My user account在下一个窗口中选择管理证书。

  4. 返回Add or Remove Snap-ins对话框,选择“组策略对象编辑器”并将其添加到控制台根目录。在下一个对话框中保留Group Policy Object设置为,然后单击“完成”。LocalComputer

  5. 单击“确定”退出Add or Remove Snap-ins对话框。

此时您应该看到如下控制台窗口:

在此处输入图片描述

现在,导入您的证书。

  1. 展开Certificates管理单元并单击Personal。然后右键单击中间窗格并选择All Tasks -> Import...。将出现证书导入向导。只需导入用户的证书,而无需更改任何默认设置。

  2. 展开Trusted Root Certification Authorities并单击Certificates。再次单击中间窗格并选择All Tasks -> Import...。导入 CA 的证书而不更改任何默认设置。

现在到了有趣的部分...

返回Console Root,导航至Local Computer Policy管理单元Computer Configuration-> Windows Settings-> Security Settings-> Public Key Policies。您应该会看到如下窗口:

在此处输入图片描述

双击Certificate Path Validation Settings。检查Define these policy settings并选择如下图所示的设置。

在此处输入图片描述

然后,单击Select Certificate Purposes并确保包含您想要的目的(我需要的是客户端身份验证和服务器身份验证)。单击Apply并关闭控制台窗口。系统将询问您是否要保存设置。如果您想保存配置以供其他人重复使用,您可以选择这样做。

确保重新启动 Chrome 或 IE,以使更改生效。

答案2

chrome://restart对我有用。感谢您在问题中提到这一点。

客户端证书突然对我来说停止工作了,但这一定是由于与这个问题不同的原因,因为您必须导入和配置证书。

相关内容