点击蓝字 关注我们
一
前言
PO(/PI)是SAP公司的一个中间件产品,用来辅助连接SAP系统与外围系统. (当然外围系统之间也可以使用PO).
为了传输数据的安全性考虑, 客户会要求系统发布的服务必须通过https请求.
PO/PI 使用通道类型是 SOAP Receiver 或REST Receiver时. 如果对方提供的地址是https 地址,需要在PO中引入证书.
本文主要介绍PO引入外部证书的相关注意事项
二
使用http
为了验证http/https 的差异点,先使用http地址配置PO的接口,并且通过SOAPUI测试验证通过.
图示接口是PO调用目标系统的webservice 服务, 对方发布了两个地址 http 及https.
使用http配置通道,测试调用成功.
三
使用https
调整成https地址,感受差异.
01
调整通道配置
调整目标通道配置, 修改使用https 地址
02
再次测试
在没有任何其它操作的情况下, 使用相同的数据再次调用接口,SOAPUI中报500错误.
03
监控日志
到PO监控中查看
能看到如下报错信息
SOAP: Error occurred: com.sap.engine.interfaces.messaging.api.exception.MessagingException: java.io.IOException: Failed to get the input stream from socket: iaik.security.ssl.SSLCertificateException: Peer certificate rejected by ChainVerifier
四
获取证书
获取对方的证书文件(该文件可以通过浏览器访问调用地址, 另存证书获取.
在chrome浏览器点击网站左边的锁,查看证书. 复制到文件.后续一步步执行可以导出一个证书文件 文件后缀 .cer
五
导入证书
用管理员账号登陆PO, 把证书文件导入到系统中.
01
进入证书管理页面
02
找到TrustedCAs节点
必须导入到TrustedCAs 节点中.
选中该节点, 在导入条目,在弹窗中输入文件信息,完成证书的导入过程
03
查看导入的证书
导入后,可以看到证书的信息
六
重新测试接口
导入后, 立即重新测试接口, 此时还是http 500的错误(图一). 尝试需要重新启动通道(图二),让证书生效后, 再重新测试接口调用,成功(图三)
图一
图二
图三
七
注意事项
配置https地址的通道,需要注意以下事项
01
通道配置
通道的 client certificate authentication 复选框 use client certificates 会误导配置人员,该复选框的勾选后, 必须选择一个private key 证书. 而之前导入的证书是CERTIFICATE. 无法选择使用. 无需勾选该标记
02
证书导入节点
证书必须导入到TrustedCAs中
03
重启通道
证书导入后,必须重启通道,可以通过修改激活通道的方式, 也可以在通信通道监控器中停止,启动通道
04
证书有效期
如果导入的证书过期.也无法使用. 过期的证书状态是红灯. 可以在证书明细中看到有效期限
05
端口443
注意默认端口443的使用,浏览器中不显示默认的端口,在实际配置url中需要添加这些默认端口. 但是有些系统发布的地址就是无需使用443端口,这个就需要和对方确认了.
八
总结
PO调用目标系统的https地址时,需要先导入对方的系统的证书.通道地址调整为https地址即可.
因为PO可以导入多个证书,通道配置中又无需指定证书文件,不太理解PO底层机制怎么正确使用特定的证书.
只能理解为:PO会尝试TrustedCAs中的所有证书,直到联通并标记下来,后续则通过先前的标记确定使用正确的证书.
THE
END
约定
如果你对这篇文章感兴趣,请帮忙点赞,在看,分享.
(如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程. 越多的人打赏,作者越有动力分享,读者就能享受更多的福利.毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文.)
公众号 : syjf1976_abap
ABAP开发技巧
微信号 : 392077
请微信联系管理员:
syjf1976
sharry_xlp
Yannick_Duan 申请进入公众号讨论群