谷歌浏览器本地主机名错误 | NET :: ERR_CERT_AUTHORITY_INVALID

70
突然间,我好像遇到了使用本地主机的谷歌浏览器问题。
我试图访问我的任何开发网站(使用Ampps),但是我收到了以下错误信息:-
攻击者可能正在尝试从website.dev(例如密码、消息或信用卡)窃取您的信息。 了解更多 NET :: ERR_CERT_AUTHORITY_INVALID
当我访问任何开发网站时,它会自动从http://website.dev重定向到https://website.dev。 我在Safari或Firefox中没有任何问题,所以我不明白发生了什么。
我已经尝试重新安装Google Chrome,将其重置为出厂默认设置...
我认为这可能是Keychain Access -> Certificates的问题,但如果是这种情况,那不是意味着Firefox和Safari也无法工作吗?
我花了一段时间寻找解决方案,但到目前为止还没有什么效果,所以我希望能提供一些建议,告诉我如何解决这个问题。 我甚至无法继续通过此警告,因为我没有得到下面显示的进入链接(不安全):

enter image description here


2
你好!我这里也有完全相同的问题。有进展吗?奇怪的是,例如昨天一切都很好,但今天却完全崩溃了。我怀疑是 Chrome 更新了(现在我的电脑上是 63.0.3239.84 版)。我在网上阅读了几篇文章/帖子,并尝试清除缓存、重新安装 Chrome、删除域名的 HSTS 策略,以及使用 https 和 http 访问等方法。 - curveball
1
@curveball 我以为我疯了。我在另一台电脑上进行了完全不同的安装测试,结果一切正常,但我没有想到这可能与.dev有关,而我是在.localhost上进行测试的!它真的是一夜之间发生的,所以肯定是Chrome的问题。谷歌,多亏你们搞砸了几天的工作,试图解决这个愚蠢的问题。他们为什么要将.dev设置为强制SSL? - Alison
@Alison,欢迎!是的,这个问题突然出现了。我不够熟练,无法列出他们这样做的确切原因。它围绕着“https everywhere”的想法。也许,他们非常想添加这个功能,以至于他们匆忙地在一夜之间完成了它。虽然他们在Chrome中显示的消息完全真实(“您的连接不是私密的”),但它也很令人困惑,因为有几种不同的原因会导致相同的消息,并且这种行为的真正原因有点隐藏。在找到要点之前,我自己尝试了几个建议。 - curveball
3
原因是:Chrome 63通过预装HSTS强制将.dev域名转换为HTTPS(详细解释请见链接)。 - quotesBro
在开发过程中,我遇到了完全相同的问题,而且没有办法让 Chrome 绕过这个警告(按钮被隐藏了):如果您无法点击该按钮以进入网站(在我的情况下是本地主机上的应用程序),您可以简单地输入 thisisunsafe,然后就可以继续了。来源:https://medium.com/@dblazeski/chrome-bypass-net-err-cert-invalid-for-development-daefae43eb12 - Big Dude
8个回答

200
这个解决方案在Chrome 119中不再适用。

导航到

chrome://flags/#allow-insecure-localhost

并将其设置为启用。

enter image description here


3
在这个问题上花了一整天的时间,终于找到了一个有用的解决方法! - CRM
11
这仅适用于字面上的 "localhost" 主机名,而不是其他本地域名。 - Mike Shiyan
如果您正在尝试在新安装的浏览器上运行未经配置的API(.Net),那么这基本上应该可以工作。对我来说有效。谢谢! - Marin
在使用BISS时,遇到了QUALIFIED CERTIFICATE FOR QUALIFIED ELECTRONIC SEAL的问题。这个问题已经解决了,它在Chrome中无法工作,但在Firefox中可以。非常感谢! - Martin Patsov
3
这个标志已经在Chrome 119中被移除。 - undefined
显示剩余3条评论

38

经过试验,我想出了一种解决方案。

首先,让我们来谈谈问题:这个错误的原因是我们都在本地开发中使用了.dev域。如果你去这里,你会发现根.dev域是由谷歌拥有的,在Chrome中应用HSTS他们强制将此域重定向到https。由于我们使用.dev域,我们被重定向到https版本,同时我们没有安装任何实际的证书。所以,我们看到了这个令人烦恼的错误。如果你去chrome://net-internals/#hsts,你可以检查你的.dev域名,你会发现

static_sts_domain: dev
static_upgrade_mode: FORCE_HTTPS
static_sts_include_subdomains: true

这证实了HSTS确实在*.dev上生效。策略类型是静态的,并且据我所知,它已经硬编码为将.dev域名重定向到https。

因此,有至少两种方法-获取并设置实际证书或仅在httpd-vhosts.conf中使用另一个(非.dev)根域。对于您的本地开发,我采用了另一个根域路由,解决了这个问题。(不要忘记更新/etc/hosts并重新启动apache)。


