对于完整的错误消息 HTTP error 421 occurred: SSL handshake with github.com:443 failed: SSSLERR_PEER_CERT_UNTRUSTED (-102) Peer's X.509 certificate (chain) validation failed (missing
,它明确指出了在与 github.com
的 SSL
握手过程中遇到了问题,具体是因为对端(peer
)的 X.509
证书(链)验证失败,原因是缺少了某些部分。这个错误通常表示 SAP 系统尝试建立到 github.com
的安全连接时,不能验证 github.com
提供的 SSL
证书链。
解决这个错误的步骤
确认错误性质
首先,需要确认错误的具体性质,即哪个部分或哪个证书链缺失。由于错误消息提示证书链验证失败且有缺失部分,可能的原因包括但不限于:
- 缺失的根证书或中间证书。
- 证书链提供不完整。
- SAP 信任的证书库未更新,导致新的或更新的证书未被信任。
检查并更新 SAP 的 SSL 证书库
更新 SAP 系统的 SSL 证书库通常是解决此类问题的第一步。操作步骤如下:
- 访问 STRUST 事务:在 SAP GUI 中,使用 STRUST 事务来管理 SSL 证书。
- 导出 github.com 的证书链:使用任何现代浏览器访问 https://github.com,然后查看并导出完整的证书链,包括根证书和任何中间证书。
- 导入证书:在 STRUST 中,根据需要将导出的根证书和中间证书导入到 SAP 的 SSL 客户端 SSL 证书存储中。
确保证书链完整性
- 在导入证书时,确保整个证书链都被正确并完整地导入到了 SAP 系统中。这意味着从根证书到任何中间证书,再到
github.com
的服务器证书,都需要被 SAP 信任。
调整 SSL 客户端设置
- 在一些情况下,可能需要调整 SAP 系统中 SSL 客户端的设置,以确保它正确地处理 SSL 连接和证书验证。这可能包括更新加密套件列表或启用/禁用特定的 SSL/TLS 版本。
示例说明
假设一家公司的 ABAP 开发团队正在使用 ABAPGit 与 GitHub 进行代码管理。他们遇到了上述 SSL 握手错误,导致无法从 GitHub 拉取或推送代码。以下是解决问题的具体步骤:
- 诊断问题:确认错误消息确实指向 SSL 证书链验证失败的问题。
- 导出 GitHub 的证书链:
- 使用 Chrome 浏览器访问
https://github.com
。 - 点击地址栏左侧的锁形图标,然后点击
证书
(路径可能因浏览器版本而异)。 - 在打开的证书窗口中,依次查看
证书路径
,选择根证书和任何中间证书,分别导出为.cer
格式。
- 导入证书到 SAP:
- 登录到 SAP GUI,执行
STRUST
事务。 - 在 SSL 客户端 SSL 证书存储中,导入步骤 2 中导出的根证书和中间证书。具体操作是选择正确的证书存储位置(如
SSL 客户端(匿名)
),然后使用导入证书
功能选择并导入.cer
文件。
- 测试 ABAPGit 连接:完成证书导入后,重新尝试使用 ABAPGit 连接到 GitHub,检查是否还存在 SSL 握手错误。
通过这些步骤,团队能够成功解决 SSSLERR_PEER_CERT_UNTRUSTED
错误,恢复与 GitHub 的正常通信。此过程展示了如何通过确保 SAP 系统信任正确的 SSL 证书链来解决证书信任问题。