You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

CSR在其他设备生成时,如何让IIS服务器证书显示已导入的CER?

嘿,我帮你理清楚这个问题的解决办法。你现在的情况是:自己生成了CSR,CA签了CER并导入到了个人存储,但IIS的服务器证书列表里看不到它,用certutil -repairstore还因为智能卡报错,对吧?

核心问题其实是证书和生成CSR时对应的私钥没关联上,IIS只认那些和私钥绑定好的服务器证书,咱们一步步来解决:

优先试试IIS自带的「完成证书请求」功能

这是最贴合你操作流程的方法,因为你本来就是在这台机器生成的CSR,IIS应该还保留着对应的挂起请求:

  • 打开IIS管理器,找到你的服务器节点,双击「服务器证书」
  • 在右侧操作面板里点击「完成证书请求」
  • 弹出窗口后,选择你的site.cer文件,给证书起个友好名称(方便识别),存储位置选「个人」,然后点确定
    这样IIS会自动把CER和之前生成CSR时留下的私钥绑定,之后你就能在服务器证书列表里看到它了。

如果找不到挂起请求,试试手动关联私钥和证书

要是上面的方法没成功,可能是挂起请求被清理了,那咱们手动把证书和私钥绑起来:

  1. 先获取证书的序列号:打开certlm.msc(本地计算机证书存储),找到个人→证书里的site.cer,双击它→「详细信息」标签页,找到「序列号」,把它复制下来(注意去掉空格)
  2. 打开管理员权限的命令提示符,执行:
    certutil -repairstore my <你的证书序列号>
    
    你之前报错智能卡,大概率是没加管理员权限,或者用了当前用户存储而非本地计算机存储。如果还是不行,试试指定当前用户存储:
    certutil -repairstore -user my <你的证书序列号>
    

还有一招:导出PFX后重新导入IIS

如果上面的都不行,咱们把私钥和证书打包成PFX再导入:

  1. 打开certmgr.msc(当前用户证书存储),找到生成CSR时创建的那个「待颁发」证书(就是和你的CSR对应的私钥载体),右键→「所有任务」→「导出」
  2. 选择「是,导出私钥」,跟着向导生成PFX文件(可以设置密码或者留空)
  3. 回到IIS的服务器证书页面,点击「导入」,选择刚生成的PFX文件,输入密码(如果设置了),导入后证书就会出现在列表里了

最后检查权限

如果还是看不到,可能是IIS的应用池账户没权限访问私钥:

  • 在证书管理器里右键你的证书→「所有任务」→「管理私钥」
  • 添加你的应用池账户(比如IIS AppPool\DefaultAppPool),给它读取权限
  • 重启IIS服务,再去服务器证书列表看看

内容的提问来源于stack exchange,提问作者whoisearth

火山引擎 最新活动