0
v3.x HTTPS相关教程
Otto Mao edited this page 2017-12-01 20:44:49 +08:00
This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

AnyProxy解析HTTPS的原理是自制根证书rootCA待终端信任这份证书之后再用它签发各个域名的二级证书此时二级证书可以重新对各个页面进行解析。这种方案和HTTPS的“中间人攻击”MITM是一致的。

这份中文文档简略概述了用AnyProxy做HTTPS处理的相关流程。更完整的内容可以读这里的英文文档https://github.com/alibaba/anyproxy/wiki/How-to-config-https-proxy

Step 1 - 安装openSSL

  • 从v3.10.0开始用户不再需要安装openssl

Step 2 - 生成RootCA打开信任它

  • 生成RootCA

    • 命令行执行 sudo anyproxy --root
  • 找到RootCA文件

    • 方法一: 执行完成之后,会打开证书的安装路径,即可看到 rootCA.crt 文件
    • 方法二: 启动anyproxy浏览器打开 http://localhost:8002/fetchCrtFile 也能获取rootCA.crt文件
    • 方法三启动anyproxyhttp://localhost:8002/qr_root 可以获取证书路径的二维码,移动端安装时会比较便捷
  • 打开上述rootCA.crt文件

  • 根据操作系统提示信任rootCA

    • Windows
      • https://t.alipayobjects.com/tfscom/T1D3hfXeFtXXXXXXXX.jpg_700x.jpg
    • Mac
      • https://t.alipayobjects.com/tfscom/T1NwFfXn0oXXXXXXXX.jpg_400x.jpg
  • 其他

    • 如果在访问时出现UNAUTHORIZED_CERTIFICATE一类的安全警告请重新检查证书的安装情况
    • 证书只需生成一次,使用前每个终端都需要信任它

Step 3 - 明文解析HTTPS

  • 需要解析HTTPS时用intercept参数来启动anyproxy anyproxy --intercept
  • 为终端设置代理在UI界面就能看到明文的HTTPS请求数据了带把小锁的就是HTTPS请求

进阶 - 用rule来手动处理https请求代理文件到本地

  • AnyProxy默认不会解析https请求你需要引入shouldInterceptHttpsReq 这个函数来显式指定解析哪个请求。具体可以参照这份sample : rule_intercept_some_https_requests.js

其他

  • anyproxy --clear可以清除所有已生成的证书。清除后,各终端需要重新安装证书。
  • 日常开发中,不要使用anyproxy --type https来调试。AnyProxy使用https over http的方法来进行代理而这条命令启动的是一个https代理服务器两者使用场景完全不同。