如何告诉Maven忽略SSL错误(并相信所有的证书)?

我经常需要运行“mvn”命令:

mvn -f pom.xml clean install -Dmaven.test.skip=false --settings /Users/myhome/settings.xml -X -Djavax.net.ssl.trustStore=/Users/myhome/truststore.jks -Djavax.net.ssl.trustStoreType=JKS -Djavax.net.ssl.trustStorePassword=dummy -Djava.protocol.handler.pkgs=com.sun.net.ssl.internal.www.protocol -U 

由于我需要与各种其他域进行集成,因此每次我必须将其证书添加到truststore.jks以防止SSL握手错误。

有什么办法可以configurationmvn忽略SSL错误。

您可以通过添加以下一个或多个命令行参数来禁用SSL证书检查:

  • -Dmaven.wagon.http.ssl.insecure=true – 对用户生成的证书启用宽松的SSL检查。
  • -Dmaven.wagon.http.ssl.allowall=true – 启用服务器X.509证书与主机名的匹配。 如果禁用,将使用类似支票的浏览器。
  • -Dmaven.wagon.http.ssl.ignore.validity.dates=true – 忽略证书date的问题。

官方文档: http : //maven.apache.org/wagon/wagon-providers/wagon-http/

这是一个简单的复制和粘贴的oneliner:

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

Ajay Gautambuild议你也可以将上面的代码添加到~/.mavenrc文件中,而不必每次都在命令行中指定它:

 $ cat ~/.mavenrc MAVEN_OPTS="-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true -Dmaven.wagon.http.ssl.ignore.validity.dates=true" 

另一种方法是告诉Maven使用http:而不是https:当使用Maven Central时,通过在settings.xml中添加以下内容:

 <settings> . . . <mirrors> <mirror> <id>central-no-ssl</id> <name>Central without ssl</name> <url>http://repo.maven.apache.org/maven2</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors> . . . </settings> 

你的里程可能会有所不同。

您也可以将m2econfiguration为使用HTTP而不是HTTPS

力M2E使用的-HTTP-INSTEAD-OF-HTTPS