Bagaimana cara memberitahu Maven untuk mengabaikan kesalahan SSL (dan mempercayai semua sertifikat)?

106

Saya sering perlu menjalankan perintah "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

Karena saya perlu berintegrasi dengan berbagai domain lain, jadi saat ini setiap kali saya harus menambahkan sertifikat mereka ke truststore.jks saya untuk mencegah kesalahan handshake SSL.

Apakah ada cara saya dapat mengkonfigurasi mvn untuk mengabaikan kesalahan SSL.

Pengguna Pemula
sumber

Jawaban:

237

Anda dapat menonaktifkan pemeriksaan sertifikat SSL dengan menambahkan satu atau beberapa parameter baris perintah berikut:

  • -Dmaven.wagon.http.ssl.insecure=true - aktifkan penggunaan pemeriksaan SSL santai untuk sertifikat yang dibuat pengguna.
  • -Dmaven.wagon.http.ssl.allowall=true- aktifkan kecocokan sertifikat X.509 server dengan nama host. Jika dinonaktifkan, browser seperti cek akan digunakan.
  • -Dmaven.wagon.http.ssl.ignore.validity.dates=true - abaikan masalah dengan tanggal sertifikat.

Dokumentasi resmi: http://maven.apache.org/wagon/wagon-providers/wagon-http/

Berikut adalah panduan untuk menyalin dan menempel dengan mudah:

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

Ajay Gautam menyarankan agar Anda juga dapat menambahkan hal di atas ke ~/.mavenrcfile agar tidak perlu menentukannya setiap saat pada baris perintah:

$ cat ~/.mavenrc 
MAVEN_OPTS="-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true -Dmaven.wagon.http.ssl.ignore.validity.dates=true"
rekam
sumber
1
Saya memiliki proyek boot / maven musim semi dan saya menggunakan maven-jaxb2-plugin untuk menghasilkan sumber layanan web. tapi sertifikatnya sudah kadaluarsa. Jadi saya mencoba menjalankan maven menghasilkan sumber dengan agrumen di atas di Eclipse. Tapi saya masih mendapatkan kesalahan "pemeriksaan stempel waktu gagal" tahu bagaimana menyelesaikannya di lingkungan gerhana / maven.
Mukun
14
Jawabannya tidak berhasil untuk saya. Saya menggunakan maven 3.5.0 dan pengecualian yang saya terima adalah PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target. Apakah wagon bekerja dengan MAven 3.5.0?
thlim
Sebagai gantinya, saya membuat jks truststore dan menunjuk maven ke file jks ini.
thlim
3
Dengan Menginstal Java Cryptography Extension (JCE) Kekuatan Tidak Terbatas (untuk JDK7 | untuk JDK8 ) memperbaiki masalah untuk saya di maven 3.5.0
skadya
1
Menggunakan netbeans 6.8 Saya menambahkan opsi ke opsi netbeans maven di bawah 'Opsi Eksekusi Global' melalui UI dan saya dapat mengunduh dari repositori menggunakan https.
Dan675
46

Alternatif yang berhasil bagi saya adalah memberi tahu Maven untuk menggunakan http: alih-alih https: saat menggunakan Maven Central dengan menambahkan yang berikut ke 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>

Jarak tempuh Anda tentu saja mungkin berbeda.

Richard Steele
sumber
2
Terima kasih, itu berhasil! Dan harap perhatikan untuk mengembalikan setelah SSL berfungsi karena ini dapat menyebabkan pengguna menambahkan repositori non-standar yang dapat menghosting siapa yang tahu apa
asgs
3
Ini tidak berfungsi sejak Jan 2020 karena repo Maven menonaktifkan koneksi http
Justin
1
Akan mendapatkan kesalahan ini sejak Jan 2020: ReasonPhrase: HTTPS Required ", karena repo Maven menonaktifkan koneksi Http
Justin
8

Buat folder ${USER_HOME}/.mvn dan letakkan file bernama maven.configdi dalamnya.

Kontennya harus:

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

Semoga ini membantu.

Nicola Ben
sumber
Saya berhasil secara langsung menggunakan parameter tersebut pada baris perintah, tetapi masih gagal saat menambahkannya ke dalam file
Justin