我正在尝试
run certutil -repairstore
并不断收到输入智能卡的提示。但这是 AWS 上的虚拟机,不能选择智能卡。
任何关于如何绕过智能卡并完成修复的想法都值得赞赏。
其他答案之一谈到了它,但我想添加一些上下文/细节,并且我花了很多时间寻找这个问题的根源。杀死与智能卡相关的服务不起作用,使用 gpedit 禁用相关策略也不起作用。
当您使用
-repairstore
选项运行 certutil 时,Windows 会运行其 CSP(配置服务提供程序)列表,其中之一是“Microsoft 智能卡密钥存储提供程序” - 这是导致提示输入您的智能卡密钥的提供程序。卡片。正如上面的答案所述,最可能的原因是您正在尝试安装虚拟机上没有相应密钥的证书文件(.crt、.cer、.pem 等),因此 Windows 会循环遍历各种 CSP 正在寻找有效密钥,但找不到。此问题有两种可能的解决方案:
您应该通过 IIS > 服务器证书 > 创建证书请求生成 CSR(证书签名请求)。这将确保密钥是在本地生成的并且适当的密钥存储知道它。使用该 CSR 从 GoDaddy 或无论您的提供商是谁获取证书,然后您应该能够转到 IIS > 服务器证书 > 完成证书请求 安装证书并完全避免 certutil。
如果您仍然无法让它工作并且确定密钥是在本地生成的,certutil 的
-csp
选项将允许您指定在验证证书时使用哪个 CSP,从而无需 Windows 尝试智能卡 CSP。您可以通过运行 certutil -csplist
来获取系统上已安装的 CSP - “Provider Name”值是您传递给 certutil 的值。例如,certutil -csp "Microsoft Software Key Storage Provider" -repairstore ...
将强制 certutil 针对 Microsoft 软件密钥存储提供程序进行验证。确保使用引号,因为名称中有空格。
确保您在托管域的同一 Windows 服务器上发出原始证书请求。然后用ssl供应商提供的p7b完成请求就不会出现任何问题了。
这个问题可能有点老了,但我遇到这个错误还有另一个原因:
我有多个服务器尝试导入证书。 但是,证书请求是从一台服务器生成的。在这种情况下,我导入到原始服务器,该服务器创建请求并导出 mmc 中的所有内容(包括私钥),然后将 pfx 文件重新导入到以上服务器。
尝试将
-silent
添加到命令中