https单向握手通信异常“PKIX path building failed”

1. 现象

上周五客户做了换卡操作,然后绑卡确认的时候,银行接口报

javax.net.ssl.SSLHandshakeException:
sun.security.validator.ValidatorException: 
PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilder Exception: 
unable to find valid certification path to requested target

然后该步骤一直过不去,因为只有一条换卡的银行绑定信息,所以我们当时直接设置完成处理过去了。

2. 描述

绑卡的过程是https单向握手通信,这里需要服务方认证才可以通信,所以我们机器需要导入相关证书。银行接口使用的是java开发环境,而java的证书库与Windows自带的不共享,这里需要keytool工具导入。
通过与民生技术人员的了解,最近民生监管行的证书有变动,导致现机器使用原有证书认证失败,出现上述的异常。
同样类似的问题也会出现在银联渠道和通联渠道。

3. 解决方法

一般情况下,我们得重新下载证书,然后用keytool工具删除原有的证书,再重新导入证书
以我今天实际处理过程为例,大家可以参考下:

3.1.下载民生证书

IE浏览器下输入https://pay.cmbc.com.cn/epay/fundFileAccess.do 这个地址,看到右边有个证书的认证,点击去会看到“网站标示”页,底部有个“查看证书”,如图:

浏览器查看证书

点击那个“查看证书”,出来一个证书界面,如图:

查看证书界面

切换到“详细信息”菜单栏,找到“复制到文件”,如下图:

复制文件

点击“复制到文件”,出现“证书导出向导”界面,点击“下一步”,如下图:

证书导出向导

勾选第一项“DER编码二进制”,继续下一步,如下图:

DER编码二进制

选择导出的证书路径和名称,这里是pay-cmbc-new.cer,继续下一步,如下图:

保存文件

点击完成即可

3.2.删除原有的证书

找到java安装目录下的cacerts(JAVA_HOME/jre/lib/security),这是java储存证书的文件。我们可以使用keytool命令查看里面的证书信息:
keytool -list -v -keystore D:/cacerts -storepass 123456

keytools查看命令

如上图,里面是有民生的证书信息,这里使用keytool删除命令:
keytool -delete -alias pay-cmbc -keystore D:/cacerts -storepass 123456

删除证书

3.3.导入新证书

我们使用keytool命令导入证书信息:
keytool -import -alias pay-cmbc-new -file D:/pay-cmbc-new.cer -keystore D:/cacerts –storepass 123456
命令行中出现“信任这个认证?”的时候,输入“y”即可,如下图:

导入证书

命令行出现“认证已添加至keystore中”,认证已经添加,如下图:

已经导入证书

添加认证之后,用keytool命令检查一下证书是否有导入。

3.4.重启tomcat或者weblogic中间件

将添加新认证的cacerts认证库文件重新覆盖,然后重启tomcat即可。

同时你可以通过简书查看,记得打赏哦。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 服务器https配置 配置https操作说明文档 1、查看服务器环境配置(tomcat和apache合并使用) 2...
    南京杨小兵阅读 8,959评论 0 9
  • 一. Keytool创建和导入命令 创建keystore和密钥对 为存在的keystore生成证书请求文件CSR ...
    sngths阅读 6,413评论 0 1
  • HTTPS概念 1)简介 2)HTTPS和HTTP的区别 https协议需要到ca申请证书,一般免费证书很少,需要...
    Mr_不靠谱_先森阅读 937评论 1 10
  • HTTPS搭建方案 一、 操作步骤 进入jdk的安装目录,切换到bin目录下,然后按顺序执行如下的命令1、 ...
    _奔跑的蜗牛_阅读 7,039评论 1 2
  • 每一朵花,都为自己而开,也为发现它很美的人而开。因为它的生命需要绽放出最美的色彩,而且,这个色彩除了对它自己有用之...
    阳焱焱阅读 387评论 1 1