Maven 忽略证书验证

阅读:56
作者:majingjing
发布:2025-02-17 16:06:23
-Dmaven.multiModuleProjectDirectory=$MAVEN_HOME
-Dmaven.wagon.http.ssl.insecure=true
-Dmaven.wagon.http.ssl.allowall=true
-Dmaven.wagon.http.ssl.ignore.validity.dates=true

报错信息

 Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty -> [Help 1] 

解决方案 通常与 Java 安全配置有关,特别是在尝试访问 HTTPS 资源(例如 Maven 中央仓库)时。这个错误提示你的 Java 环境中的信任库(trust store)没有正确设置或为空,这意味着 Java 无法验证 SSL 证书的有效性。

以下是一些可能的解决方案:

  1. 检查 JAVA_HOME 和 JRE 设置:确保你的 JAVA_HOMEJRE 设置指向一个有效的 JDK/JRE 安装目录,并且该目录下的 lib/security/cacerts 文件存在并且不是空的。

  2. 更新或修复 cacerts 文件

    • 找到你的 JDK 的 cacerts 文件,通常位于 $JAVA_HOME/jre/lib/security/cacerts 或 $JAVA_HOME/lib/security/cacerts
    • 如果文件丢失或者损坏,可以从其他相同版本的 JDK 安装中复制一份,或者使用 keytool 工具来重新生成它。你可以使用如下命令列出当前的 CA 证书来检查其状态:keytool -list -v -keystore $JAVA_HOME/jre/lib/security/cacerts。(默认密码通常是 "changeit")
  3. Maven 配置:如果你是在使用 Maven 构建项目时遇到这个问题,可以尝试在 Maven 的 settings.xml 文件中配置代理或镜像,以避免直接访问可能导致问题的 HTTPS 资源。

  4. 系统时间:虽然不太常见,但系统时间不准确也可能导致 SSL 证书验证失败。请确保你的系统时间设置是正确的。当前时间为2025年3月11日星期二13时39分,请根据此信息校对你的系统时间。

  5. 使用 -Dmaven.wagon.http.ssl.insecure=true 参数:作为临时解决办法,可以在运行 Maven 命令时添加这个参数以跳过 SSL 检查,但这会降低安全性,因此不推荐长期使用。

	-Dmaven.wagon.http.ssl.insecure=true
	-Dmaven.wagon.http.ssl.allowall=true
	-Dmaven.wagon.http.ssl.ignore.validity.dates=true

image-20250311135734510

D:\software\Java\java-se-8u41-ri\bin\java.exe 
-Dvisualvm.id=15640679928100 
-Dmaven.multiModuleProjectDirectory=D:\works\azure\temp\platform-xxl-job-v2 
-Djansi.passthrough=true 
-Dmaven.multiModuleProjectDirectory=$MAVEN_HOME 
-Dmaven.wagon.http.ssl.insecure=true 
-Dmaven.wagon.http.ssl.allowall=true 
-Dmaven.wagon.http.ssl.ignore.validity.dates=true 
-Dmaven.home=D:\software\apache-maven-3.6.0 
-Dclassworlds.conf=D:\software\apache-maven-3.6.0\bin\m2.conf -Dmaven.ext.class.path=D:\software\Java\ideaIC-2024.2.4.win\plugins\maven\lib\maven-event-listener.jar -javaagent:D:\software\Java\ideaIC-2024.2.4.win\lib\idea_rt.jar=65236:D:\software\Java\ideaIC-2024.2.4.win\bin -Dfile.encoding=UTF-8 
-classpath D:\software\apache-maven-3.6.0\boot\plexus-classworlds-2.5.2.jar org.codehaus.classworlds.Launcher -Didea.version=2024.2.4 
--errors 
--fail-fast 
-s C:\Users\mamarion\.m2\settings.xml 
-Dmaven.repo.local=D:\software\repos 
-DskipTests=true 
compile