信任来自 IIS 的自签名证书

Posted

技术标签:

【中文标题】信任来自 IIS 的自签名证书【英文标题】:Trust a self signed cert from IIS 【发布时间】:2018-03-20 08:52:00 【问题描述】:

我有一个外部托管的 iis 网络服务器,我在其中运行我的网站。我想向该网站添加一个自签名证书并在我的本地客户端上信任它,以从浏览器中删除“不安全连接”。

到目前为止我所做的如下

    在 IIS 中创建了自签名证书:服务器证书 -> 创建自签名证书。证书颁发给服务器名称,例如“ABCD01” 使用自签名证书创建了一个带有 https 绑定的网站。 使用以下方法从 IIS 导出自签名证书:服务器证书 -> 导出。这产生了一个 .pfx 文件 在本地客户端导入 .pfx 证书文件:管理计算机证书 -> 受信任的根证书颁发机构 -> 导入 将主机的主机名(ABCD01)和ip添加到hosts文件:C:\Windows\System32\drivers\etc\hosts

当我尝试在 Firefox 中打开网站(使用 https://ABCD01)时,我仍然收到“您的连接不安全”。我错过了什么?

【问题讨论】:

您使用的是什么浏览器? BTW,PFX中的证书不需要导出,需要导出为.CER格式,不带私钥。 我使用的是 Firefox 或 Chrome 我写了一篇非常详细的演练,介绍了如何在 Windows 上为 IIS 创建自签名证书。它应该回答您的所有问题,并为您提供测试和调试结果的方法。见***.com/a/51261506/430742 试试这个答案***.com/a/59733055/10794140,我在其中详细描述了如何信任证书。它也适用于 Firefox。 【参考方案1】:

有多个问题:

    IIS 证书生成器使用现代浏览器中已过时的 SHA1 签名算法创建自签名证书。您必须使用不同的工具来创建测试证书。例如,使用 PowerShell New-SelfSignedCertificate cmdlet,您可以在其中指定签名算法。查看此帖子以获取示例:https://***.com/a/45284368/3997611
New-SelfSignedCertificate ` -DnsName "ABCD01" ` -CertStoreLocation "cert:\LocalMachine\My" ` -FriendlyName“测试开发证书”` -TextExtension“2.5.29.37=文本1.3.6.1.5.5.7.3.1”` -KeyUsage DigitalSignature,KeyEncipherment,DataEncipherment ` -提供者“Microsoft RSA SChannel 加密提供者”` -哈希算法“SHA256”

    IIS 证书生成器无法使用 Google Chrome 中所需的 SAN(主题备用名称)证书扩展来构建证书。您必须使用不同的工具来创建测试证书。查看上面的示例以供参考。

    Google Chrome 使用内置的 Windows 证书存储来建立信任,而 FireFox 使用自己的证书存储。因此,将证书添加到 Windows 证书存储后,您必须手动将测试证书导入 FireFox。

【讨论】:

感谢您的解释!正如您所解释的,我将证书更改为 SHA256。 Firefox 的问题与您解释的完全一样,即单独的证书存储。它一导入就起作用了。 2019 年任何找到此答案的人的更新:IIS 证书生成器现在使用更安全的 SHA256RSA 算法。你可以去Server Certificates -> Your certificate -> View -> Details查看你的证书算法。 @Crypt32 如何将 DnsName 设置为 localhost?谢谢

以上是关于信任来自 IIS 的自签名证书的主要内容,如果未能解决你的问题,请参考以下文章

使用 HttpClient 信任自签名证书

为localhost创建受信任的自签名SSL证书(用于Express / Node)

如何信任 Android 上的自签名证书?

在 Windows 7 上信任 Java 7 的自签名证书

在调用 Web 服务时信任过期的自签名证书

在 .Net Core 控制台应用程序中生成受信任的自签名证书