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


106

我经常需要运行“ 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握手错误。

有什么办法可以配置mvn以忽略SSL错误。

Answers:


236

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

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

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

这是一个简单的复制粘贴操作:

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

Ajay Gautam建议您也可以将以上内容添加到~/.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"

1
我有spring boot / maven项目,并且正在使用maven-jaxb2-plugin生成Web服务的源。但证书已过期。因此,我尝试在Eclipse中使用上述方法运行Maven生成源。但是我仍然收到错误“时间戳检查失败”的任何想法,如何在Eclipse / Maven环境中解决它。
Mukun

14
答案对我不起作用。我正在使用maven 3.5.0,收到的异常是PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target。Wagon是否可以与MAven 3.5.0配合使用?
thlim

相反,我创建了一个信任库jks并将maven指向此jks文件。
thlim

3
通过在maven 3.5.0上为我安装Java密码学扩展(JCE)无限强度(对于JDK7 |对于JDK8)修复问题
skadya,

1
使用netbeans 6.8,我通过UI将选项添加到了“全局执行选项”下的netbeans maven选项中,并且能够使用https从存储库下载。
Dan675 '17

46

对我有用的另一种方法是,在使用Maven Central时,通过将以下内容添加到settings.xml来告诉Maven使用http:而不是https ::

<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>

当然,您的里程可能会有所不同。


2
谢谢,那行得通!并请记要恢复曾经SSL工作,因为这可能会导致用户增加非标准的版本库,能够承办谁知道
ASGS

3
自2020年1月以来,此方法不起作用,因为Maven回购禁用了http连接
Justin

1
自2020年1月以来将出现此错误:ReasonPhrase:HTTPS Required“,因为Maven回购已禁用Http连接
Justin

8

创建一个文件夹,${USER_HOME}/.mvnmaven.config在其中放置一个文件。

内容应为:

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

希望这可以帮助。


我成功地在命令行上直接使用了这些参数,但是将它们添加到文件中时仍然失败
Justin

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.