如何修复Firefox 59不再在.dev virtualhost上接受我的自签名SSL证书


20

在我的本地Apache环境中,我有一个需要SSL进行开发的站点,因此我一直在使用自签名证书。到目前为止,该本地站点在Firefox和Chrome中运行良好,但是今天将Firefox更新到版本59之后,我无法再接受安全例外(在Chrome上,自签名证书继续有效)。

Firefox在阻止页面中为我提供了以下附加信息:

...使用了无效的安全证书。该证书是自签名的,因此不受信任。错误代码:SEC_ERROR_UNKNOWN_ISSUER

没有像以前那样允许例外的选项,但是我转到了“证书”下的“ Firefox首选项”,然后在“服务器”选项卡中为本地域添加了例外。然后,该证书将在正确的本地服务器名称中列出,详细信息显示我的证书设置(颁发者和颁发者相同),并具有有效的时间跨度。

任何人在使用FF 59时遇到类似的问题,或者可能有线索如何尝试使自签名证书在本地再次运行?


编辑:在FF 59发行说明中我没有看到任何提及,但是新版本中的某些内容导致我在* .dev域上的所有本地虚拟主机自动尝试建立https连接(也就是说,所有http * .dev的请求会自动发送到https URL)。也许与此行为有关的原因也正是导致我的实际https虚拟主机出现这些问题的原因。


1
我的猜测是,您现在需要一个用于自签名证书的CA,因为Firefox在最近的几个版本中逐渐加强了要求。但是,有了“让我们加密”,就不再需要使用自签名证书。
西蒙·格林伍德

我不想猜测,但我认为@SimonGreenwood是正确的。但是通常Firefox只是将新选项设置为默认选项,并允许您编辑设置。检查您的隐私设置。

@Broco如果涉及安全设置,则不是隐私设置。如上所述,我什至添加了一个安全例外,但是Firefox仍然坚持不能够验证证书,因为显然颁发者是未知的。
kontur

对我来说@kontur的链接是关于:preferences#privacy来设置隐私和安全设置,这就是为什么我说隐私。考虑将其发布为错误。

2
@SimonGreenwood有很多理由不使用本地加密。一个人不想设置让我们加密。
乔恩

Answers:


15

对于所有这些如何完全整合,我仍然不十分清楚,但是正如在此答案中 所指出的那样.dev现在域是官方TLD。因此,似乎浏览器强制执行某种HSTS行为并强制执行https连接。对于那些TLD,似乎我的自签名证书不再在Firefox中被接受。更改虚拟主机以使用它可以.test解决此问题,而无需完全更改我的自签名证书中的任何内容。

值得注意的是,从今天的版本59开始,在Firefox中我的非SSL虚拟主机也开始运行,因为HSTS行为似乎迫使我在未设置为通过SSL服务的虚拟主机上使用SSL。在Chrome上,这仍然可以正常使用,但是无论哪种方式,可以肯定地说,离开现在正式使用的.devTLD都可以解决很多麻烦。


1
是的,.dev自一段时间以来就是有效的TLD,因此请勿使用它来命名您的内部资源。其他名称均相同:请勿使用您认为其他人都不会使用的任何名称。可以使用RFC2606中引用的测试名称,也可以只在任何地方注册一个真实域名,然后使用子域名(例如)int.example.comdev.example.com后缀所有内部名称。这样您就永远不会遇到冲突或问题(只要您记得每年都要更新域名即可!)
Patrick Mevzek


1
感谢您的链接。那里提到的时间表并不完全一致,但是作者可能谈论了开发预览之类的内容。根据我现在所知道的,很难理解为什么浏览器供应商不会添加一些其他调试信息,尤其是有关.dev域上的SSL错误的信息。除非您知道这是一个TLD,否则您不可能推断出这是问题所在。
kontur

12

有一个简单的方法可以解决此问题。

  1. about:config
  2. 搜索“ network.stricttransportsecurity.preloadlist”。
  3. 将其设置为false

警告:这将完全禁用HSTS。查看此答案的注释,以获取有关此方法的缺点的一些讨论。我个人认为收益大于风险,但是您要为自己的安全负责。

在此处输入图片说明


4
这是一个非常糟糕的主意,因为此设置将应用于您访问的所有网站,而不仅仅是您自己的网站。您正在降低安全性。
Patrick Mevzek '18

我不同意。HSTS相对较新。在过去的20年中,没有它一直很好,因此说禁用它对安全性非常不利。其次,即使这是一个坏主意,但如果我希望我的开发服务器继续工作,实际上没有任何其他选择,而这并不需要对开发环境进行冗长的更改。
安迪·默瑟

1
这样的解决方案:security.stackexchange.com/a/154176至少仅影响一个站点,而不是所有站点。
Patrick Mevzek '18年

1
正如我所知道的那样,随着年龄的增长,这听起来是明智的,随着年龄的增长,您会意识到诸如“最佳实践”和“错误”之类的事情是灵活的,并且会随着时间而改变。人们现在认为是“错误”的东西,多年来一直没有被认为是错误的,并且将来可能不会再次出现。对于此特定讨论,我们只需要同意不同意即可。
安迪·默瑟

1
感谢您提供此修复程序,它在Firefox 59.0.1(和Firefox Dev Edition 60)中非常适合我。我们当前的.dev项目最终将移至另一个TLD后缀,但是目前这不能阻止本地开发。
杰克·巴斯曼

4

在页面上设置security.enterprise_roots.enabled为可以为我解决此问题,并允许我的自签名证书在开发期间正常工作。trueabout:config

关于此方法默认情况下的优点,这里有一些讨论:默认情况下,
将security.enterprise_roots.enabled设置为true

尽管此标志的目的是允许Firefox将计算机范围的CA根存储区用作证书颁发机构的有效来源,但这已解决了我自己的用例的情况,其中我使用了自签名的多域证书在本地进行测试(subjectAltName)。即使将证书添加到Firefox证书列表中,也直到我将其打开后,它才允许加载本地站点。


谢谢,成功了!
informatik01

0

蛇怪Web浏览器上也有同样的问题。我试图更改网络代理设置,或修改“ network.stricttransportsecurity.preloadlist”或“ security.enterprise_roots.enabled”标志...但是它没有解决缺少的按钮,为被阻止的网站添加证书。只有这样才能做到:

  1. 转到about:support
  2. 单击Open Directory浏览器配置文件。
  3. 完全关闭浏览器。
  4. 在上述目录中编辑文件“ SiteSecurityServiceState.txt ”。
  5. 查找并删除包含被阻止的HSTS站点的整行。
  6. 保存文件,然后在该站点上重新打开浏览器。

-3

我参加了“让我们加密”

https://letsencrypt.org/

一次仅有效3个月,但刷新可以自动进行。

如您在评论中所见,有一个陷阱。我们的开发和测试域称为dev-www.example.com和test-www.example.com。我们使用生产中的通配符证书。


5
我们不加密要依赖公开可用的服务器和域吗?我正在寻找在本地虚拟主机上使用SSL的选项。
kontur

是的,这对从事本地开发的人员不起作用。
安迪·默瑟

问题是关于本地设备

@Pieter和“本地开发”一样吗?因为那是我们的工作。
杰拉德·皮尔

1
@ GerardH.Pille如果只能从Internet访问服务器,则只能生成“让我们加密证书”。对于我的本地开发而言,情况并非如此,因此不可行。请告知我是否缺少某些东西。
kontur
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.