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 检查审计区分合规检查网关和意外证书替换。

测试真实操作

首页请求只能算冒烟检查。先执行只读流程:

  1. 解析并连接必需的 GitHub 主机;
  2. 完成代理认证与 TLS 协商;
  3. 拉取一个小型获授权仓库或读取远端引用;
  4. 从工作流实际使用的 CDN 路径下载一个发布资产或依赖;
  5. 在连接复用及 DNS 缓存到期后重复;
  6. 只读通过后,再在非生产仓库测试已授权写操作。

逐个验证重定向目标,不要因为错误页就扩大代理白名单;应从成功基线提取真实且获授权的主机集合。

快速归因

现象优先检查
直连成功,代理在 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 访问控制、组织检查策略、速率限制和隐私要求。不得在公开日志中暴露凭据、仓库秘密或私有证书材料。