由于 Chrome 强制使用 https,因此无法访问我的路由器网页

由于 Chrome 强制使用 https,因此无法访问我的路由器网页

我无法访问我的路由器网页http://192.168.1.1因为它被重定向到https://192.168.1.1(给我ERR_SSL_VERSION_OR_CIPHER_MISMATCH)。我知道谷歌因为某些原因切换到了https,但我根本无法打开路由器。

失败的解决方案:

  1. 尝试在笔记本电脑上使用 Chrome 和 Edge,但无法打开网页。
  2. 尝试使用手机上的 chrome 打开网页,但无法打开网页
  3. 尝试打开chrome://net-internals/#hsts并查询192.168.1.1但它给了我Not Found;看来它不适用于 IP 以及网站。
  4. 尝试打开匿名网页,但打开网页失败。

这个问题是最近才出现的,stackoverflow 上的任何解决方案都无济于事。

有什么建议吗?

答案1

解决此问题的一种方法是通过反向代理。

  • 在您的网络上放置一个 Web 服务器,例如 Apache;也许您已经有一个了。
  • 为路由器创建一个主机名,例如router.local,它实际上只是 Web 服务器的别名,而不是 192.168.1.1。
  • 在 Web 服务器中,创建一个虚拟主机定义,router.local其反向代理为 192.168.1.1。

下面是我实际使用的 Apache 定义。它需要加载一些模块,例如mod_proxymod_https当然mod_ssl

<VirtualHost *:443>
  ServerName router.local
  ServerAlias router    
  SSLEngine on
  CustomLog /var/log/apache2/router.log common
  ProxyPass "/" "http://192.168.1.1/"
  ProxyPassReverse "/" "http://192.168.1.1/"
</VirtualHost>

您可能需要虚拟主机而不是仅仅代理子页面 URL 的原因webserver.local/router在于路由器的 Web UI 可能包含对诸如 之类的资源的绝对引用。因此,浏览器将尝试从 Web 服务器获取这些资源/favicon.ico/script.js例如 而不是webserver.local/style.csswebserver.local/router/style.css我的路由器就是这种情况。

HTTPS 连接终止于您的 Web 服务器,该服务器是最新的,并支持所有必需的 TLS 密码。代理连接到旧路由器(如果需要,甚至可以通过 HTTP 连接:在这种情况下,您可以通过将路由器和服务器直接连接在一起来降低风险)。

我没有在上面指定 SSL 凭据VirtualHost,因此浏览器看到的证书是 Web 服务器自己的域的证书。该证书与router.local域不匹配;它是供外部使用的真实证书,例如example.com。浏览器将出现错误,并且必须被告知继续使用证书example.comhttps://router.local(在 Google 手机上的最新 Chrome 上运行良好。)

解决不匹配问题的方法是创建一个用于路由器的自签名证书,然后VirtualHost使用SSLCertificateFile和其他参数在定义中指定它;但当然,您仍然需要在浏览器端接受自签名证书,这同样令人厌烦。

相关内容