证书存储中已安装的SSL证书,但它不在IIS证书列表中

时间:2014-01-09 01:04:45

标签: iis ssl-certificate

将通配符SSL证书安装到证书存储区后,证书不会出现在IIS证书列表中,以用于站点绑定。

证书安装正确,但证书中并未包含任何密钥。

如何在不执行新请求或联系某人获取密钥的情况下解决此问题(例如,如果是在发布前一天?;-))

18 个答案:

答案 0 :(得分:53)

我今天遇到了这个问题。由于时间范围和其他一些问题,无法从提供商处获取密钥。

我找到了以下解决方案here(在pixelloa的评论下)并且认为在Stack Overflow上得到答案也是好的。

如果证书没有私钥,您可以通过执行以下操作来解决此问题:

  

要解决此问题,请使用MMC管理单元将证书导入PERSONAL,   单击它并获取序列号#line。转到dos,运行certutil   -repairstore我的“在这里粘贴序列号”(你需要引号)然后用个人证书刷新MMC,右击它 - 导出 - 选择   除了DELETE PRIVATE KEY之外的一切,点击确定。然后去IIS和   IMPORT证书而非完成请求。

对于它的价值,我实际需要做的就是运行certutil -repairstore命令,我的证书有效。我确实运行了导出并为导出本身设置了密码,但我没有重新导入证书。证书现在显示在IIS的证书列表中,可用于HTTPS绑定。

我希望这有助于某人。

答案 1 :(得分:13)

由于上述答案的灵感,有同样的问题并找到了简单的解决方案。这是一个快速的逐步总结:

  1. 首先打开带有证书插件的MMC。
  2. 将新证书(缺少证书图标左上角的键)拖放到"个人"证书商店。我这样做是因为"虚拟主机" store是一个所谓的友好名称,而不是商店的真实名称,我记不起命令提示实用程序 certutil 所需的真实名称。相反,我只记得"个人"的真实姓名。是"我的"。让其他人轻松完成,一旦完成,我只需将证书移回"虚拟主机"。
  3. 一旦新证书(缺少密钥)在"个人" store,启动命令提示符并发出以下命令: certutil -store"我的" (假设需要引号)
  4. 请注意证书的序列号。它位于证书转储的第一行。如果您在"我的"中有其他证书。商店,然后你需要找到你刚才搬家的那个。例如,查看到期日期和名称。标记并复制序列号。
  5. 现在发出命令 certutil -repairstore"我的" <在此处粘贴序列号> 并注意私钥已经过验证。
  6. 将证书移回"虚拟主机"存储和刷新。您现在应该看到证书图标覆盖在左上角的小键图标上。
  7. 现在,您应该可以从IIS绑定对话框中选择证书。
  8. 玩得开心!

答案 2 :(得分:6)

如果您使用 Godaddy 作为您的证书颁发机构,那么您正遇到此问题; 您所要做的就是重新修改证书。我尝试了上面的 certutil -repairstore my“在这里粘贴串口号”,但系统要我使用智能卡进行身份验证。 (在Server 2016和2012R2上运行IIS10)

当我创建证书申请时,经历了重新键入的过程并经历了“完成证书申请”的过程,我能够成功地配置“绑定...”而证书不会消失。

答案 3 :(得分:5)

如果您的服务器已成功安装证书,则可以从另一台服务器上的IIS导出pfx。

更新

进行另一轮证书更新(续订)我在我尝试的每台服务器上再次遇到此问题。 @ Geir的回答并没有奏效,但确实给了我一个想法。我确定了生成证书申请的服务器,并在那里成功安装了新证书。从该服务器,我能够导出pfx,然后在其余服务器上导入pfx版本。无需重做证书申请。

答案 4 :(得分:3)

要解决此问题,您需要导入私人证书(PFX)。

如果您没有PFX,请使用OpenSSL生成它:

  • 下载并安装OpenSSL
  • 打开命令行并运行:

    openssl pkcs12 -export -in public_certificate.cer -inkey server.key -out private_certificate.pfx

然后,安装private_certificate.pfx(右键单击 - >安装证书)。

现在,您的证书不再消失,您可以通过SSL绑定网站。

一个很好的资源:https://blog.lextudio.com/the-whole-story-of-server-certificate-disappears-in-iis-7-7-5-8-8-5-10-0-after-installing-it-why-b66e802baa38

答案 5 :(得分:2)

有同样的问题。

您需要确保安装在与创建“CSR”文件的服务器相同的服务器上。否则,它将没有私钥。

如果你拿到了证书,只要求重新密钥,就会要求提供新的CSR文件。即Go Daddy允许您重新键入,只需找到证书,然后点击“管理”

我不是这方面的专家,但这成功了。

答案 6 :(得分:2)

如果您是在您的旧证书申请获得批准后生成新的证书申请。新请求将导致IIS删除与您的第一个证书请求关联的私钥,因此当您导入与第一个请求关联的(现已签名)证书时,它将没有关联的私钥用它。由于它没有私钥,因此不能用于SSL绑定,也不会出现在IIS管理器中。

