Jak powiedzieć Mavenowi, aby ignorował błędy SSL (i ufał wszystkim certyfikatom)?

106

Często muszę uruchamiać polecenie „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

Ponieważ potrzebuję integracji z różnymi innymi domenami, obecnie za każdym razem muszę dodawać ich certyfikat do mojego truststore.jks, aby zapobiec błędom uzgadniania SSL.

Czy istnieje sposób, aby skonfigurować mvn tak, aby ignorował błędy SSL.

Początkujący użytkownik
źródło

Odpowiedzi:

237

Możesz wyłączyć sprawdzanie certyfikatu SSL, dodając jeden lub więcej z następujących parametrów wiersza poleceń:

  • -Dmaven.wagon.http.ssl.insecure=true - włącz korzystanie ze złagodzonego sprawdzania SSL dla certyfikatów generowanych przez użytkowników.
  • -Dmaven.wagon.http.ssl.allowall=true- włącz dopasowanie certyfikatu X.509 serwera do nazwy hosta. Jeśli wyłączone, zostanie użyta przeglądarka, taka jak check.
  • -Dmaven.wagon.http.ssl.ignore.validity.dates=true - zignoruj ​​problemy z datami certyfikatów.

Oficjalna dokumentacja: http://maven.apache.org/wagon/wagon-providers/wagon-http/

Oto oneliner ułatwiający kopiowanie i wklejanie:

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

Ajay Gautam zasugerował, że możesz również dodać powyższe do ~/.mavenrcpliku, aby nie musieć podawać tego za każdym razem w wierszu poleceń:

$ 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
źródło
1
Mam projekt Spring boot / maven i używam wtyczki maven-jaxb2-plugin do generowania źródeł usług sieciowych. ale certyfikat wygasł. Spróbowałem więc uruchomić mavena generującego źródła z powyższymi agrumentami w Eclipse. Ale nadal pojawia się błąd „sprawdzenie sygnatury czasowej nie powiodło się”, jakikolwiek pomysł, jak go rozwiązać w środowisku zaćmienia / maven.
Mukun
14
Odpowiedź nie działa dla mnie. Używam maven 3.5.0 i otrzymałem wyjątki PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target. Czy wagon działa z MAven 3.5.0?
thlim
Zamiast tego utworzyłem truststore jks i wskazałem maven na ten plik jks.
thlim
3
Instalując rozszerzenie Java Cryptography Extension (JCE) Unlimited Strength (dla JDK7 | dla JDK8 ) napraw problem w maven 3.5.0
skadya
1
Używając netbeans 6.8, dodałem opcje do opcji netbeans maven w obszarze „Global Execution Options” poprzez interfejs użytkownika i mogłem pobierać z repozytoriów przy użyciu https.
Dan675
46

Alternatywą, która zadziałała dla mnie, jest poinformowanie Mavena, aby używał http: zamiast https: podczas korzystania z Maven Central, dodając następujące polecenie do 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>

Twój przebieg może się oczywiście różnić.

Richard Steele
źródło
2
Dzięki, zadziałało! I proszę zwrócić uwagę, aby przywrócić, gdy SSL
zadziała,
3
To nie działa od stycznia 2020 r., Ponieważ repozytorium Maven wyłączyło połączenie http
Justin
1
Pojawi się ten błąd od stycznia 2020 r .: ReasonPhrase: wymagany HTTPS ”, ponieważ repozytorium Maven wyłączyło połączenie HTTP
Justin,
8

Utwórz folder ${USER_HOME}/.mvn i umieść plik o nazwie maven.config.

Treść powinna być:

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

Mam nadzieję że to pomoże.

Nicola Ben
źródło
Udało mi się bezpośrednio użyć tych parametrów w wierszu poleceń, ale nadal nie udało mi się dodać ich do pliku
Justin,