我试图通过从if_http_client实例化cl_http_client=>create_by_url来使用ABAP的端点。当我不需要使用经过签名的证书时,这个过程可以正常工作。通常,我只包含使用STRUST事务的证书。
但是对于这个特殊情况,我有两个证书文件:.crt和.key。我可以从Postman获取端点,因为我可以在Settings -> Certificates中插入这些文件

那么,我怎样才能让它从ABAP中运行呢?如何在我的http请求中插入这些文件?我应该从ABAP代码中传递它们,还是在STRUST或其他传输中配置它?
发布于 2022-12-02 14:50:40
使用KeyStore资源管理器工具从客户端密钥和证书创建单个pfx文件。此外,您还可以将客户端证书的链与此工具放在一起。
在本地系统上使用皂启,并使用以下命令从pfx文件创建一个pse文件:
sapgenpse import_p12 -p c:\client.pse c:\client.pfx转到STRUST,在Enviroment->SSL客户端标识处创建您自己的证书存储。我更喜欢这个,因为我不把它们都混合在一起。然后返回到STRUST并选择PSE->Import并选择您的自定义pse文件。然后单击PSE->Save并选择您的自定义标识。
将站点SSL证书添加到新标识中。
您可以通过选择新的SSL客户端标识在SM59上尝试新的SSL客户端配置。
下面是ABAP代码示例。
REPORT ZMKY_SSL_CLIENT.
DATA: lo_client TYPE REF TO if_http_client,
lv_code TYPE i,
lv_REASON type string.
cl_http_client=>create_by_url(
EXPORTING
url = 'https://mysslclienthost.com'
ssl_id = 'MYSSLC' "Your SSL Client identity
IMPORTING
client = lo_client
).
lo_client->SEND( ).
lo_client->RECEIVE( ).
lo_client->RESPONSE->GET_STATUS( IMPORTING CODE = lv_code
REASON = lv_reason ).
WRITE: lv_code, lv_reason.https://stackoverflow.com/questions/74577287
复制相似问题