GitHub 停用 HTTPS SHA-1:依赖代理的团队现在应测试什么

GitHub 于 2026 年 9 月 15 日宣布,已经在 GitHub.com 与合作 CDN 停用 HTTPS SHA-1,范围包括 GitHub Enterprise Cloud 及其数据驻留服务,GitHub Enterprise Server 不受影响。这是传输兼容性变化,不是 Git 提交标识符规则变化。
当前浏览器、Git 客户端和 TLS 库通常已支持现代证书签名。风险更容易出现在旧运行镜像、过期信任库、TLS 检查网关或会替换证书链的代理设备。使用代理执行 CI、依赖下载、数据采集或仓库自动化的团队,需要测试完整链路,不能用一次直连浏览器成功代替真实工作负载验证。
先明确变化边界
此次退役针对连接 GitHub 托管服务的 HTTPS 中的 SHA-1,不意味着仓库突然不能使用 SHA-1 对象名,也不要求重写 Git 历史。事件记录应明确失败发生在 DNS、代理认证、CONNECT、TLS 验证、重定向还是 Git HTTP 操作。
记录客户端版本、TLS 后端、信任库版本、代理路由别名、目标主机、地址族、协商 TLS 版本、证书签名算法、签发者指纹、HTTP 状态与失败阶段。代理密码、令牌、Cookie 及可识别内部设施的证书细节必须哈希或脱敏。
建立直连与代理矩阵
对同一个自有或获授权仓库分别测试:
- 直连;
- 每个生产 HTTP 或 HTTPS 代理网关;
- 自动化使用的每条 SOCKS5 路由;
- 已采购的 IPv4 与 IPv6 路径;
- 新建连接与复用连接;
- 当前及最旧仍受支持的客户端镜像。
固定仓库、命令与超时。若直连成功而代理路径在 TLS 阶段失败,应优先检查网关、检查证书链或代理客户端的信任配置,而不是笼统判断 GitHub 不可用。
分离 CONNECT 与证书验证
使用 HTTPS 代理时,先确认代理认证成功,CONNECT 隧道到达正确主机与端口,再检查隧道内呈现的证书链。若直连和代理的签发者不同,应记录该路由存在 TLS 检查,并确认此行为已获授权。
可结合HTTPS 代理 TLS 证书链审计比较叶证书、中间证书与根证书,再用代理 TLS 检查审计区分合规检查网关和意外证书替换。
测试真实操作
首页请求只能算冒烟检查。先执行只读流程:
- 解析并连接必需的 GitHub 主机;
- 完成代理认证与 TLS 协商;
- 拉取一个小型获授权仓库或读取远端引用;
- 从工作流实际使用的 CDN 路径下载一个发布资产或依赖;
- 在连接复用及 DNS 缓存到期后重复;
- 只读通过后,再在非生产仓库测试已授权写操作。
逐个验证重定向目标,不要因为错误页就扩大代理白名单;应从成功基线提取真实且获授权的主机集合。
快速归因
| 现象 | 优先检查 |
|---|---|
| 直连成功,代理在 TLS 前失败 | 代理认证、CONNECT 策略、DNS 或出口规则 |
| 仅一个网关证书验证失败 | 检查证书链、旧根证书或旧签名算法 |
| 浏览器正常,CI 镜像失败 | 旧 TLS 库、缺失根证书或不同代理设置 |
| Git 元数据正常,资产失败 | CDN 主机白名单、重定向或独立代理路由 |
| 仅部分出口间歇失败 | 网关集群、区域证书链或路由配置不一致 |
不得通过关闭证书验证“修复”问题。这会掩盖根因,并增加凭据暴露风险。
验收与修复
只有当直连和代理路径都使用受支持 TLS、验证现代证书链、到达全部必需主机、正确处理重定向,并在无不安全绕过的情况下完成真实只读流程,才能批准该客户端与路由。结果应按客户端镜像和网关分别统计。
旧客户端失败时,优先更新运行时、TLS 库与信任库;若合规检查设备签发旧链,应更换或重新配置设备。任何临时绕过都必须限定范围、设置期限并由安全负责人复核。
发布检查清单
- 确认问题属于 HTTPS 传输,而非 Git 对象标识符。
- 分别测试直连、HTTP 代理与 SOCKS5。
- 包含最旧仍受支持的 CI 或采集镜像。
- 记录 TLS 后端、信任库与协商协议。
- 比较直连与代理证书签发者。
- 同时测试仓库元数据与必需 CDN 资产。
- 不盲目扩大主机白名单。
- 全程保持证书验证开启。
- 日志中不保留凭据与原始令牌。
- 关闭事件前复测全部生产网关。
常见问题
是否需要把现有仓库从 SHA-1 全部转换?
不需要。公告针对 HTTPS 中的 SHA-1,不是现有 Git 历史中的对象标识符。
为什么浏览器正常而 Git 失败?
两者可能使用不同 TLS 库、信任库、代理配置与证书检查策略。必须测试实际执行任务的客户端镜像。
应先更换代理供应商吗?
通常不应。先定位客户端、信任库、网关、检查链、主机策略或路由中的具体故障点,再依据证据决定。
能否临时关闭证书验证?
对携带认证信息的 Git 流量,这不是安全诊断方法。应采集证书链证据并修复信任或网关配置。
合规说明
仅测试自有或获授权的仓库、资产与代理路由。遵守 GitHub 访问控制、组织检查策略、速率限制和隐私要求。不得在公开日志中暴露凭据、仓库秘密或私有证书材料。