cts 测试 sun.securitty.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
时间: 2025-01-03 16:43:20 浏览: 8
### 解决 SunCertPathBuilderException 无法找到有效认证路径
当遇到 `sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target` 错误时,这通常意味着 Java 运行环境中缺少必要的 SSL 证书或中间证书[^2]。
#### 方法一:安装缺失的证书到 JVM 的信任库
为了使 Maven 能够成功连接远程仓库并下载依赖项,可以手动将所需的 CA 证书导入到 JDK/JRE 自带的信任存储文件 (`cacerts`) 中:
1. 获取目标服务器的根证书和任何必需的中级证书;
2. 使用 keytool 工具将其添加至 cacerts 文件中;
```bash
keytool -importcert -alias exampleAliasName \
-file /path/to/certificate.crt \
-keystore $JAVA_HOME/jre/lib/security/cacerts \
-storepass changeit
```
此命令会提示确认是否要信任该证书,在输入 yes 后完成操作即可[^1]。
#### 方法二:配置 Maven 忽略 SSL 验证(不推荐用于生产环境)
对于开发测试阶段而言,可以通过设置系统属性来绕过 SSL 握手过程中的主机名验证以及关闭所有 HTTPS 请求的安全检查。但这并不适用于正式部署场景因为这样做会使应用程序暴露于潜在风险之下。
编辑 settings.xml 或者 pom.xml 添加如下配置片段:
```xml
<profiles>
<profile>
<id>allow-all</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<!-- 关闭Maven Wagon组件对HTTPS请求做SSL握手 -->
<maven.wagon.http.ssl.insecure>true</maven.wagon.http.ssl.insecure>
<maven.wagon.http.ssl.allowall>true</maven.wagon.http.ssl.allowall>
<maven.wagon.http.ssl.ignore.validity.dates>true</maven.wagon.http.ssl.ignore.validity.dates>
</properties>
</profile>
</profiles>
```
这种方法虽然简单快捷但是安全性较差因此仅限于本地调试使用[^3]。
#### 方法三:调整项目结构修正 parent.relativePath 设置不当引起的问题
如果同时还存在 `'parent.relativePath' points at wrong local POM` 提示,则可能是由于项目的父POM定义有误造成的。应确保子模块能够正确定位其对应的父级工程位置从而顺利完成构建流程。
阅读全文