为 Remote Hosts 增加忽略 TLS 证书校验的选项
问题描述
在使用 SwitchHosts v5.0.2 配置 HTTPS 类型的 Remote Hosts 时,如果远程服务使用的是企业内部 CA 或自签名 CA,而该 CA 未被操作系统信任,Remote Hosts 将无法正常验证/刷新。
例如:
https://hostify.example.com/api/hosts/raw/stage?apiKey=***
SwitchHosts 提示:
error sending requests for https://hostify.example.com/...
但在 Windows 环境中,通过 curl 测试发现:
curl.exe -v "https://hostify.example.com/..."
会因为证书不受信任而失败:
schannel: SEC_E_UNTRUSTED_ROOT 证书链是由不受信任的颁发机构颁发的。
而使用 -k 忽略证书校验后:
curl.exe -k -v "https://hostify.example.com/..."
可以正常建立 HTTPS 连接,并返回:
HTTP/1.1 200
因此可以确认 Remote Hosts 服务本身正常,问题是 TLS 证书信任链导致的。
功能建议
希望未来可以为 Remote Hosts 增加一个可选配置:
忽略 TLS/SSL 证书错误 ☐ 启用
建议该配置:
默认关闭; 最好针对单个 Remote Host 配置,而不是全局配置; 开启时给予安全风险提示; 允许用户明确选择是否忽略服务器证书校验。 更安全的替代方案
如果实现上可行,也可以考虑支持为 Remote Hosts 配置自定义 CA 证书。
这样对于使用企业内部 PKI 的场景,可以在不关闭 TLS 安全校验的情况下正常访问内部服务。
使用场景
该功能对于企业内部环境比较有用。例如:
内部 HTTPS 服务使用企业私有 CA; 测试/预发环境使用内部签发的证书; 操作系统证书库无法或不方便安装企业 CA; Remote Hosts 服务仅在企业内网使用。
理解关闭证书校验会降低 HTTPS 的安全性,因此建议保持默认开启证书校验,仅允许用户主动选择关闭。
谢谢!
Source: oldj/SwitchHosts