Proxy arkasında Maven ve SSL kullanma sorunları


134

Maven'i yeni indirdim ve "Beş Dakikada Maven" sayfasında bulunan basit komutu çalıştırmaya çalışıyordum ( http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html ). Komut şudur:

mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

Çalıştırdığımda SSL sertifikası ile ilgili bir hata alıyorum ve https://repo.maven.apache.org/maven2 adresindeki merkezi Maven deposundan indiremiyorum . Hata "SunCertPathBuilderException: istenen hedef için geçerli sertifika yolu bulunamadı".

Ben kurumsal bir güvenlik duvarı oturuyorum ve doğru olarak her ikisi için proxy ayarlarını yapılandırmış httpve httpsüzerinden erişimsettings.xml dosya . Maven'i indiren ve ilk kez çalıştıran herkesin Maven deposunun SSL sertifikasını içe aktarması gerektiğinden şüpheliyim, bu nedenle sorunun proxy'de olması gerekir. Bununla ilgili deneyimi olan var mı?

İşte tam hata ayıklama modunda (-X) yığın izleme:

 mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

Apache Maven 3.2.3 (33f8c3e1027c3ddde99d3cdebad2656a31e8fdf4; 2014-08-11T22:58:10+02:00)
    Maven home: C:\Projects\maven\bin\..
    Java version: 1.7.0_45, vendor: Oracle Corporation
    Java home: C:\Program Files\Java\jdk1.7.0_45\jre
    Default locale: it_IT, platform encoding: Cp1252
    OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"
    [DEBUG] Using connector WagonRepositoryConnector with priority 0.0 for https://repo.maven.apache.org/maven2 via *****:8080 with username=*****, password=***
    Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.pom
    [WARNING] Failed to retrieve plugin descriptor for org.apache.maven.plugins:maven-clean-plugin:2.5: Plugin org.apache.maven.plugins:maven-clean-plugin:2.5 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-clean-plugin:jar:2.5
    org.apache.maven.plugin.PluginResolutionException: Plugin org.apache.maven.plugins:maven-clean-plugin:2.5 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-clean-plugin:jar:2.5
            at org.apache.maven.plugin.internal.DefaultPluginDependenciesResolver.resolve(DefaultPluginDependenciesResolver.java:122)
            at org.apache.maven.plugin.internal.DefaultMavenPluginManager.getPluginDescriptor(DefaultMavenPluginManager.java:148)
            at org.apache.maven.plugin.DefaultBuildPluginManager.loadPlugin(DefaultBuildPluginManager.java:81)
            at org.apache.maven.plugin.prefix.internal.DefaultPluginPrefixResolver.resolveFromProject(DefaultPluginPrefixResolver.java:138)
            at org.apache.maven.plugin.prefix.internal.DefaultPluginPrefixResolver.resolveFromProject(DefaultPluginPrefixResolver.java:121)
            at org.apache.maven.plugin.prefix.internal.DefaultPluginPrefixResolver.resolve(DefaultPluginPrefixResolver.java:85)
            at org.apache.maven.lifecycle.internal.MojoDescriptorCreator.findPluginForPrefix(MojoDescriptorCreator.java:260)
            at org.apache.maven.lifecycle.internal.MojoDescriptorCreator.getMojoDescriptor(MojoDescriptorCreator.java:220)
            at org.apache.maven.lifecycle.internal.DefaultLifecycleTaskSegmentCalculator.calculateTaskSegments(DefaultLifecycleTaskSegmentCalculator.java:103)
            at org.apache.maven.lifecycle.internal.DefaultLifecycleTaskSegmentCalculator.calculateTaskSegments(DefaultLifecycleTaskSegmentCalculator.java:83)
            at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:85)
            at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:347)
            at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:154)
            at org.apache.maven.cli.MavenCli.execute(MavenCli.java:582)
            at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:214)
            at org.apache.maven.cli.MavenCli.main(MavenCli.java:158)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.lang.reflect.Method.invoke(Method.java:606)
            at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
            at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
            at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
            at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
    Caused by: org.eclipse.aether.resolution.ArtifactDescriptorException: Failed to read artifact descriptor for org.apache.maven.plugins:maven-clean-plugin:jar:2.5
            at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:349)
            at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.readArtifactDescriptor(DefaultArtifactDescriptorReader.java:231)
            at org.eclipse.aether.internal.impl.DefaultRepositorySystem.readArtifactDescriptor(DefaultRepositorySystem.java:288)
            at org.apache.maven.plugin.internal.DefaultPluginDependenciesResolver.resolve(DefaultPluginDependenciesResolver.java:108)
            ... 23 more
    Caused by: org.eclipse.aether.resolution.ArtifactResolutionException: Could not transfer artifact org.apache.maven.plugins:maven-clean-plugin:pom:2.5 from/to central (https://repo.maven.apache.org/maven2): sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
            at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:459)
            at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:262)
            at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:239)
            at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:334)
            ... 26 more
    Caused by: org.eclipse.aether.transfer.ArtifactTransferException: Could not transfer artifact org.apache.maven.plugins:maven-clean-plugin:pom:2.5 from/to central (https://repo.maven.apache.org/maven2): sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
            at org.eclipse.aether.connector.wagon.WagonRepositoryConnector$6.wrap(WagonRepositoryConnector.java:1016)
            at org.eclipse.aether.connector.wagon.WagonRepositoryConnector$6.wrap(WagonRepositoryConnector.java:1004)
            at org.eclipse.aether.connector.wagon.WagonRepositoryConnector$GetTask.run(WagonRepositoryConnector.java:725)
            at org.eclipse.aether.util.concurrency.RunnableErrorForwarder$1.run(RunnableErrorForwarder.java:67)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
            at java.lang.Thread.run(Thread.java:744)
    Caused by: org.apache.maven.wagon.TransferFailedException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
            at org.apache.maven.wagon.providers.http.AbstractHttpClientWagon.fillInputData(AbstractHttpClientWagon.java:935)
            at org.apache.maven.wagon.StreamWagon.getInputStream(StreamWagon.java:116)
            at org.apache.maven.wagon.StreamWagon.getIfNewer(StreamWagon.java:88)
            at org.apache.maven.wagon.StreamWagon.get(StreamWagon.java:61)
            at org.eclipse.aether.connector.wagon.WagonRepositoryConnector$GetTask.run(WagonRepositoryConnector.java:660)
            ... 4 more
    Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
            at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
            at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1884)
            at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:276)
            at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:270)
            at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1341)
            at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:153)
            at sun.security.ssl.Handshaker.processLoop(Handshaker.java:868)
            at sun.security.ssl.Handshaker.process_record(Handshaker.java:804)
            at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1016)
            at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312)
            at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339)
            at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1323)
            at org.apache.maven.wagon.providers.http.httpclient.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:280)
            at org.apache.maven.wagon.providers.http.httpclient.impl.conn.HttpClientConnectionOperator.upgrade(HttpClientConnectionOperator.java:167)
            at org.apache.maven.wagon.providers.http.httpclient.impl.conn.PoolingHttpClientConnectionManager.upgrade(PoolingHttpClientConnectionManager.java:329)
            at org.apache.maven.wagon.providers.http.httpclient.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:392)
            at org.apache.maven.wagon.providers.http.httpclient.impl.execchain.MainClientExec.execute(MainClientExec.java:218)
            at org.apache.maven.wagon.providers.http.httpclient.impl.execchain.ProtocolExec.execute(ProtocolExec.java:194)
            at org.apache.maven.wagon.providers.http.httpclient.impl.execchain.RetryExec.execute(RetryExec.java:85)
            at org.apache.maven.wagon.providers.http.httpclient.impl.execchain.RedirectExec.execute(RedirectExec.java:108)
            at org.apache.maven.wagon.providers.http.httpclient.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:186)
            at org.apache.maven.wagon.providers.http.httpclient.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
            at org.apache.maven.wagon.providers.http.AbstractHttpClientWagon.execute(AbstractHttpClientWagon.java:756)
            at org.apache.maven.wagon.providers.http.AbstractHttpClientWagon.fillInputData(AbstractHttpClientWagon.java:854)
            ... 8 more
    Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
            at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:385)
            at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:292)
            at sun.security.validator.Validator.validate(Validator.java:260)
            at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:326)
            at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:231)
            at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:126)
            at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1323)
            ... 27 more
    Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
            at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:196)
            at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:268)
            at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:380)
            ... 33 more

