ssl: certificate_verify_failed 错误主因是 sublime text 内置 cacert.pem 过期缺 isrg root x1 等新根证书,或系统时间误差超 ±5 分钟;需手动替换证书、校准时间、切换 channel 镜像并全部重启生效。

SSL: CERTIFICATE_VERIFY_FAILED 不是网络问题,是证书过期
这个错误根本不是你连不上网,也不是 packagecontrol.io 挂了——而是 Sublime Text 内置的 cacert.pem 太老,缺 ISRG Root X1、Sectigo 等 2024 年后主流根证书。系统时间误差超过 ±5 分钟也会触发同一报错,现象包括控制台刷屏、Package Control: Install Package 命令消失、或卡在 “Loading…”。
必须手动替换 cacert.pem,别关 ssl_verification
临时设 "ssl_verification": false 能绕过报错,但等于让所有 HTTPS 请求裸奔,插件下载全程明文可劫持,不安全也不治本。
- 关闭 Sublime Text 全进程(Windows 右键任务栏图标选 Exit;macOS Dock 右键 Quit)
- 按
Preferences → Browse Packages…打开用户目录,进入Packages/Package Control/certifi/ - 如果该路径不存在,手动创建:
Packages/Package Control/→ 进入 → 新建文件夹certifi - 从 https://www.php.cn/link/04c165998a3bfee2c2b46a8d8840dacc 下载最新
cacert.pem(注意后缀必须是.pem,不是.pem.txt) - 把下载的文件直接覆盖进
certifi/目录 - 确认用户配置中
"ssl_verification": true(默认就是true,不用改) - 重启 Sublime,打开控制台执行
import ssl; print(ssl.get_default_verify_paths()),输出里应含你放进去的路径
换 channel 镜像地址并强制重启生效
There are no packages available 这个提示,本质是 channels 地址根本没加载成功,而非插件源没了。原地址 https://packagecontrol.io/channel_v3.json 在国内多数打不开。
- 打开
Preferences → Package Settings → Package Control → Settings – User - 填入可用镜像(注意结尾必须是
/channel_v3.json):{ "channels": [ "https://gitee.com/akira-cn/package_control_channel/raw/master/channel_v3.json" ] } - 浏览器粘贴这个 URL 能看到 JSON 内容才算生效;如果返回 404,说明镜像已失效,得换其他 Gitee 用户维护的 channel
- 改完必须重启 Sublime,否则缓存仍走旧地址
校准系统时间 + macOS 钥匙串信任设置
误差超 5 分钟会直接拒连 HTTPS,哪怕证书新也没用:
- Windows:右键任务栏时间 → “调整日期/时间” → 开启“自动设置时间”
- macOS:进“系统设置 → 通用 → 日期与时间”并勾选“自动设置时间”
- macOS 用户额外检查钥匙串:搜索
ISRG Root X1或DigiCert,双击证书 → 展开“信任” → 将“使用此证书时”设为“始终信任”
企业网络或杀软启用 HTTPS 解密时,Connection reset by peer 很可能是中间人劫持所致——这类环境里,证书重置只是第一步,后续还得排查代理策略或白名单规则。











