解决 Cannot find the specified class com.ibm.websphere.ssl.protocol.SSLSocketFactory报错问题

背景说明:

最近做接口开发时,需要调用调用第三方系统的接口,一开始用的是http的接口后来改为用https的协议,发现接口调用时会报错:java.lang.Exception: 调用OA接口服务发生异常:java.net.SocketException: java.lang.ClassNotFoundException: Cannot find the specified class com.ibm.websphere.ssl.protocol.SSLSocketFactory

 

后来将协议重新调整回http类型,就能正常发送过去

 

但基于安全层面考虑,接口需要支持https,测试环境可以用http,但正式环境需要兼容https。

在工具搜索,确实找不到com.ibm.websphere.ssl.protocol.SSLSocketFactory这个类

网上说需要改java的设置:https://blog.csdn.net/yanical/article/details/5991693(可以参考)

后来调整了正式环境相关的设置:

解决方法: 更改 <IBM_JAVA_HOME>/jre/lib/security/java.security里的设置,改成

# Default JSSE socket factories

ssl.SocketFactory.provider=com.ibm.jsse2.SSLSocketFactoryImpl

ssl.ServerSocketFactory.provider=com.ibm.jsse2.SSLServerSocketFactoryImpl

# WebSphere socket factories (in cryptosf.jar)

#ssl.SocketFactory.provider=com.ibm.websphere.ssl.protocol.SSLSocketFactory

#ssl.ServerSocketFactory.provider=com.ibm.websphdere.ssl.protocol.SSLServerSocketFactory

这种,然后重启应用服务后,问题得以解决

 

解决步骤:

1、找到java的安装目录

对应命令:which java

 

2、目前项目用的ibm的jdk

java version "1.7.0"
Java(TM) SE Runtime Environment (build pxa6470sr4fp1ifix-20130423_02(SR4 FP1+IV38579+IV38399+IV40208))
IBM J9 VM (build 2.6, JRE 1.7.0 Linux amd64-64 Compressed References 20130421_145945 (JIT enabled, AOT enabled)
J9VM - R26_Java726_SR4_FP1_2_20130421_2353_B145945
JIT  - r11.b03_20130131_32403ifx4
GC   - R26_Java726_SR4_FP1_2_20130421_2353_B145945_CMPRSS
J9CL - 20130422_145945)
JCL - 20130225_01 based on Oracle 7u13-b08

 

3、切换到对应目录

 

4、修改相关文件前先备份 cp java.security java.securitybak_20200330

5、使用vi命令修改相关配置

 

修改前默认使用的是下面的配置,但是com.ibm.websphere.ssl.protocol.SSLSocketFactory和com.ibm.websphere.ssl.protocol.SSLServerSocketFactory需要配合WAS使用,项目使用单机部署,缺省cryptosf.jar文件,因此可以把上面的配置放开,使用com.ibm.jsse2.SSLSocketFactoryImpl即可(如图所示)。

后记:

由于本项目使用的jdk版本为IBM1.7,上述方法只能解决对方https接口协议是TLSv1的情况,如果对方系统接口协议是TLSv1.2的,需要升级jdk版本,具体可以参考:https://blog.csdn.net/junch_wuhan/article/details/114550760?spm=1001.2014.3001.5501

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值