2

尽管证书签名请求是在同一台机器上创建的,但使用实用程序导入.cer证书certutil无法将其与其私钥匹配。

我正在使用certreq生成.csr用于获取此证书的文件,并且在.inf我有Exportable = True标志。通过 mmc 向导手动执行导入有效,但从管理控制台运行以下命令时无效。

certutil -addstore -f "My" "website_aps_production.cer"

此外,在使用 certutil 导入证书后,查看 mmc 我注意到友好名称已重置(显示为无)。

从cmd导入证书后,我已经尝试过repairstore机制,但没有帮助。

certutil -repairstore my >cert_thumbprint<

更新

我尝试使用 导入证书certreq -accept -machine website_aps_production.cer,但这会引发错误:无法将证书链构建到受信任的根颁发机构。0x800b010a并且控制台中出现附加警告无法安装证书颁发机构颁发的证书。请联系您的管理员。

4

1 回答 1

2

作为一种解决方法,我设法使用 PowerShell 自动执行证书导入过程。

Set-Location -Path cert:\LocalMachine\My

Import-Certificate -Filepath "C:\website_aps_production.cer"

这样,证书就被导入本地计算机的存储中,并与其对应的私钥匹配,可以进一步导出。

然而,更方便的解决方案是使用 openSSL 创建所有内容,而根本不使用证书存储。这样,私钥独立于证书导出。

openssl req -nodes -newkey rsa:2048 -keyout pvkey.key -out csr.csr -subj "/C=test/ST=test/L=test/O=test/OU=test/CN=test" -config "C:\openssl.cnf"
于 2019-04-19T11:07:52.520 回答