尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

chls.pro/ssl打不开?Charles SSL证书安装与排查全攻略

chls.pro/ssl打不开?Charles SSL证书安装与排查全攻略 这么多年帮同事排查开发环境被问得最多的问题之一就是chls.pro/ssl 这个地址打不开。这串字符看起来像个不起眼的小链接但做客户端开发、大前端、测试的人应该都认识它是 Charles 抓包工具里用来给手机安装 SSL 根证书的下载入口。一旦访问不了HTTPS 请求的报文就没法看调试工作基本卡死。这篇文章我把自己实际排查过的几种情况完整梳理了一遍从原理讲到操作步骤再讲到各种“玄学”问题的处理思路给你一条能直接照做的路径。1. chls.pro/ssl 到底是什么打不开意味着什么1.1 这个地址的真实身份chls.pro/ssl 不是公网上的某个工具站它是 Charles 在运行期间暴露出来的一个特殊入口。当你启动 Charles 后它会在本机监听一个端口默认 8888并把 chls.pro/ssl 这个域名映射到本地下载证书的页面。换句话说你访问的不是别人家的网站而是你电脑上正在运行的 Charles 程序本身。注意这个地址前面是 http 而不是 https。很多新手会习惯性地在浏览器里补一个“https://”结果反而会遇上证书报错或者白屏。原因很简单设备还没有安装 Charles 的根证书之前如果直接用 https 访问系统会认为这是一个不受信任的连接直接拦截掉。所以 Charles 特意让这个下载入口保持普通 http 协议确保证书下载过程不被系统自己卡住。理解这一点对后面的排查很有帮助——如果页面打不开重点不是换协议而是检查链路。1.2 打不开的三种典型现象根据我见过的大量案例进不去主要分三种表现。第一种是手机浏览器一直转圈最后超时第二种是浏览器很快进入“无法访问此页面”的报错第三种是页面能打开但点击下载按钮后没反应。这三种现象的排查方向完全不同最好先对照一下自己属于哪一种。一直转圈超时大概率是手机到电脑这条网络链路不通优先检查是否同一局域网、防火墙是否放行、端口是否被占用。直接显示无法访问大概率是 Charles 的 SSL 监听功能没有开启或者当前电脑上根本没有运行 Charles。能打开页面但下载失败大概率是第三方浏览器拦截了描述文件或者是系统证书信任策略的问题。先把这个分类记在心里后面排查的时候会快很多。2. 动手前先做好四件事很多人一看到 chls.pro/ssl 打不开第一反应就是换浏览器、换手机、重装 Charles。其实不需要大部分失败是因为前置条件没满足。访问这个地址之前按顺序检查下面四件事成功率能提升一大截。2.1 确认手机和电脑真的在同一网络这是一个看起来像废话、但翻车率最高的点。Charles 跑在电脑上手机要访问 chls.pro/ssl本质上是在访问电脑的 8888 端口。这就要求手机和电脑必须处于一个可以互通的局域网里。这里说的“同一个 WiFi”还不够还得确认路由器没有开启 AP 隔离。很多公司访客网络、酒店 WiFi、校园网会开启隔离设备之间不允许互相访问。这种情况下手机和电脑就算连的是同一个 WiFi页面照样打不开。判断方法很简单。先在电脑上查到局域网 IPmacOS 终端执行ipconfig getifaddr en0Windows 执行ipconfigLinux 执行hostname -I然后在手机浏览器里直接访问http://电脑IP:8888。如果通了说明设备之间互通chls.pro/ssl 才有机会工作如果不通先换网络别在隔离网络里耗时间。2.2 检查 Charles 的 SSL 开关和监听端口Charles 不是装上就能用。它需要打开 SSL 监听功能后chls.pro/ssl 这个地址才会生效。以较新版本为例在菜单栏的 Settings 或 SSL 相关面板里找到 SSL Proxying 的开关确保它是勾选状态。如果找不到可以从菜单栏的 Help 里找 SSL Proxying 相关入口那里一般也会有证书下载和开关。端口方面默认是 8888。如果这个端口被本机其他程序占用Charles 会提示端口冲突或者自动换到别的端口而手机那边仍然填 8888自然就不通。你可以在 Charles 的监听取设置里查看当前实际端口。如果 8888 被占用可以用命令看看到底被谁占了macOS/Linuxlsof -nP -iTCP:8888Windowsnetstat -ano | findstr 8888找到占用进程后要么结束它要么把 Charles 的监听端口改成 8080 之类的空闲端口然后手机 Wi-Fi 转发配置里的端口也跟着改。别只顾着改电脑端手机端忘记同步这种低级错误最容易让人白忙半天。2.3 放行防火墙端口这一步经常被忽略。Mac 或 Windows 开启防火墙后会拦截外部设备对本机非白名单端口的访问。手机访问电脑的 8888 端口如果被防火墙吞掉结果就是页面完全打不开。临时验证方法先在电脑上关掉防火墙试试如果手机能访问了再把 8888 端口加入白名单。不用一上来就永久关闭防火墙很多开发机其实只是缺少一条端口放行规则精确放行单个端口就够了没必要牺牲基础防护。2.4 把手机流量指向 Charles这一步最关键也最容易讲不清。很多教程默认你已经知道手机访问 chls.pro/ssl并不是直接连公网那个域名而是要把这段特定流量先交给电脑上的 Charles 去处理再由 Charles 返回证书页面。也就是说你需要先在手机的 Wi-Fi 设置里把当前网络的手动转发配置指向电脑的 IP 和 8888 端口然后再访问 chls.pro/ssl这个地址才会被正确解析到本机。“访问 chls.pro/ssl 进不去”这个问题被反复搜索绝大多数人就是漏掉了这一步。缺少这个指向动作时手机请求会走正常公网路径而这个域名并不能像普通网站那样被正常解析出内容于是你看到的就是打不开或者白屏。有的朋友会问那我不用这个入口直接在电脑浏览器访问 chls.pro/ssl 行不行如果你的电脑上开着 Charles并且系统当前网络请求正好指向了 Charles是可以看到证书下载页的。但更省心的做法是直接用 Charles 菜单里的 Install Charles Root Certificate从系统层面安装证书不依赖这个地址。这个方案放到第 4 节细说。3. 不同设备访问 chls.pro/ssl 的完整流程前置条件都满足以后接下来就是分设备把证书装好。这里我按 iOS、Android、电脑端三个场景分别写每一段都尽量给出完整的路径和注意事项。3.1 iPhone / iPad 操作路径第一步在 Mac 或 Windows 上启动 Charles保持 SSL 监听开关打开。第二步iPhone 连上和电脑相同的 Wi-Fi进入 Wi-Fi 设置点击当前网络右侧的“i”图标往下滑找到手动转发配置把服务器填成电脑的局域网 IP端口填 8888。第三步打开 Safari在地址栏输入http://chls.pro/ssl会弹出“此网站正尝试下载一个配置描述文件”之类的提示选择允许。第四步下载完成后去“设置 → 通用 → 设备管理”部分系统版本显示为“描述文件”里找到刚下载的配置点击安装。第五步安装完描述文件后还需要去“设置 → 通用 → 关于本机 → 证书信任设置”把 Charles 的根证书开关打开。第五步是新手最容易漏的地方。很多人装完证书后抓不到 HTTPS 明文跑来问我最后发现就是信任开关没打开。装了证书不等于信任证书这是两回事尤其 iOS 系统卡得比 Android 更严格。流程里还有个小提醒访问这个地址时一定要用 Safari不要用微信内置浏览器。微信内置浏览器经常拦截描述文件下载甚至直接不响应。另外如果以前装过旧证书最好先删掉旧证书再装新的避免同名冲突导致新证书装不进去。3.2 Android 操作路径Android 的碎片化比较严重这里只讲通用思路同时会点一下国产系统的差异。先在电脑上确认局域网 IP 和端口然后在手机 Wi-Fi 设置里打开当前网络的修改页在高级选项里把转发配置改为手动主机名填电脑 IP端口填 8888保存后用浏览器打开http://chls.pro/ssl会下载一个 pem 或 crt 文件。接着从系统设置里搜索“证书”或“加密与凭据”选择安装 CA 证书指向刚下载的文件给证书起个名字确认安装。国内厂商系统小米、华为、OPPO、vivo在安装证书时通常会要求先设置锁屏密码这一步绕不开直接设置就行。Android 9 及以上还有个特殊的地方普通应用默认不信任用户自己安装的证书所以就算证书装好了某些 App 抓 HTTPS 还是会失败。要解决这个问题需要应用内配置网络安全策略或者把证书安装到系统证书目录但后者往往需要 root 权限这已经超出 chls.pro/ssl 这个入口的范畴。这里先提个醒别到时候误以为证书安装失败又来回折腾。3.3 电脑端直接访问的场景如果你就在电脑上调试也需要访问 chls.pro/ssl 吗实际上想在电脑上抓浏览器的 HTTPS 请求直接通过 Charles 的 Help 菜单安装根证书是最省事的。菜单里一般有 Install Charles Root Certificate 或类似名称点击后系统会弹出证书导入窗口按默认选项装到“受信任的根证书颁发机构”就可以了。装完以后记得重启 Charles让设置生效。如果你确实想用 chls.pro/ssl 这个地址在电脑上安装证书也可以先保证本机没有其他程序占用 8888 端口然后启动 Charles浏览器访问该地址即可。但我不推荐把这个作为首选因为浏览器会有缓存、有下载拦截出错概率比系统菜单大得多。能用官方菜单一步完成的事没必要绕远路。4. 进不去的排查清单与头号坑即使是熟练工偶尔也会遇到诡异情况。这一节我按排查顺序整理成速查表同时附上我自己的踩坑经历。4.1 排查速查表现象大概率原因处理方式浏览器一直转圈超时手机与电脑不在同一局域网或端口被防火墙拦换网络放行 8888 端口提示无法访问此页面Charles 未开启 SSL 监听或本机没运行 Charles打开 SSL 开关确认 Charles 进程存在能打开页面但下载失败第三方浏览器拦截下载换 Safari 或原生浏览器证书安装后 HTTPS 仍是乱码SSL 监听范围未覆盖该域名在 SSL 设置里加入目标域名证书安装后部分 App 抓不了包App 默认不信任用户证书或启用了证书固定检查网络配置或改用系统证书方案换网络就能进原网络不行路由器开启 AP 隔离换一个设备互通的路由器这张表不能代替全部排查但能帮你快速锁定方向。很多问题并不是同一个原因对照现象挑对应处理方式比自己瞎试高效得多。4.2 页面能打开但证书下载失败现象是手机能弹出 chls.pro/ssl 页面但点了下载按钮之后没反应或下载完成找不到文件。这种情况最常见的原因是浏览器拦截了下载行为。iOS 上请检查是否用的 SafariSafari 对描述文件的兼容性最好Android 上则要到浏览器设置里放行下载必要时换 Chrome 或系统浏览器再试。另一个容易被忽略的点是Charles 版本太老生成的证书文件可能与新版系统的下载机制不兼容优先升级到较新版本。4.3 证书装上了但 HTTPS 依旧看不到内容证书安装成功信任开关也打开了结果 Charles 的列表里还是一堆加密乱码。这里有几个可能。第一你只对某个域名开了 SSL 监听而当前访问的域名不在范围里。第二Android 应用默认不信任用户证书这个上面已经提到。第三很多 App 启用了证书固定机制比如银行、支付类应用它们只认自己内置的证书这种从根证书层面是无解的别死磕不然后面会花掉大量时间。先用普通浏览器验证证书链路是否正常再逐步缩小范围。4.4 玄学问题换浏览器能进、白天能进晚上不能进、换网络就进所谓玄学背后其实都有原因。换浏览器能进多半是原浏览器的缓存或者下载拦截策略有问题白天能进晚上不能进大概率是同一个局域网里设备数量太多路由器做了隔离或者 IP 分配变了换网络就进更能说明问题出在网络互通性上。遇到这种问题时别怀疑是 chls.pro/ssl 本身失效它只是一个入口真正要检查的还是那四件事同一网络、Charles 开关、端口、转发配置。4.5 终极方案绕过 chls.pro/ssl如果 chls.pro/ssl 怎么都打不开那就别在这个地址上耗了。在电脑上打开 Charles 的 Help 或证书导出入口把根证书保存成一个 pem 文件然后用数据线、微信文件传输助手、网盘等方式把文件传到手机里在手机设置里手动安装证书安装完以后再去证书信任设置里打开完全信任。这个方案的优点是完全不依赖手机与电脑之间的实时连通只要能想办法把文件传过去就行缺点是操作步骤多一点。但对于已经卡了半天的人来说能解决问题比什么都强。我遇到过一次电脑防火墙策略极端严格、怎么也放行不了的情况最终就是靠这个方案快速收场的。5. 我实际操练中攒下的几条个人经验聊到这里chls.pro/ssl 的访问问题基本就讲完了。最后分享几条我个人真实操作中的习惯不一定适合所有人但至少能帮你少走弯路。第一不要在手机上用第三方浏览器访问这个地址。Safari 和原生 Android 浏览器是经过最多验证的路径第三方浏览器经常因为下载安全策略把描述文件拦掉。这一点反复出现值得当成默认操作准则。第二每次升级 Charles 或系统版本后如果突然抓不到 HTTPS先别急着查复杂原因。把旧根证书删掉重新访问 chls.pro/ssl 装一遍很多时候问题就消失了。证书信任状态和系统版本之间会有各种细微错位重装是成本最低的解法。第三随手记下电脑当前的局域网 IP。别等要填的时候才去翻 ipconfig填错一位字符可能排查半天都不一定能发现。我自己就干过把 192.168.1.101 填成 192.168.1.10 这种蠢事结果怎么都进不去差点把电脑重启了。第四点算是一个兜底习惯如果你经常需要在多台设备上安装证书可以提前把 pem 文件放到一个临时文件服务里需要的时候直接从手机下载。这样就算某台设备的 chls.pro/ssl 入口出了奇怪问题你手里也永远有备用方案。希望这篇内容能帮到被 chls.pro/ssl 卡住的朋友。调试工具这东西原理通了后面遇到类似问题都会有底气很多。
返回列表