2
SSL sertifikası kontrolünü görmezden gelmek için rec'in cevabını takiben çözdüm .
Evin1_

Yanıtlar:


182

Gerçek şu ki, maven eklentiniz bir https uzak depoya bağlanmaya çalışıyor
(ör. Https://repo.maven.apache.org/maven2/ )

Bu, Maven Central için Ağustos 2014'te kullanıma sunulan yeni bir SSL bağlantısıdır!

Bu nedenle, lütfen settings.xml dosyanızın doğru yapılandırmaya sahip olduğunu doğrulayabilir misiniz?

    <settings>
  <activeProfiles>
    <!--make the profile active all the time -->
    <activeProfile>securecentral</activeProfile>
  </activeProfiles>
  <profiles>
    <profile>
      <id>securecentral</id>
      <!--Override the repository (and pluginRepository) "central" from the
         Maven Super POM -->
      <repositories>
        <repository>
          <id>central</id>
          <url>http://repo1.maven.org/maven2</url>
          <releases>
            <enabled>true</enabled>
          </releases>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <id>central</id>
          <url>http://repo1.maven.org/maven2</url>
          <releases>
            <enabled>true</enabled>
          </releases>
        </pluginRepository>
      </pluginRepositories>
    </profile>
  </profiles>
</settings>

Alternatif olarak, bunun gibi basit http maven deposunu kullanabilirsiniz

 <pluginRepositories>
    <pluginRepository>
      <id>central</id>
      <name>Maven Plugin Repository</name>
      <url>http://repo1.maven.org/maven2</url>
      <layout>default</layout>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
      <releases>
        <updatePolicy>never</updatePolicy>
      </releases>
    </pluginRepository>
  </pluginRepositories>

Çözümüm işe yararsa lütfen bana bildirin;)

