博主内容在此链接原文上修改,避免初次配置https的时候踩到大坑,目前发现知乎,CSDN等相关文章中均未提及,博主踩坑花了2天时间才找到原因,未避免后续人员踩坑,在此文中特别补充。
在原文的基础上进行了增加,避免证书导入以后还报错iaik.security.ssl.SSLCertificateException: Peer certificate rejected by ChainVerifier
大坑,第一次配置https一定要导入根证书和二级证书(下面第四步骤中写到),不然识别报错。
源链接:https://zhuanlan.zhihu.com/p/405832235
官方说明:https://userapps.support.sap.com/sap/support/knowledge/en/2321147
Below are the 3 certificates which you need to maintain in your SAP PI:
-
Root Certificate
-
intermediate Certificate
-
Leaf certificate
为了验证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
划重点(大坑):需要查看证书路径,如果路径有三层,需要把三个证书都导出,导入到 TrustedCAs节点
五
导入证书
用管理员账号登陆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中的所有证书,直到联通并标记下来,后续则通过先前的标记确定使用正确的证书.