-
Notifications
You must be signed in to change notification settings - Fork 1.2k
v3.x HTTPS相关教程
Otto Mao edited this page Dec 1, 2017
·
1 revision
AnyProxy解析HTTPS的原理是自制根证书(rootCA),待终端信任这份证书之后,再用它签发各个域名的二级证书,此时二级证书可以重新对各个页面进行解析。这种方案和HTTPS的“中间人攻击”(MITM)是一致的。
这份中文文档简略概述了用AnyProxy做HTTPS处理的相关流程。更完整的内容可以读这里的英文文档:https://github.com/alibaba/anyproxy/wiki/How-to-config-https-proxy
- 从v3.10.0开始,用户不再需要安装openssl
-
生成RootCA
- 命令行执行
sudo anyproxy --root
- 命令行执行
-
找到RootCA文件
- 方法一: 执行完成之后,会打开证书的安装路径,即可看到 rootCA.crt 文件
- 方法二: 启动anyproxy,浏览器打开 http://localhost:8002/fetchCrtFile ,也能获取rootCA.crt文件
- 方法三:启动anyproxy,http://localhost:8002/qr_root 可以获取证书路径的二维码,移动端安装时会比较便捷
-
打开上述rootCA.crt文件
-
根据操作系统提示,信任rootCA
- Windows
- Mac
- Windows
-
其他
- 如果在访问时出现UNAUTHORIZED_CERTIFICATE一类的安全警告,请重新检查证书的安装情况
- 证书只需生成一次,使用前每个终端都需要信任它
- 需要解析HTTPS时,用intercept参数来启动anyproxy
anyproxy --intercept
- 为终端设置代理,在UI界面就能看到明文的HTTPS请求数据了,带把小锁的就是HTTPS请求
- AnyProxy默认不会解析https请求,你需要引入
shouldInterceptHttpsReq
这个函数来显式指定解析哪个请求。具体可以参照这份sample : rule_intercept_some_https_requests.js
-
anyproxy --clear
可以清除所有已生成的证书。清除后,各终端需要重新安装证书。 - 日常开发中,不要使用
anyproxy --type https
来调试。AnyProxy使用https over http的方法来进行代理,而这条命令启动的是一个https代理服务器,两者使用场景完全不同。