如何告诉 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

由于我需要与各种其他域集成,所以目前每次我都必须将它们的证书添加到我的 trust store.jks 中,以防止 SSL 握手错误。

有没有什么方法可以配置 mvn 来忽略 SSL 错误。

298687 次浏览

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

  • -Dmaven.wagon.http.ssl.insecure=true-允许对用户生成的证书使用放松的 SSL 检查。
  • 使服务器的 X.509证书与主机名匹配 -Dmaven.wagon.http.ssl.allowall=true。如果禁用,将使用类似检查的浏览器。
  • -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"

您还可以将 m2e 配置为使用 HTTP 而不是 HTTPS

迫使 m2e 使用 http-而不是 https

另一个对我有效的方法是告诉 Maven 在使用 Maven Central 时使用 http: 而不是 https: ,方法是在 Setings.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>

当然,你的情况可能会有所不同。

创建一个文件夹 ${USER_HOME}/.mvn 把一个叫 maven.config的文件放进去。

内容应该是:

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

希望这个能帮上忙。

我发现最新的 jdk16将使 SSL 证书失败,因此我必须使用 解决 -Dmaven.wagon.http.ssl.ignore.validity.dates=true问题; 切换到 jdk11(LTS) ,然后所有问题都消失了。

此外,jdk1.8也进行了测试,它也可以在没有任何参数的情况下工作; 但是 jdk1.8处于无更新模式,最好转到 LTS jdk 版本,而不是最新的 jdk16。

如果您想将所有相同的 maven.wagon.http.ssl.设置放入 ~/.m2/settings.xml而不是 ~/.mavenrc,那么您需要在文件中放入以下内容:

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd">
<profiles>
<profile>
<id>definedInM2SettingsXML</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<maven.wagon.http.ssl.insecure>true</maven.wagon.http.ssl.insecure>
<maven.wagon.http.ssl.allowall>true</maven.wagon.http.ssl.allowall>
<maven.wagon.http.ssl.ignore.validity.dates>true</maven.wagon.http.ssl.ignore.validity.dates>
</properties>
</profile>
</profiles>
</settings>