iis - 导入证书时出现 CRYPT_E_NOT_FOUND

标签 iis ssl ssl-certificate

我正在尝试自动化生成证书签名请求的过程,然后从 Windows Server 2012 R2 服务器上的 CA 导入响应以用作 IIS 中 SSL 绑定(bind)的证书。我能够生成 CSR,然后我将其提供给安全团队,然后安全团队为我提供响应然后导入,但我无法导入它。

此服务器在工作组中。我想我会提到这一点,所以没有 AD 注册政策。

这是我的过程:

  1. 在相关服务器上使用 certreq.exe 生成 CSR。生成的 INF 文件看起来像这样:
[Version]
Signature = "$Windows NT$"
[NewRequest]
Subject = "C=US,S=California,L=City,O=Company,OU=IT,CN=hostname"
Exportable = TRUE
KeyLength = 2048
KeySpec = 1
KeyUsage = 0xa0
MachineKeySet = True
ProviderName = "Microsoft RSA SChannel Cryptographic Provider"
ProviderType = 12
Silent = True
SMIME = False
RequestType = PKCS10

然后通过执行此操作将此 INF 文件转换为 CSR .req 文件:

certreq.exe -new "C:\inffile.inf" "C:\certreq.req"

REQ 文件被发送到安全团队,他们还给我一个 .CER 文件,当手动导入时,实际上添加了来自 Digicert 的三个证书。我期望的证书以及看起来像是一些中间 CA 的证书。

这是通过 MMC 证书管理单元导入时的样子。

enter image description here

如果我像这样通过 MMC 导入证书,它不会显示在服务器证书下的 IIS 管理器中,所以我看得更深入一些。我尝试像这样通过 IIS 管理器完成证书签名请求,并且证书出现了,我很高兴。

enter image description here

但是,我无法使用 GUI,因为我正在使用脚本。

我确认请求在带有私钥的证书注册请求中。

enter image description here

我确认 CSR 的公钥和我返回的 p7b 是相同的。

certutil -dump issuedcert.cer
certutil -dump certreq.req

问题:我从证书注册请求中导出了 CSR,并查看了公钥。它与 issuedcert.cer 中的不一样。看起来这就是问题所在,但为什么呢?

然后我尝试使用 certreq.exe 来接受响应,但它不起作用。

certreq.exe -accept -machine "C:\issuedcert.cer"

快完成了,但是没有。我不断收到此错误消息:

enter image description here

最佳答案

此错误表明 certreq 无法在证书存储的证书注册请求节点中找到相关请求对象。

此外,我建议检查证书请求中的公钥是否与颁发的证书中的公钥匹配。您可以使用 certutil -dump file.req 命令转储请求文件(会有公钥)和 cerutil -dump cert.cer 转储颁发的证书并比较公钥.对证书存储中的证书注册请求节点中的每个对象执行相同的操作(专注于本地计算机上下文)以查找具有匹配公钥的请求对象。

关于iis - 导入证书时出现 CRYPT_E_NOT_FOUND,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33129110/

相关文章:

ssl - KeyStore 密码和 key 密码的存储位置

ios - 我应该如何处理通过多个 channel 分发的应用程序的推送通知?

authentication - DotnetOpenAuth RefreshAuthorization 被阻止 403 禁止 (12202)

iis - 无需安装 Microsoft Report Viewer 即可发布网站

c# - 删除时出现 WebAPI 405 错误

SSL 警报编号 48 : Unknown CA, 即使使用 openssl 验证返回 OK

python - 由于 ssl 错误,无法在 python 3.6 中 pip 安装包

c# - 为什么我每天使用带有 ASMX Web 服务的 log4net 获得两个日志文件?

amazon-web-services - 为什么 https 在 AWS Elastic Beanstalk 上被阻止?

ssl - Openshift 上的齿轮间通信证书错误