J.


2
Hızlı ve doğru yanıt için teşekkürler, benim için işe yaradı ve muhtemelen Ağustos 2014'ten sonra maven kullanmaya başlayan birçok kişiye yardımcı olacak :-) Bu arada, SSL ile nasıl çalışacağını buldum. Başkalarına yardım etmek için aşağıda bir cevap olarak göndereceğim, ancak cevabınız resmi olarak kabul edilen cevap olacak. Teşekkürler
Andy

Teşekkürler Andy;) Her iki çözüm de sizin için çalışıyor mu? yoksa sadece alternatif mi?
biology.info

4
Evet, denedim ve işe yarıyor. Ancak, ilk kod bloğunda her iki depo URL'sini de https'den http'ye değiştirmek zorunda kaldım, aksi takdirde eskisi gibi aynı hata mesajını aldım. Ayrıca, bunu deneyen herkes için <activeProfiles> etiketini unutmayın.
Andy

1
Sadece ikinci alternatif basit soln ile denedim, benim için çalıştı ... Teşekkürler.
Blue Diamond

7
15 Ocak 2020'den itibaren geçerli olmak üzere, Merkezi Depo artık düz HTTP üzerinden güvenli olmayan iletişimi desteklemiyor ve depoya gelen tüm isteklerin HTTPS üzerinden şifrelenmesini gerektiriyor.
Ahmad Alkhatib

183

