SAP 调用第三方 API 接口报错的分析

摘要

当 ABAP 程序通过 SAP ICM 充当 HTTP/HTTPS 客户端去调用第三方接口时, 如果远端主机拒绝握手或根本没有在对应端口监听, ICM 与底层 NI(Network Interface) 便会抛出 ICMECONNREFUSED 以及 NiBufIConnect … 5000 ms 错误. 这类报错本质上是一次 三次握手未能在五秒默认超时内完成, 表明 网络路径、目标服务或代理配置存在阻断. 通过阅读 dev_icm 追踪、使用事务 SMICMSM59, 再结合 nipingtelnet 等 OS 工具, 运维人员可以迅速定位是 端口未开、IP/域名错误、SSL/代理误配、还是 SAP 参数过窄.


1 关键组件与报错字面含义

1.1 SAP ICMNI 的角色

Internet Communication Manager 管理系统内所有 HTTP(S)/SOAP 流量, 向上给 ABAP 进程提供 RFC ICF 服务, 向下调用 NI 完成 T

<think>好的,我现在要解决用户在SAP调用企业微信时遇到的SSL证书不受信任的问题,报错是SSSLERR_PEER_CERT_UNTRUSTED -102。用户之前提到了ABAP发送HTTPS请求时报错ICM_HTTP_SSL_PEER_CERT_UNTRUSTED,以及一些关于SSL证书验证失败的情况。我需要结合这些信息,给出具体的解决方案。 首先,用户已经参考了引用[1]中的步骤,使用SMICM事务码进行跟踪,发现错误是TLSERROR: Certificate verification failed [0xA0600203: Peer not trusted]。这说明问题出在SSL证书的信任链上,SAP系统不信任企业微信的服务器证书。常见的解决方法包括导入企业微信的SSL证书到SAP的信任存储中,或者调整SSL客户端的验证级别。 接下来,我需要考虑如何正确获取企业微信的SSL证书。用户可能需要从企业微信的API地址下载证书,比如通过浏览器访问企业微信的接口URL,导出证书。然后,使用SAP的事务码STRUST将证书导入到SSL客户端SSLClient标准或匿名PSE中。需要确认证书是否完整,包括中间证书和根证书,否则可能仍会导致信任问题。 另外,用户提到的引用[2]中关于配置错误导致证书问题的情况,虽然主要是关于Hyperledger Fabric的,但这也提醒我要检查SAP系统是否正确配置了证书路径和权限。如果证书链不完整,或者系统时间不正确,也可能导致验证失败。 此外,还可以考虑调整SSL客户端的验证级别,比如将加密套件设置为仅使用TLS 1.2,或者降低验证强度(虽然不推荐,但可能作为临时解决方案)。但需要注意安全性风险。 最后,测试和验证是关键步骤。用户需要在导入证书或调整配置后,重新运行程序,使用SMICM进行跟踪,确认错误是否解决。如果仍有问题,可能需要检查网络设备是否拦截并修改了SSL流量,或者是否存在其他中间人攻击的情况。 总结步骤应该是:下载证书→导入到SAP信任存储→调整配置→测试验证。同时要确保所有中间证书都被正确导入,避免遗漏。如果有必要,联系企业微信获取正确的证书链信息。</think>### 分步解决方案 #### **1. 获取企业微信SSL证书链** - **步骤**:通过浏览器访问企业微信API地址(如`https://qyapi.weixin.qq.com`),点击地址栏的锁形图标,导出完整的SSL证书链(包括根证书和中间证书)为`.crt`或`.pem`格式[^1]。 - **验证**:使用OpenSSL检查证书链完整性: ```bash openssl verify -CAfile <根证书文件> <企业微信证书文件> ``` #### **2. 导入证书到SAP信任存储** - **事务码**:`STRUST` - **操作**: 1. 打开SSL客户端SSLClient(标准或匿名PSE)。 2. 选择“证书列表”选项卡,点击“导入证书”按钮。 3. 依次上传根证书、中间证书和企业微信服务器证书。 4. 保存并激活更改。 - **关键点**:确保证书层级完整,避免遗漏中间证书。 #### **3. 调整SSL/TLS配置(可选)** - **事务码**:`RZ10` - **操作**: 1. 修改参数文件,增加以下配置(若企业微信仅支持特定协议): ```ini ssl/client_ciphersuites = 135:TLS1.2 ssl/client_min_protocol = TLS1.2 ``` 2. 重启SAP实例使配置生效。 #### **4. 测试验证** - **事务码**:`SMICM` - **步骤**: 1. 重置跟踪文件后重现问题。 2. 检查跟踪日志,确认错误是否消除。 3. 若仍有问题,检查证书时间有效性及系统时间同步。 #### **5. 绕过证书验证(临时方案)** - **代码修改**:在ABAP请求中禁用证书验证(仅限测试环境): ```abap cl_http_client=>create_by_url( EXPORTING url = 'https://qyapi.weixin.qq.com' ssl_id = 'ANONYM' IMPORTING client = lo_client ). ``` --- ### **相关问题** 1. 如何检查SAP系统当前信任的SSL证书列表? 2. SAP与其他第三方系统HTTPS交互时常见的证书错误有哪些? 3. 如何通过ABAP代码实现双向SSL认证? --- ### **引用说明** : 通过SMICM跟踪日志可定位到证书验证失败的具体原因,需确保证书链完整且受信任。 [^2]: 配置错误可能导致证书信任问题,需检查系统参数和证书存储路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汪子熙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值