Https证书问题SSLHandshakeException:PKIX path building failed

访问Https站点遇到证书问题

问题描述:

在集成CAS 认证时,通过https访问CAS Server进行认证时,系统报错错内容如下:

[2023-07-26 11:52:53] ERROR org.jasig.cas.client.util.CommonUtils 457 getResponseFromServer - SSL error getting response from host: ids.mtxy.edu.cn : Error Message: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192) ~[?:1.8.0_221]

​ …

SSLHandshake :

PKIX path:

HTTPS 其实就是 HTTP + SSL/TLS 的合体,它其实还是 HTTP 协议,只是在外面加了一层,SSL 是一种加密安全协议,引入 SSL 的目的是为了解决 HTTP 协议在不可信网络中使用明文传输数据导致的安全性问题。

解决方案:

​ 将我们需要进行https访问的目标服务地址(CAS Server CAS认证服务端)的证书公钥导入到我们运行环境中程序jdk中。详细步骤如下:

1.访问目标地址证书

首先用 360浏览器 访问目标地址,在地址栏处点击锁的图标,然后点击证书信息

在这里插入图片描述

2. 导出目标地址的证书:

第二步,我们在查看目标网站证书时进行导出操作。如下图所示。

在这里插入图片描述

记录备注:正常情况下可以之间导出cer文件。 不需要如此复杂的步骤!!!!

​ 注:一般我们需要导出两个文件: 即上图中的 RSA目录 和 CA 目录 都分别执行一次导出操作!

​ 点击导出按钮之后,就会选择目录地址,这里就自定义一个目录来保存我们导出的两个证书。导出后的证书就是两个 .crt 文件。

在这里插入图片描述

3.导出证书的cer文件

点击第二步导出的证书(右击选择打开),打开证书后,进行证书导出操作:

在这里插入图片描述

点击复制到文件…

在这里插入图片描述

点击下一步:

在这里插入图片描述

备注:
也可以选择Base64 编码格式进行导出!

​ 这里就选择DER编码二进制 X.509(.CER)(D) ,然后点击下一步:

在这里插入图片描述

这里需要选择导出的路径和导出文件名称,名字可以自定义随便设置。这一步就会导出 cer类型的证书文件。

第二部导出的两个证书都分别都进行该操作,然后就会得到两个cer类型的证书文件,证书名称可以随意命名。如下图所示:

在这里插入图片描述

4. 将cer文件上传到jre中

​ 将第三步生成的两个 cer 文件上传到我们项目的 jdk/jre/lib/security(根据自己项目的具体路径进行调整)文件中:

在这里插入图片描述

​ 然后在当前目录下,cmd 进入命令窗口进行接下来的操作:
如果语句 keytool 提示不是内部命令的情况,就之间进入jdk的bin目录(jre\bin)下去执行,对应证书文件的路径需要进行调整!

  • 使用如下命令:(红色部分根据自己的证书名字进行实际情况的调整)

    keytool -import -trustcacerts -keystore ./cacerts -alias test1 -file ./test1.cer -storepass changeit(密码:默认密码为changeit)

备注:

keytool -import -keystore /usr/local/jdk.1.8/jre/lib/security/cacerts -file /home/ca/baidu.com.crt -alias baidu

正常情况需要将生成的cacerts文件存入 :/jdk.1.8/jre/lib/security/cacerts 路径地址中!!

如有报错:

keytool error: gnu.javax.crypto.keyring.MalformedKeyringException: incorrect magic

用以下命令执行:

/opt/jrockit-jdk1.6/jre/bin/keytool -import -trustcacerts -keystore ./cacerts -alias test1 -file ./test1.cer -storepass changeit

如果出现 keytool 不是内部命令时,我们需要在环境变量中配置jdk的环境变量即可

​ 查看是否导入成功:

​ keytool -list -keystore ./cacerts -alias test1 -storepass changeit

​ keytool -list -keystore./cacerts -alias test2 -storepass changeit

TODO:此网站无法提供安全连接 https访问网站的前提条件是需要在Nginx安装证书配置!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值