Surge HTTP 处理:HTTPS 解密
查看【Surge】专题可浏览更多内容
关于「HTTPS 解密」功能在官方的
《Surge 官方中文指引:理解 Surge 原理》的 章节 5 TLS,HTTPS 与 MITM 详细讲解了 TLS 和 HTTPS 的关系,TLS 的作用,以及怎样进行 MITM。
所以本文只阐述 MitM 的配置:
安装并信任证书
打开 Surge,在「首页」里找到「MitM」卡片,选择「配置根证书」
选择「生成新的 CA 证书」,然后选择「安装证书」,在安装后打开「跳过服务端证书验证」。
选择「安装证书」
- 「允许」下载配置描述文件;
- 进入系统「设置」里的「通用」;
- 在「通用」里的「描述文件」,安装「已下载的描述文件」;
- 在「通用」里的「关于本机」,选择「证书信任设置」并开启信任刚才安装的证书;
MitM 设置
[General]
[Rule]
FINAL,DIRECT
[MITM]
skip-server-cert-verify = true
ca-p12 = MIIJtQ.........
ca-passphrase = password
hostname = *google.com
Surge 仅会解密 hostname
指定的主机名的请求。
- 可使用通配符
*
和?
; - 可使用前缀
-
将特定主机名排除; - 默认仅解密发往 443 端口的请求(可使用如
example.com:80
解密特定端口,或使用如example.com:0
解密所有端口); <ip-address>
表示匹配所有主机名为 IP 地址的连接;<ipv4-address>
表示匹配所有主机名为 IPv4 地址的连接;<ipv6-address>
表示匹配所有主机名为 IPv6 地址的连接;
iOS 系统和某些应用有严格的安全策略,仅信任某些特定的证书,对这些域名启动解密可能导致问题,如:*.apple.com
、*.icloud.com
。
例子
google.com
:解密所有发往google.com
上的 443 端口的请求;google.com:8443
:解密所有发往google.com
上的 8443 端口的请求;*.google.com:0
:解密所有发往google.com
及其子域名上所有端口的请求;-google.com
:不解密所有发往google.com
上的 443 端口的请求;
跳过服务端证书验证
[MITM]
skip-server-cert-verify = true
用于 TCP 连接
[MITM]
tcp-connection = false
开启该选项后 Surge 将对 MitM 主机名列表中的 TCP 连接也进行 MitM 解密,如果该连接并非 HTTPS 请求将导致连接失败。
用于 HTTP/2
[MITM]
h2 = true
若需支持使用 HTTP/2 协议执行 MITM,以提高并发请求的性能,可在配置文件中添加上述示例。
仅特定设备启用 MitM
可以指定一个单一的IP地址或使用 CIDR 设置特定设备启用 MitM,均支持 IPv4 和 IPv6。
[MITM]
client-source-address = 0.0.0.0/0, ::/0
如针对某个设备不启用可使用 -
:client-source-address = -192.168.1.2, 0.0.0/0