我的JRE密钥库上安装了自签名CA证书。当我输入keytool -list -keystore $JAVA_HOME/jre/lib/security/cacerts|grep mycert
时,我实际上可以看到它已正确安装。但是,当我通过Maven运行一些功能测试时,我会收到如下错误:
Certificate for doesn't match any of the subject alternative names: []; nested exception is javax.net.ssl.SSLPeerUnverifiedException: Certificate for doesn't match any of the subject alternative names
我的设置是OSX Sierra,JRE 8u151-oracle和maven 3.0.5,都是通过sdkman安装的。最奇怪的是当我从IntelliJ运行maven时,错误消失了。我一直在做一些调查,发现它使用了不同的maven发射器。以下是生成的命令:
# IntelliJ
/Users/jdebenitocalzada/.sdkman/candidates/java/8u151-oracle/bin/java
-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true -Djsse.enableSNIExtension=false
-Dmaven.home=/Users/jdebenitocalzada/.sdkman/candidates/maven/3.0.5
-Dclassworlds.conf=/Users/jdebenitocalzada/.sdkman/candidates/maven/3.0.5/bin/m2.conf
-classpath /Users/jdebenitocalzada/.sdkman/candidates/maven/3.0.5/boot/plexus-classworlds-2.4.jar
org.codehaus.classworlds.Launcher
test
# Maven
Users/jdebenitocalzada/.sdkman/candidates/java/8u151-oracle/bin/java
-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true -Djsse.enableSNIExtension=false
-Dmaven.home=/Users/jdebenitocalzada/.sdkman/candidates/maven/current
-Dclassworlds.conf=/Users/jdebenitocalzada/.sdkman/candidates/maven/current/bin/m2.conf
-classpath /Users/jdebenitocalzada/.sdkman/candidates/maven/current/boot/plexus-classworlds-2.4.jar
org.codehaus.plexus.classworlds.launcher.Launcher
test
如您所见,唯一的区别是IntelliJ在从CLI运行时使用Maven使用的org.codehaus.classworlds.Launcher
vs org.codehaus.plexus.classworlds.launcher.Launcher
。
我的问题主要是为什么Maven在从命令行运行时忽略了密钥库,但是,为什么它在从IntelliJ运行时使用不同的运行器,以及两个运行程序之间有什么区别。
注意:我几乎可以肯定,行为的差异是由于使用了不同的运行程序,它与JDK版本无关,因为当我从CLI运行IntelliJ生成的命令时,它运行正常。 / p>
答案 0 :(得分:1)
我不知道为什么,但似乎问题与我使用别名为mvn命令添加一些选项这一事实有关。将这些选项移至MAVEN_OPTS
env var后,它开始正常工作。