maven依赖报错 SunCertPathBuilderException: unable to find valid certification path to requested target
时间: 2023-11-06 13:02:14 浏览: 208
报错信息"SunCertPathBuilderException: unable to find valid certification path to requested target"表示在建立证书路径时发生错误,无法找到请求目标的有效证书路径。处理这种情况的常用方法是下载站点证书,将其导入密钥库,并通过Java虚拟机选项"-Djavax.net.ssl.trustStore=..."使用该密钥库。这样可以确保在运行Maven依赖时可以找到有效的证书路径。
其他
相关问题
maven打包异常记录:SunCertPathBuilderException: unable to find valid certification path to requested target...
当使用Maven进行项目打包时遇到"SunCertPathBuilderException: unable to find valid certification path to requested target"错误,通常是因为在构建过程中JVM无法找到信任的证书路径,导致它无法验证从远程仓库下载的依赖包的安全性。这可能是由于以下几个原因:
1. **SSL/TLS证书问题**:Maven需要访问的服务器使用了自签名或不受信任的SSL证书。解决方法是在本地设置Maven的证书存储库,添加该证书的信任。
```sh
keytool -alias <your-cert-alias> -file <path-to-certificate-file> -keystore ~/.m2/settings/security/cacerts
```
2. **网络代理设置**:如果你通过代理服务器连接到远程仓库,代理服务器可能没有配置正确的证书,或者证书未正确配置。检查代理设置并确认它们可以正确处理SSL。
3. **Maven版本兼容性**:某些Maven版本对SSL支持可能存在差异,尝试升级或降级Maven到一个与你的项目所依赖仓库证书兼容的版本。
4. **证书过期**:如果证书已经过期,你需要更新服务器的证书或者更新客户端证书的信任信息。
cts 测试 sun.securitty.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
### 解决 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定义有误造成的。应确保子模块能够正确定位其对应的父级工程位置从而顺利完成构建流程。
阅读全文