浏览器提示「你的连接不是专用连接」
2023 年 7 月 4 日 · 2 分钟读完
用 Edge 访问一些内网设备或测试服务器的 HTTPS 页面时,提示「你的连接不是专用连接」,有时连「继续访问」的按钮都没有,进不去。
临时办法:thisisunsafe
在这个提示页面上,直接用键盘敲 thisisunsafe:
- 把输入法切到英文;
- 鼠标点一下页面空白处;
- 依次按键
thisisunsafe(不是在地址栏里输入,屏幕上不会有任何显示),敲完页面会自动刷新进入。
这是 Chromium 内核(Chrome、Edge)留的一个后门,会跳过这个网站的证书检查。
只对自己确定安全的内网设备用。这个提示的本意是「对方的身份无法验证,可能有人在中间冒充」,对外网的网站这样绕过,等于放弃了 HTTPS 的保护。
为什么会提示
HTTPS 要求服务器出示一张证书,浏览器检查三件事:证书是不是受信任的机构(CA)签发的、有没有过期、证书上的域名和你访问的地址是否一致。任何一项不通过就会拦截。常见原因:
| 原因 | 典型场景 | 怎么修 |
|---|---|---|
| 自签名证书 | 内网设备、开发环境,证书是自己生成的 | 把证书(或自建的根证书)导入电脑的「受信任的根证书颁发机构」 |
| 电脑时间不对 | 工控机 BIOS 电池没电,时间回到了几年前 | 改对系统时间,所有网站一下子都好了 |
| 证书过期 | 网站忘了续期 | 网站管理员续期;自己的网站用自动续期 |
| 域名不匹配 | 证书签给 example.com,却用 IP 访问 |
用证书上的域名访问 |
| 中间代理 | 公司网络的上网行为管理会替换证书 | 按公司要求安装它的根证书 |
点地址栏左边的「不安全」→ 证书无效,能看到具体是哪一项出了问题(错误码如 NET::ERR_CERT_AUTHORITY_INVALID 表示不受信任,NET::ERR_CERT_DATE_INVALID 表示时间不对)。
延伸
- 自己的网站用免费证书:Let’s Encrypt 提供免费证书,90 天有效,用工具自动续期。像 Caddy 这样的 Web 服务器配置好域名就会自动申请和续期,完全不用管,我的 网站矩阵 就是这么做的。
- 内网自签名证书:用 mkcert 一条命令生成本地 CA 并安装到系统信任列表,再给内网 IP 或域名签发证书,浏览器就不再提示。
- 程序里访问自签名 HTTPS:C# 的
HttpClient同样会校验证书,报AuthenticationException。测试时可以设置HttpClientHandler.ServerCertificateCustomValidationCallback放行,但正式环境要用受信任的证书。HttpClient 的用法见 WinForm 里的简单 HTTP 服务器与客户端。 - HSTS:网站开启了 HSTS 时,浏览器不允许任何形式的跳过,连 thisisunsafe 也可能不管用,只能把证书问题本身修好。
原文首发于 blog.csdn.net