Как сказать 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.

Начинающий пользователь
источник

Ответы:

237

Вы можете отключить проверку сертификата SSL, добавив один или несколько из следующих параметров командной строки:

  • -Dmaven.wagon.http.ssl.insecure=true - разрешить использование упрощенной проверки SSL для пользовательских сертификатов.
  • -Dmaven.wagon.http.ssl.allowall=true- разрешить соответствие сертификата сервера X.509 имени хоста. Если отключено, будет использоваться проверка типа браузера.
  • -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

Аджай Гаутам предложил добавить в ~/.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"
rec
источник
1
У меня есть проект spring boot / maven, и я использую maven-jaxb2-plugin для создания источников веб-сервиса. но срок действия сертификата истек. Итак, я попытался запустить maven generate sources с указанными выше агрументами в Eclipse. Но я все еще получаю сообщение об ошибке «Ошибка проверки отметки времени». Не знаю, как ее решить в среде 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. Вагон работает с MAven 3.5.0?
thlim
Вместо этого я создал jks хранилища доверенных сертификатов и указал maven на этот файл jks.
thlim
3
Установив расширение Java Cryptography Extension (JCE) Unlimited Strength (для JDK7 | для JDK8 ), исправьте проблему для меня на maven 3.5.0
skadya
1
Используя netbeans 6.8, я добавил параметры к параметрам maven netbeans в разделе «Глобальные параметры выполнения» через пользовательский интерфейс, и я смог загрузить их из репозиториев с помощью https.
Dan675
46

Альтернатива, которая сработала для меня, - сказать 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>

Конечно, ваш пробег может отличаться.

Ричард Стил
источник
2
Спасибо, сработало! И, пожалуйста, обратите внимание на то, что нужно вернуться, как только SSL заработает, потому что это может привести к тому, что пользователи
добавят
3
Это не работает с января 2020 года, потому что репозиторий Maven отключил http-соединение
Джастин
1
С января 2020 года вы получите эту ошибку: ReasonPhrase: HTTPS Required », потому что репозиторий Maven отключил Http-соединение
Джастин
8

Создайте папку ${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

Надеюсь это поможет.

Никола Бен
источник
Мне удалось напрямую использовать эти параметры в командной строке, но все равно не удалось добавить их в файл
Джастин