从 cmd 导入 .cer 证书

Importing .cer certificate from cmd

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

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

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

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

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

certutil -repairstore my >cert_thumbprint<

更新

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

作为解决方法,我设法使用 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"