SMS系统开发总结(三)Java访问Let’s encrypt证书的网站

前言

我们团队是学生团队,也没有太多的资源去购买SSL证书,所以就用Let’s Encrypt的证书了,但是今天在调用自己写的东西的时候发生了一个错误。

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

解决

经查询是jdk的版本的问题,在里面不含有Let’s encrypt的证书,所以我们可以用两种解决方法去解决这个问题。

方法一

手动导入Let’s encrypt的Root证书。

1.下载DST Root CA X3证书

保存为下面这种格式。
-----BEGIN CERTIFICATE-----
证书内容
-----END CERTIFICATE-----

2.利用jdk的keytool导入证书。

cmd执行下面命令即可
%JAVA_HOME%/jre/bin/keytool -trustcacerts -keystore %JAVA_HOME%/jre/lib/security/cacerts -storepass changeit -noprompt -importcert -alias dstrootcax3 -file DSTRootCAX3.pem

方法二

直接更换jdk,使用新版本的jdk。

打赏