0%

Java爬取https网址抛出SunCertPathBuilderException解决

Java爬取https网址抛出SunCertPathBuilderException: unable to find valid certification path to requested target

是因为 $env:JAVA_HOME/lib/security/cacerts 中没有对应的CA,需要手动将SSL证书加入

亲测下列解决步骤适用于Win10和Win11

下载证书

以Chrome为例

.image-20230213162629520

.image-20230213162709143

.image-20230213162756441

.image-20230213162833193

保存类型保持默认即可

.image-20230213163016976

之后得到一个.crt后缀的证书文件

导入证书

管理员权限打开powershell,因为需要修改C盘中非用户目录的文件

1
2
3
4
5
6
7
8
> .$env:JAVA_HOME/bin/keytool -importcert -trustcacerts -alias <alias> -file "<path to your crt>" -keystore "$env:JAVA_HOME\lib\security\cacerts"
警告: 使用 -cacerts 选项访问 cacerts 密钥库
输入密钥库口令: changeit
...
一堆证书内容信息
...
是否信任此证书? [否]: y
证书已添加到密钥库中

重新运行代码,发现已经不报错了

参考

[1] https://techcommunity.microsoft.com/t5/azure-database-support-blog/pkix-path-building-failed-unable-to-find-valid-certification/ba-p/2591304

[2] https://blog.csdn.net/qq_41655194/article/details/108861451