Magnolia模块生成器出现“valid certification path”认证路径问题求助
我之前也踩过这个坑!你遇到的PKIX path building failed错误,本质是Java的系统信任库没有包含Magnolia Nexus仓库的SSL证书,导致Maven无法建立安全的HTTPS连接到该仓库。下面给你几个实用的解决办法,按操作复杂度从低到高来:
方法1:临时跳过SSL验证(适合快速测试,不推荐生产用)
如果只是临时想生成模块,不想折腾证书,可以给原命令加上两个跳过SSL验证的参数,直接绕开这个问题:
mvn org.apache.maven.plugins:maven-archetype-plugin:2.4:generate -DarchetypeCatalog=https://nexus.magnolia-cms.com/content/groups/public/ -Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true
-Dmaven.wagon.http.ssl.insecure=true:允许连接到证书不被信任的HTTPS站点-Dmaven.wagon.http.ssl.allowall=true:强制信任所有SSL证书
方法2:把Magnolia Nexus证书导入Java信任库(长期安全方案)
这是最规范的解决方式,步骤也不难:
下载证书:
打开浏览器访问https://nexus.magnolia-cms.com/content/groups/public/,点击地址栏的锁形图标,导出站点的SSL证书(格式选DER或者PEM都可以,保存到本地)。导入到Java信任库:
找到你的Java安装目录下的jre/lib/security/cacerts文件(默认密码是changeit),然后用keytool命令导入证书:keytool -import -alias magnolia-nexus -keystore $JAVA_HOME/jre/lib/security/cacerts -file /你保存证书的路径/magnolia-cert.cer要是你用的是Windows系统,把
$JAVA_HOME换成你的Java实际安装路径就行,比如C:\Program Files\Java\jdk1.8.0_351。验证导入结果:
可以用下面的命令确认证书已经成功添加到信任库:keytool -list -keystore $JAVA_HOME/jre/lib/security/cacerts -alias magnolia-nexus
方法3:在Maven的settings.xml里配置自定义信任库
如果你不想修改全局的Java信任库(比如怕影响其他项目),可以在Maven的settings.xml(一般在~/.m2/settings.xml,或者Maven安装目录下的conf/settings.xml)里单独配置:
<settings> <!-- 其他配置比如代理、镜像可以保留,只加下面的server配置 --> <servers> <server> <id>magnolia-public-repo</id> <configuration> <ssl> <trustStore>/你自己创建的信任库路径/custom-truststore.jks</trustStore> <trustStorePassword>你的信任库密码</trustStorePassword> </ssl> </configuration> </server> </servers> </settings>
你需要先创建一个自定义的JKS格式信任库,把Magnolia的证书导入进去,再在settings里指定这个路径和密码。
另外提个小建议:检查下你的Maven和Java版本是否和Magnolia的要求匹配,比如Magnolia 6.x系列一般推荐用Maven 3.6.x以上,Java 8或11,版本不兼容也可能引发奇怪的连接问题。
内容的提问来源于stack exchange,提问作者AlexeiP