Yukarıdaki cevap iyi bir çalışma çözümüdür, ancak SSL deposunu kullanmak istiyorsanız bunu nasıl yapacağınız aşağıda açıklanmıştır:

  • Https://repo.maven.apache.org/ adresine gitmek için bir tarayıcı (IE kullandım) kullanın
    • Kilit simgesine tıklayın ve "Sertifikayı Görüntüle" yi seçin
    • "Ayrıntılar" sekmesine gidin ve "Dosyaya Kaydet" i seçin
    • "Base 64 X.509 (.CER)" türünü seçin ve bir yere kaydedin
  • Şimdi bir komut istemi açın ve yazın (kendi yollarınızı kullanın):

    keytool -import -file C:\temp\mavenCert.cer -keystore C:\temp\mavenKeystore

  • Şimdi komutu parametre ile tekrar çalıştırabilirsiniz.

    -Djavax.net.ssl.trustStore=C:\temp\mavenKeystore

  • Linux altında mutlak yolu kullanın

    -Djavax.net.ssl.trustStore=/tmp/mavenKeystore

    aksi takdirde bu olacak

  • Bunun gibi:

    mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false -Djavax.net.ssl.trustStore=C:\temp\mavenKeystore

İsteğe bağlı:

MAVEN_OPTSOrtam değişkenini kullanabilirsiniz, böylece tekrar endişelenmenize gerek kalmaz. MAVEN_OPTSDeğişkenle ilgili daha fazla bilgiyi burada bulabilirsiniz :


15
Bu doğru cevap olarak kabul edilmelidir. ISA proxy'niz, JDK tarafından güvenilmeyen bir ara sertifika ekliyor.
Gordon

2
Komut satırı ile çalışan bir bilgisayarım var. Tutulmayı nasıl çalıştırırım?
Prabodh Mhalgi

MAVEN_OPTS için kolay kesme ve yapıştırma: -Xmx512m -Djavax.net.ssl.trustStore = trust.jks -Djavax.net.ssl.trustStorePassword = -Djavax.net.ssl.keyStore = / home / directory / mycertificate.p12 - Djavax.net.ssl.keyStoreType = pkcs12 -Djavax.net.ssl.keyStorePassword = XXXXXX
Al Lelopath

Bu benim sorunumu çözdü. Anahtar deposu şifresini sorduğunda, önceden değiştirmediyseniz varsayılan "changeit" dir. :)
John Manko

3
Ayrıca, Ubuntu'da şu komutu çalıştırabilirsinizsudo keytool -import -file ./repo.maven.apache.org.crt -keystore /usr/lib/jvm/java-8-oracle/jre/lib/security/cacerts
John Manko

23

Güncelleme

Az önce bu hata raporuna rastladım:

https://bugs.launchpad.net/ubuntu/+source/ca-certificates-java/+bug/1396760

Buradaki sorunlarımızın sebebi bu gibi görünüyor. Ca-sertifikaları-java'nın bir hatayla karşılaştığı ve cacer'ları tam olarak doldurmadığı bir şey. Benim için bu, 15.10'a yükselttikten sonra olmaya başladı ve bu hata muhtemelen bu işlem sırasında meydana geldi.

Çözüm, aşağıdaki komutu yürütmektir:

sudo /var/lib/dpkg/info/ca-certificates-java.postinst yapılandır

Anahtar deposunun içeriğini kontrol ederseniz (orijinal cevabımdaki gibi), artık gerekli DigiCert Global Kök CA da dahil olmak üzere bir sürü daha göreceksiniz.

Orijinal cevabımda işlemden geçtiyseniz, bu komutu çalıştırarak eklediğimiz anahtarı temizleyebilirsiniz (farklı bir takma ad belirtmediğiniz varsayılarak):

sudo keytool -delete -alias mykey -keystore / etc / ssl / certs / java / cacerts

Maven şimdi iyi çalışacak.


Orijinal Cevap

Andy'nin sertifikayı ekleme ve bir anahtar deposu belirleme konusundaki cevabını genişletmek istiyorum. Bu beni başlattı ve başka yerlerdeki bilgilerle birleştirdi, sorunu anlayabildim ve başka (daha iyi?) Bir çözüm bulabildim.

Andy'nin cevabı, özellikle Maven sertifikasına sahip yeni bir anahtar deposu belirtir. Burada biraz daha genişlemeye gidiyorum ve kök sertifikayı varsayılan java güven deposuna ekliyorum. Bu, bir anahtar deposu belirtmeden mvn (ve diğer java öğelerini) kullanmama izin veriyor.

