信任来自IIS的自签名证书

15

我有一个托管在外部的iis web服务器,我在上面运行我的网站。我想要为这个网站添加自签名证书并在本地客户端信任它,以消除浏览器中的“不安全连接”提示。

到目前为止,我所做的是:

  1. 在IIS中创建了一个自签名证书:服务器证书 -> 创建自签名证书。该证书发行给服务器名称例如“ABCD01”。
  2. 使用自签名证书创建了具有https绑定的网站。
  3. 使用“服务器证书 -> 导出”从IIS中导出了自签名证书,结果生成了一个.pfx文件。
  4. 在本地客户端计算机证书中导入了.pfx证书文件:管理计算机证书 -> 受信任的根证书颁发机构 -> 导入
  5. 将主机名(ABCD01)和主机的IP地址添加到hosts文件中:C:\Windows\System32\drivers\etc\hosts

当我尝试在Firefox中打开网站(使用https://ABCD01),仍然会得到“您的连接不安全”的提示。我漏掉了什么?


2
你使用的是哪个浏览器?顺便说一句,你不需要将证书以PFX格式导出,而是需要以.CER格式导出,但不包含私钥。 - Crypt32
我正在使用Firefox或Chrome。 - Thomas Schneiter
我已经写了一个非常详细的步骤说明,介绍如何在Windows上为IIS创建自签名证书。它应该能回答你所有的问题,并提供测试和调试结果的方法。请参见https://dev59.com/LGIk5IYBdhLWcg3wRMJQ#51261506。 - Jpsy
尝试这个答案 https://stackoverflow.com/a/59733055/10794140,其中我详细描述了如何信任证书。它也适用于Firefox。 - ezio4df
1个回答

26

存在多个问题:

  1. IIS证书生成器使用已过时的SHA1签名算法创建自签名证书,现代浏览器不再支持。您需要使用其他工具来创建测试证书。例如,使用PowerShell New-SelfSignedCertificate cmdlet,其中可以指定签名算法。请参考此帖子获取示例:https://stackoverflow.com/a/45284368/3997611
New-SelfSignedCertificate `
    -DnsName "ABCD01" `
    -CertStoreLocation "cert:\LocalMachine\My" `
    -FriendlyName "test dev cert" `
    -TextExtension "2.5.29.37={text}1.3.6.1.5.5.7.3.1" `
    -KeyUsage DigitalSignature,KeyEncipherment,DataEncipherment `
    -Provider "Microsoft RSA SChannel Cryptographic Provider" `
    -HashAlgorithm "SHA256"
  1. IIS证书生成器无法构建包含SAN(主题备用名称)证书扩展的证书,而这在Google Chrome中是必需的。您需要使用其他工具来创建测试证书。请参考上面的示例。

  2. Google Chrome使用内置的Windows证书存储来建立信任,而Firefox使用其自己的证书存储。因此,在将证书添加到Windows证书存储后,您需要手动将测试证书导入Firefox。


1
谢谢您的解释!我按照您的说明将证书更改为SHA256。Firefox的问题正如您所解释的那样,是由于单独的证书存储引起的。一旦导入,它就可以工作了。 - Thomas Schneiter
6
对于在2019年查看此答案的任何人:IIS证书生成器现在使用更安全的SHA256RSA算法。 您可以通过转到“服务器证书->您的证书->查看->详细信息”来检查证书的算法。 - Adam
@Crypt32 怎样将 DnsName 设置为 localhost 呢?谢谢。 - VAAA

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接