您可以恢复私钥,因为它存储在您计算机上的多个位置:

  1. 开始 - > mmc.exe - >添加管理单元 - >证书 - >电脑帐号。验证已安装的证书是否出现在“个人/证书”选项卡中。如果没有,请导入它。缺少的私钥可通过包含密钥图标的证书而非旁边的图标显示。
  2. 双击打开证书(.cer)文件。在“详细信息”选项卡中,记下序列号。
  3. 开始 - > CMD.EXE。输入“certutil -repairstore my(serialnumberhere)”。序列号不应有空格。可以是8位或更多位数。
  4. 如果certutil命令返回“-repairstore命令成功完成”,则证书的私钥很可能已恢复。您可以通过转到MMC证书列表并按F5来验证这一点 - 如果成功,您的证书现在将在其图标中有一个小键。然后,您就可以从IIS中选择证书。

    如果此操作失败,您的私钥将不再​​可用,您需要向签名机构发送新的证书签名请求。

答案 7 :(得分:1)

当安装的证书不包含您的私钥时,会发生这种情况。

为了检查证书是否包含私钥以及如何修复它,请使用这个不错的tutorial provided by Entrust

答案 8 :(得分:1)

我有一个密钥文件和一个 crt文件,但是它在IIS中不会显示,因为导入期间我无法将密钥附加到证书上。 最终创建了一个包含证书和密钥的 pfx文件,然后它就起作用了(在导入到计算机而不是本地用户时)

使用OpenSSL创建文件(首先下载)。

openssl pkcs12 -export -out domain.name.pfx -inkey domain.name.key -in domain.name.crt

答案 9 :(得分:1)

当你在这里有一个证书和两个不同的Web服务器时,我如何修复它:

  1. 列表项
  2. 您应该像往常一样在其中一台服务器上生成证书 在IIS中然后在该服务器上,您还可以完成证书 在IIS中。
  3. 运行DigiCertUtil程序并导出该工作 证书
  4. 在安全性中转到IIS中的其他Web服务器 证书从步骤3导入该文件。
  5. 然后使用该证书创建Binding。

答案 10 :(得分:1)

我有类似的问题,尝试了所有可能的组合以及接受的答案,没有任何运气。最后我发现DigiCert SSL Utility帮助我通过几次点击安装证书。 You can download it here。 希望这个答案可以为其他人节省一些时间。

答案 11 :(得分:1)

问题是未从IIS生成证书请求(CSR)。如果您是从其他来源生成的,例如OpenSSL,它将带来问题。您需要从IIS生成证书申请(CSR) - >创建证书请求,然后输入所有详细信息,然后发送给供应商以重新生成SSL证书。之后我的工作正常。

答案 12 :(得分:0)

我在IIS 10中也有相同的内容。

我通过使用IIS管理器导入.pfx文件来修复它。

选择服务器根目录(在sites-node上方),单击右侧窗格中的“Server Certificates”并在那里导入pfx。然后,我可以在为网站

下的网站创建ssl绑定时从下拉列表中选择它

答案 13 :(得分:0)

其他答案中提到的certutil -repairstore命令对我有用,但是,如果您的证书位于“ Web托管”存储中,并且您不想移动它,则使用“ Web托管”的真实(内部)名称商店是“ WebHosting”,适用于按照此处提到的步骤进行操作的任何人。

答案 14 :(得分:0)

如果您使用的是Godaddy证书,则问题在于创建证书请求的计算机与您要尝试完成请求的计算机是不同的。因此,请执行以下操作:

  1. 使用创建的Godaddy的“ generate-private-key.txt”文件。使用此文件来创建.pfx证书(带有私钥) 您可以使用OpenSSL命令:

    openssl pkcs12-导出-out {mydomain} .pfx -inkey生成-private-key.txt -in {您的.crt文件}

  2. 上面的命令将生成带有私钥{mydomain} .pfx的证书。

  3. 使用“导入”选项将此证书导入IIS

答案 15 :(得分:0)

对于正在使用GoDaddy生成的IIS证书的任何人,您都必须从IIS生成证书请求。 GoDaddy网站上的说明有误,希望这可以节省一些时间。

https://ca.godaddy.com/help/iis-8windows-server-2012-generate-csrs-certificate-signing-requests-4950

在GoDaddy论坛上找到了一个名为mcdunbus的人的答案。这是文章https://www.godaddy.com/community/SSL-And-Security/Trouble-installing-SSL-Certificate-on-IIS-8n-Windows-2012/td-p/39890#

答案 16 :(得分:0)

我们的团队尝试在新VM上应用通配符证书时遇到了类似的问题。

因此,当我们尝试将现有证书复制到新VM时,情况可能会有所不同,但最终还是遇到了同样的问题(IIS证书列表中缺少证书)。

这篇文章(下面的链接)为我们提供了帮助:

所以窍门是从原始服务器导出证书并在导出过程中包括私钥(添加密码以保护证书)

然后将其导入到要在其中安装证书的新服务器。将密钥标记为可导出,以便以后可以导出。

由于本文已对其进行了详细记录,因此我不想逐步进行。

https://www.digicert.com/kb/ssl-support/certificate-pfx-file-export-import-iis-10.htm

答案 17 :(得分:0)

我遇到了同样的问题。这里的问题是我在本地系统上安装了 Godaddy 证书,然后复制到服务器上,因此没有私钥。因此,请使用在线转换器将 ssl 转换为 .pfx,然后安装它。肯定有用。