我有一台运行正常的 IIS 8.0 服务器(在 Windows Server 2012 上),其中安装了正常运行的 SSL。证书将在几天后到期,因此我正在尝试续订它。
当我尝试在 IIS 管理器中创建续订请求时,单击Finish
以下内容会失败:
---------------------------
Renew an Existing Certificate
---------------------------
There was an error while performing this operation.
Details:
Object reference not set to an instance of an object.
---------------------------
OK
---------------------------
当我尝试通过 MMC 中的证书管理单元执行此操作时,我发现上下文菜单中没有续订选项。我相信这两个问题都是由于证书位于WebHosting
(Web Hosting
)证书存储中造成的。
在这种情况下,我该如何创建续订请求?
谢谢!
答案1
好吧,事实证明,“更新”并不是我想要的,尽管你会认为它是。https://www.geocerts.com/csr/iis_renew_7告诉我我只是想发出新的请求,而不是进行续订。
我尝试将证书移至Personal
,这样我就可以发出续订请求,但 CA(在本例中为 Network Solutions)不喜欢该请求。不过,他们同意新的请求。所以最终一切都解决了。
答案2
我遇到了同样的问题,最后我创建了一个新的请求,而不是“续订”。不过,显然有一种方法可以修复续订功能 - 请参阅 https://blogs.msdn.microsoft.com/sroun/2014/07/25/fixing-object-reference-not-set-to-an-instance-of-an-object-when-using-shared-configuration-in-iis8-x/
答案3
我想补充有关这个情况的信息。
我发现,当“创建续订证书请求”的当前证书位于“Web 托管”存储中而不是本地计算机“个人”存储中时,就会发生发布的错误。
此外,如果创建了续订证书而没有创建续订证书请求,只需在原始授权服务器中续订证书并使用 IIS 选项“续订证书”导入,选择“完成证书续订请求”并再次选择“Web 托管”存储,续订证书将被导入但与私钥没有任何关联,因此它不会显示在 IIS 中并且无法绑定。但是,如果使用相同的选项并选择“个人”存储而不是“Web 托管”存储,则私钥与续订的证书相关联。
顺便说一句,这样做会丢失友好名称,并且我相信 IIS 自动绑定更新的证书将不起作用,因为原始证书绑定没有使用相同的存储。
因此,至少在第一次将续订的证书导入本地计算机“个人”存储时必须手动重新绑定 IIS 证书。希望后续续订的证书能够自动绑定。
关于“在 iis8-x 中使用共享配置时未将对象引用设置为对象实例”的参考修复并未解决这种情况。
我最后的想法是,如果 IIS 不完全支持,为什么它提供将证书导入“Web 托管”存储的功能。我相信这只是一个从未向 Microsoft 报告/识别的错误。Web 托管存储是在 IIS 8 中引入的,用于将动态证书加载到内存中,而不是像本地计算机个人存储那样批量加载证书。
我的服务器是带有 IIS 10 的 Windows 2019 服务器。
答案4
实际上,我通过创建一个新的 txt 文件并用它来写入续订请求,成功了。错误似乎是在续订过程尝试创建 txt 文件时发生的。手动创建该文件可以修复错误