如何使用事务码SMICM分析ABAP代码发起的HTTP请求的错误

举报
汪子熙 发表于 2021/12/25 20:58:29 2021/12/25
【摘要】 当我用CL_HTTP_CLIENT往一个外网的url发请求时,遇到错误:ICM_HTTP_SSL_PEER_CERT_UNTRUSTED错误是从这段ABAP代码里抛出来的:CALL METHOD lo_http_client->get_last_errorIMPORTINGcode = lv_sysubrcmessage = ev_error_message."BREAK-POINT....

当我用CL_HTTP_CLIENT往一个外网的url发请求时,遇到错误:ICM_HTTP_SSL_PEER_CERT_UNTRUSTED

错误是从这段ABAP代码里抛出来的:

CALL METHOD lo_http_client->get_last_error
IMPORTING
code    = lv_sysubrc
message = ev_error_message.
"BREAK-POINT.
WRITE: / 'error: ' , ev_error_message.

只有这一个错误,或许您觉得很难找到问题根源。

下面是用事务码SMICM找出问题根源。Goto->Trace Level->Set设置跟踪级别:

设置成最高的3级:

然后点Trace File->Reset, 把到目前为止生成的跟踪文件清空,这样再重现HTTP错误之后生成的日志文件尺寸较小,便于分析:

重新执行引起HTTP错误的ABAP程序,然后回到事务码SMICM, 选择Trace File->Display All:

然后把显示出来的trace文件保存到本地,就可以开始分析了。

查看日志文件,很快就在里面发现了问题根源,因为Netweaver服务器上缺少c4c.saphybriscloud.cn对应的SSL证书。

Verification result header:
[Thr 140133716416256] Verification errors
[Thr 140133716416256] The chain of certificates is incomplete or untrusted, missing certificate of
[Thr 140133716416256] CN=DigiCert Global Root CA, OU=www.digicert.com, O=DigiCert Inc, C=US
[Thr 140133716416256] Verified certificate:
[Thr 140133716416256] Subject: CN=*.c4c.saphybriscloud.cn, OU=SAP Cloud Managed Services, O=SAP, L=Walldorf, SP=Baden-Wuerttemberg, C=DE
[Thr 140133716416256] Issuer: CN=DigiCert SHA2 Secure Server CA, O=DigiCert Inc, C=US

在浏览器里打开c4c.saphybriscloud.cn,把certificate导出,再用事务码STRUST导入到Netweaver服务器即可解决这个问题。Jerry会另外写一篇文章介绍证书导入的详细步骤。

如何把某个网站的SSL Server certificate链导入到ABAP Netweaver系统里

我们在用ABAP代码消费外网的url时会遇到一些异常,比如ICM_HTTP_SSL_PEER_CERT_UNTRUSTED,这是因为请求的url所在的网站的SSL Server certificate没有导入到Netweaver系统。

本文介绍导入的详细步骤。

基本思路就是两步:

  1. 从网站上导出certificate链到本地
  2. 将本地导出的certificate导入到Netweaver

第一步:浏览器打开要导出certificate(证书)的网站,点击这个小锁的图标:

点Certificate:

证书链如图。按照图示顺序导出这些证书到本地:

导出操作很简单,点击按钮copy to File…即可:

导出到本地的证书格式为Base-64 encoded X.509(.cer):

将链上的其他两个证书也导出到本地:

用记事本打开这三个.cer文件,把每个证书的文本内容复制出来,粘贴到一个新的空白.cer文件去。注意先粘贴level 3的内容,然后是level 2的,最后是level 1的。

第二步:将第一步合并好的证书用事务码STRUST导入到Netweaver系统去。

菜单Certificate->Import, 选择本地文件即可。
注意导入的位置是SSL client SSL client(Anonymous):

导出完成后,在事务码SM59里使用即可。

Logon & Security->Security Options->SSL 选成Active,SSL Certificate从下拉菜单里选择成ANONYM SSL client(Anonymous),

保存之后问题解决。

要获取更多Jerry的原创文章,请关注公众号"汪子熙"。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。