Referans için işletim sistemim Maven 3.3.3 ile Ubuntu 15.10'dur.

Temel olarak, bu kurulumdaki varsayılan java güven deposu, Maven deposunun (DigiCert Global Root CA) kök sertifikasına güvenmez, bu nedenle eklenmesi gerekir.

Burada buldum ve indirdim:

https://www.digicert.com/digicert-root-certificates.htm

Sonra burada bulunan varsayılan güven deposu konumunu buldum:

/ Etc / ssl / certs / java / cacerts

Şu anda hangi sertifikaların bulunduğunu şu komutu çalıştırarak görebilirsiniz:

keytool -list -keystore / etc / ssl / certs / java / cacerts

İstendiğinde, varsayılan anahtar deposu şifresi "changeit" dir (ancak kimse bunu yapmaz).

Benim kurulumumda, "DigiCert Global Kök CA" nın parmak izi yoktu (DigiCert yukarıdaki bağlantıda "parmak izi" olarak adlandırıyor). İşte nasıl ekleneceği:

sudo keytool -import -file DigiCertGlobalRootCA.crt -keystore / etc / ssl / certs / java / cacerts

Bu, sertifikaya güveniyorsanız, evet deyin.

Anahtarın var olduğunu doğrulamak için keytool -list'i tekrar kullanın. Bir takma ad (-alias) belirtme zahmetine girmedim, bu yüzden şu şekilde sonuçlandı:

mykey, Ara 2, 2015, trustCertEntry, Certificate parmak izi (SHA1): A8: 98: 5D: 3A: 65: E5: E5: C4: B2: D7: D6: 6D: 40: C6: DD: 2F: B1: 9C : 54: 36

Sonra mvn komutlarını normal şekilde çalıştırabildim, anahtar deposu belirtmeye gerek kalmadı.


Andy sayesinde. Ve blogunu yeniden yayınlayan Leeland'a. nodsw.com/blog/leeland/2006/12/… Ve sana da @Luke.
ajoshi


11

SSL sertifikasını manuel olarak içe aktarabilir ve sadece anahtar deposuna ekleyebilirsiniz.

Linux kullanıcıları için,

Sözdizimi:

keytool -trustcacerts -keystore / jre / lib / security / cacerts -storepass changeit -importcert -alias nexus -file

Misal :

keytool -trustcacerts -keystore /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home/jre/lib/security/cacerts -storepass changeit -importcert -alias nexus -file ~ / Downloads / abc.com-ssl. crt


İlk başta Andy'nin cevabında açıklandığı gibi sertifikayı kaydetmeniz gerekir . Yani uzantı ".cer" olacaktır.
sjngm

9

Bu en iyi çözüm olmayabilir. Maven'ımı 3.3.x'ten 3.2.x'e değiştirdim. Ve bu sorun gitti.


Sertifikaları birkaç saatliğine şanssız yüklemeyi denedim ve bu çözüm sonunda işe yaradı! Çalışmaya başladığım en son maven sürümü 3.2.2 idi.
jlars62

3.3.3 ve 3.2.5 benim için çalışmadı, ancak 3.0.5 çalıştı
ROMANIA_engineer

Buraya bir arama motorundan geldim, ancak Maven yerine Gradle kullanıyorum. Eski Gradle sürümümü güncellemek de benim için bu garip SSL sorunlarını çözdü.
Nik Reiman

6

Aslında aynı sorunu yaşadım.

koştuğumda

mvn temiz paket

maven projemde, maven aracıyla bu sertifika hatasını alıyorum.

.Cer dosyasını indirdiğim noktaya kadar @Andy'nin Cevabını takip ettim

bundan sonra cevabın geri kalanı benim için işe yaramadı ama şunu yaptım (Linux Debian makinesinde çalışıyorum)

her şeyden önce şunu çalıştırın:

keytool -list -keystore "Java yolu +" / jre / lib / security / cacerts ""

örneğin benim durumumda:

keytool -list -keystore / usr / lib / jvm / jdk-8-oracle-arm32-vfp-hflt / jre / lib / security / cacerts

şifreyi sorarsa, enter tuşuna basmanız yeterlidir.