2
感谢 @curveball 的解释 - 这是一个新的事情吗,因为我已经使用 .dev 作为所有我的域名两年了,之前从来没有遇到过这样的问题。它在我的笔记本电脑上仍然可以使用 .dev,但在我的 iMac 上不能使用。它们都运行相同版本的操作系统和 Chrome 版本。 - nsilva
再次感谢@curveball - 所以今后只需使用“test”而不是“test.dev”,或者我们可以使用其他类似于test.yourcompanyname的名称?(只要它不是已经被使用的) - nsilva
嗨!我已经切换到example.site,现在我使用“example.site”而不是“example.dev”。但你可以尝试适合你的任何东西。顺便说一句,“.test”听起来像是“.dev”的一个很好的替代品。也许,“example.test”(假设“.test”在Chrome中的行为不像“.dev”)? - curveball
1
非常感谢你,因为这让我疯狂了,我甚至没有想到它可能与.dev有关。我确实看到了static_upgrade_mode: FORCE_HTTPS设置,但出于某种原因没有将其与该特定域名扩展名相关联。在我的Chrome浏览器中,我甚至无法绕过它;它只是一个错误页面,没有任何通常的“不安全站点”之类的东西。老实说,我认为这应该报告为一个bug,或者至少应该有一个警告。他们难道不知道我们中有多少人使用.dev作为本地主机选项吗?哈哈。 - Alison
@nsilva 是的。使用“.test”(.site、.mydev等)是恢复正常的最简单、最快速的方法。据我了解,如果值得的话,您也可以尝试在本地设置真实证书,这样您就会在本地拥有httpS://yoursite.dev。否则,似乎无法避免针对“*.dev”的重定向,因为这种行为是在Chrome中硬编码的(至少目前是这样,也许他们在未来的版本中会默认关闭或使此策略动态)。 - curveball
显示剩余2条评论

6

这真的很麻烦,但将本地网站映射到除 .dev 之外的其他名称(我个人使用 .devo)确实可以解决在 Chrome 中出现的问题。另外,在 Mozilla Firefox 中添加页面例外,就可以不用再处理这个问题了。这只是 Chrome 63+ 中的一个问题。


3
似乎这个东西没有用'.dev'也能工作,但奇怪的是,过去两年来,我所有本地主机域名都使用了.dev并且一直在工作,但突然间它只在Chrome上停止工作了。 - nsilva
我过去两年一直在使用.dev,但突然间它停止工作了。以下是解决方法,供大家参考。谢谢。 - Tarek K. Ajaj
这个答案对我来说更像是一条评论。这不会为此问题的特色观众提供任何帮助,他们在你的回答中也没有用处。你能否更新你的答案,并提供解释等内容? - Tomm
没问题。我编辑了我的回答,希望能帮到更多人。 - Mihail Ivanchev
你可以在Mozilla Firefox中为该页面添加一个例外。如何操作? - Brady Dowling

4

你也可以使用 .local :) - solomonculaste
1
@solomonculaste,是的,你可以这样做,但可能会像.dev一样被认领。最好使用.test https://tools.ietf.org/html/rfc2606#section-2 ,这样就不用再担心了。 - lasec0203
谢谢分享这篇文章。它写得很好,也很有道理。我已经将我的本地开发切换到使用.loc - Casper Wilkes

0

我遇到了同样的错误,因为CRL文件已经过期了,解决方法是更新CRL文件。


0

您需要将远程站点证书添加到本地密钥库中

  1. 要从远程站点下载证书,您需要使用keytool,以管理员身份打开gitbash并运行以下命令以生成证书

    openssl s_client -showcerts -connect host:port

  2. 将上述命令的值保存到.crt文件中,从-----BEGIN CERTIFICATE----------END CERTIFICATE-----

  3. 要将证书添加到本地密钥库中,请运行以下命令

    keytool -import -noprompt -trustcacerts -alias name_of_certificate -file "path_of_dot_crt_file" -keystore "C:\Program Files\Java\jdk1.8.0_192\jre\lib\security\cacerts" -storepass changeit

您还可以将下载的证书添加到浏览器中。


我尝试在Android设备上安装两个导出的证书,但是没有成功。 - Machado

-1

对于这个问题的一个快速解决方法是在隐身模式下打开Chrome标签页:Shift-CMD-N


-1

在我的情况下,为了解决问题以便我可以“继续不安全操作”,我需要前往:

chrome://net-internals/#sockets

然后点击:“关闭空闲套接字”、“清除套接字池”

之后前往:

chrome://net-internals/#dns

然后点击“清除主机缓存”

如果仍然无法解决问题,且您是Mac用户,请尝试使用苹果的Keychain Access工具删除本地主机证书后再重复上述步骤。


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