如何使用事務碼SMICM分析ABAP程式碼發起的HTTP請求的錯誤ICM_HTTP_SSL_PEER_CERT_UNTRUSTED
當我用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=
[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會另外寫一篇文章介紹證書匯入的詳細步驟。
要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":