bu komutun java tarafından kabul edilen tüm ssl sertifikalarını listelemesi beklenir. bu komutu çalıştırdığımda, örneğin 93 sertifika aldım.

Şimdi indirilen dosya eklemek .cer için cacerts aşağıdaki komutu çalıştırarak dosyaya:

sudo keytool -importcert -file /home/hal/Public/certificate_file_downloaded.cer -keystore / usr / lib / jvm / jdk-8-oracle-arm32-vfp-hflt / jre / security / cacerts

sudo şifrenizi yazın, sonra size soracaktır anahtar deposu şifresini

varsayılan olan changeit

o zaman y söyle Bu sertifikayı güvendiğinizi.

eğer komutu çalıştırırsan

keytool -list -keystore / usr / lib / jvm / jdk-8-oracle-arm32-vfp-hflt / jre / lib / security / cacerts

bir kez daha, benim durumumda, cacerts'ın 94 içeriğini aldım dosyasının

bu başarıyla eklendi demektir.


2

Hızlı bir çözüm, bu kodu pom.xml dosyanıza eklemektir:

<repositories>
    <repository>
        <id>central</id>
        <name>Maven Plugin Repository</name>
        <url>http://repo1.maven.org/maven2</url>
        <layout>default</layout>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
        <releases>
            <updatePolicy>never</updatePolicy>
        </releases>
    </repository>
</repositories>

Hiçbir zaman aramadan kaçınmak için bir sertifikalı.


1
Cevaplar başlığında aşağı kaydırmaya değer. Bu basitçe çalıştı!
gümüş

1

Maven gerekli modülleri otomatik olarak indirmeye çalıştığında SSL sertifikasıyla ilgili aynı hatayı alıyordum.
Çare olarak, Luke'un yukarıdaki cevabını uygulamaya çalışıyordum, ancak DigiCert Global Root CA sertifikasının Java'nın güvenilir anahtar deposunda zaten olduğunu buldum.

Bana yardımcı %JAVA_HOME%\binolan, Path değişkenine eklemekti (Windows çalıştırıyorum). Ve %JAVA_HOME%bir JDK konumu, Maven'ın bir JDK'ye ihtiyacı olduğu için sadece bir JRE konumu değil.
Neden yardımcı olduğundan emin değilim, ama oldu. Değiştirdiğim tek şeyin bu olduğundan kesinlikle eminim.



1

Adım 1: Web sitesinin Sertifikasının içeriğini alın (sertifikanın güvenilir bir kök olarak içe aktarılmasını istiyorsunuz)

$ keytool -printcert -rfc -sslserver maven.2xoffice.com*

-----BEGIN CERTIFICATE-----
MIIFNTCCBB2gAwIBAgIHJ73QrVnyJjANBgkqhkiG9w0BAQsFADCBtDELMAkGA1UEBhMCVVMxEDAO
...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIE3jCCA8agAwIBAgICAwEwDQYJKoZIhvcNAQEFBQAwYzELMAkGA1UEBhMCVVMxITAfBgNVBAoT
...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMY
...
-----END CERTIFICATE-----
The -rfc option outputs the certificate chain in PEM-encoded format for easy import back into a keystore.

Adım 2: Her şeyi (bu durumda önemli olan BEGIN CERTIFICATE ve END CERTIFICATE satırları dahil) godaddyg2.pem olarak kaydedin ve şu yolla güvenli mağazama aktarın:

3. Adım: Sertifikayı anahtar deposuna içe aktarın (java güvenilen anahtar deposu)

$ keytool -importcert -file ./godaddyg2.pem -keystore $JRE_LIB/lib/security/cacerts

1

Benim için ne işe yaradı:

Ayarları <proxy>şurada yapılandırın :${MAVEN_HOME}/conf/settings.xml :

