在我的本地 Apache 环境中,我有一个需要 SSL 进行开发的站点,因此我一直在使用自签名证书。到目前为止,本地站点在 Firefox 和 Chrome 中运行良好,但今天将 Firefox 更新到版本 59 后,我无法让它接受安全例外(在 Chrome 上,自签名证书继续有效)。
Firefox 在被阻止的页面中向我提供了以下附加信息:
... 使用无效的安全证书。该证书不受信任,因为它是自签名的。错误代码:SEC_ERROR_UNKNOWN_ISSUER
这里没有像以前一样允许例外的选项,但我转到了 Firefox 首选项下的证书,然后在“服务器”选项卡中为本地域添加了例外。然后证书在正确的本地服务器名称中列出,详细信息显示我的证书设置“颁发者”和“颁发给”相同,并且有效时间跨度相同。
有谁遇到过与 FF 59 类似的问题,或者知道如何尝试让自签名证书在本地再次运行?
编辑:我没有看到任何关于这一点的提及FF 59 发行说明但新版本中的某些功能会导致我在 *.dev 域上的所有本地虚拟主机自动尝试建立 https 连接(也就是说,所有针对 *.dev 的 http 请求都会自动发送到 https URL)。也许这种行为也是导致我的实际 https 虚拟主机出现这些问题的原因。
答案1
答案2
我仍然不完全清楚这一切是如何结合在一起的,但正如指出的那样在这个答案中 .dev
域名现在是官方 TLD。因此,浏览器似乎强制执行某种 HSTS 行为并强制使用 https 连接。对于这些 TLD,我的自签名证书似乎不再被 Firefox 接受。将我的虚拟主机更改为使用.test
解决了该问题,而无需更改我的自签名证书中的任何内容。
值得注意的是,在 Firefox 中,我的非 SSL 虚拟主机从今天的 59 版开始也出现了问题,因为 HSTS 行为似乎强制在未设置为通过 SSL 服务的虚拟主机上使用 SSL。在 Chrome 上,这仍然有效,但无论如何,可以肯定地说,放弃现在正式使用的.dev
TLD 将解决许多麻烦。
答案3
设置security.enterprise_roots.enabled
为true
该about:config
页面为我解决了这个问题并允许我的自签名证书在开发过程中发挥作用。
这里有一些关于默认启用此功能的优点的讨论:
默认将 security.enterprise_roots.enabled 设置为 true。
尽管此标志的目的是允许 Firefox 使用机器范围的 CA 根存储作为证书颁发机构的有效来源,这解决了我自己的用例的情况我有一个自签名的多域证书,用于本地测试(subjectAltName)。即使我将证书添加到 Firefox 证书列表中,也直到我打开它后才允许本地站点加载。
答案4
我选择了“Let's Encrypt”
https://letsencrypt.org/
每次仅有效 3 个月,但可以自动刷新。
正如您在备注中看到的,有一个问题。我们的开发和测试域名分别为 dev-www.example.com 和 test-www.example.com。我们使用生产中的通配符证书。