(Not: Diğerleri için yapılandırdıklarında çalıştı ${user.home}/.m2/settings.xml. User.home'da settings.xml yoksa, maven dizinindeki conf / klasöründen kopyalayın.)

  <!-- proxies
   | This is a list of proxies which can be used on this machine to connect to the network.
   | Unless otherwise specified (by system property or command-line switch), the first proxy
   | specification in this list marked as active will be used.
   |-->
  <proxies>
    <!-- proxy
     | Specification for one proxy, to be used in connecting to the network.
     |
    <proxy>
      <id>optional</id>
      <active>true</active>
      <protocol>http</protocol>
      <username>proxyuser</username>
      <password>proxypass</password>
      <host>proxy.host.net</host>
      <port>80</port>
      <nonProxyHosts>local.net|some.host.com</nonProxyHosts>
    </proxy>
    -->

    <proxy>
      <id>my-proxy</id>
      <active>true</active>
      <protocol>http</protocol>
      <username></username>
      <password></password>
      <host>my.proxy.host.com</host>
      <port>8080</port>
      <nonProxyHosts></nonProxyHosts>
    </proxy>

  </proxies>

Ardından pom.xmlhttp maven merkezi depodan indirmeyi işaret edin:

<project>
...
    <repositories>
        <repository>
            <id>central</id>
            <name>Maven Plugin Repository</name>
            <url>http://repo1.maven.org/maven2</url>
            <layout>default</layout>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
            <releases>
                <updatePolicy>never</updatePolicy>
            </releases>
        </repository>
    </repositories>
...
</project>

Ayrıca IDE'nizde http proxy'yi yapılandırmanız gerekebilir. VSCode için settings.json:

{
    ...
    "http.proxy": "http://my/proxy/script/address/my-proxy.pac",
    ...
}

Win10 için: Başlat / Ara> Ağ proxy ayarları> Komut dosyası adresi görüntü açıklamasını buraya girin

Kaynaklar:


0

Aynı durumda bu problemle karşılaştım ve bir GUI aracı kullanarak sistemin önbelleklerini nasıl daha kolay değiştirebileceğimi açıklayan yığın taşması ile ilgili bir soruya ayrıntılı bir cevap yazdım . Belirli bir proje için tek seferlik bir anahtar deposu kullanmaktan veya maven için ayarları değiştirmekten biraz daha iyi olduğunu düşünüyorum (bu, yolda sorunlara neden olabilir).


0

Sertifikaları cacerts'e koymama rağmen hala hata alıyordum. Onları jdk / jre'ye değil jre'ye koyduğumuza dönüyor.

İki anahtar deposu var, bunu aklınızda bulundurun !!!


0

Daha önce yaşadığım sorun, sertifika kurulu jdk 1.8.0_31 kullanıyordum. Jdk 1.8.0_191'e geçtim ancak sertifika yüklemedim.

Ancak projelerim iyi çalışıyordu, bağımlılıklarının zaten indirildiğini fark ettim. Yani, sadece bu projeleri derler ve paketlerler. Ancak bu, bağımlılıkları daha önce indirilmediği için yeni maven projeleri için işe yaramadı.

Çözüm::

  1. Yeni projeniz için önceki jdk sürümüne (sertifikası önceden yüklenmiş olan) geçin ve temiz yükleme yapın
  2. Kısa süre önce geçtiğiniz yeni jdk sürümü için sertifikayı tekrar indirin ve ardından temiz yükleme yapın

0

@Andy tarafından belirtilen anahtar deposunu oluşturduktan sonra. Eclipse'de jvm değiştirgelerini ekledim ve işe yaradı.

görüntü açıklamasını buraya girin

görüntü açıklamasını buraya girin


0

SSL ve maven ile aynı sorunu yaşadım. Şirketimin BT ilkesi bilgisayar yapılandırmasında herhangi bir değişiklik yapmamı kısıtlıyor, bu nedenle diğer bilgisayarımdan .m2'nin tamamını kopyalayıp .m2 klasörünü yapıştırdım ve işe yaradı.

.m2 klasörü genellikle c \ user \ admin altında bulunur


-1

Başka bir neden: Charles'ı açarsanız, bu sorunla da karşılaşabilirsiniz, bu durumda Charles'tan çıkın.


-1

Sadece yeni java sürümünü kullandım ve benim için çalıştı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.