प्रॉक्सी के पीछे मावेन और एसएसएल का उपयोग करने में समस्याएं


133

मैंने केवल मावेन को डाउनलोड किया और "पांच मिनटों में मावेन" पृष्ठ ( http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html ) पर मिली साधारण कमांड को चलाने की कोशिश कर रहा था । यह आज्ञा है:

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

जब मैं इसे चलाता हूं तो मुझे एसएसएल प्रमाणपत्र के साथ एक त्रुटि मिलती है और https://repo.maven.apache.org/maven2 पर केंद्रीय मावेन भंडार से डाउनलोड नहीं किया जा सकता है । त्रुटि "SunCertPathBuilderException: अनुरोधित लक्ष्य के लिए मान्य प्रमाणन पथ खोजने में असमर्थ है"।

मैं एक कॉर्पोरेट फ़ायरवॉल के पीछे बैठा हूं और दोनों के लिए प्रॉक्सी सेटिंग्स को सही ढंग से कॉन्फ़िगर किया है httpऔर फ़ाइल के httpsमाध्यम से एक्सेस किया settings.xmlहै। मुझे संदेह है कि जो कोई भी मावेन को डाउनलोड करता है और पहली बार इसे चलाता है, उसे मावेन रिपॉजिटरी के एसएसएल प्रमाणपत्र को आयात करना पड़ता है, इसलिए समस्या प्रॉक्सी के साथ होनी चाहिए। क्या किसी को इसका कोई अनुभव है?

यहां पूर्ण डिबग मोड (-X) में स्टैक ट्रेस दिया गया है:

 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 प्रमाणपत्र जाँच को अनदेखा करने के लिए मैंने rec के उत्तर के बाद इसे हल किया ।
Evin1_

जवाबों:


182

तथ्य यह है कि आपके मावेन प्लगइन एक https दूरस्थ रिपॉजिटरी से कनेक्ट करने का प्रयास करते हैं
(जैसे https://repo.maven.apache.org/maven2/ )

यह मावेन सेंट्रल के लिए एक नया एसएसएल कनेक्टिविटी अगस्त, 2014 में उपलब्ध कराया गया था!

तो कृपया, क्या आप यह सत्यापित कर सकते हैं कि आपकी settings.xml में सही कॉन्फ़िगरेशन है।

    <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>

आप वैकल्पिक रूप से इस तरह से सरल http मावेन भंडार का उपयोग कर सकते हैं

 <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>

कृपया मुझे बताएं कि क्या मेरा समाधान काम करता है;)

जे।


2
त्वरित और सटीक प्रतिक्रिया के लिए धन्यवाद, इसने मेरे लिए काम किया और संभवत: बहुत से ऐसे लोगों की मदद करेगा जो अगस्त 2014 के बाद मावेन का उपयोग करना शुरू कर देते हैं। :-) इस बीच मुझे पता चला कि यह एसएसएल के साथ कैसे काम करता है। मैं इसे नीचे एक उत्तर के रूप में पोस्ट करूंगा ताकि दूसरों की मदद की जा सके, लेकिन आपका जवाब आधिकारिक तौर पर स्वीकार किया जाएगा। साभार
एंडी

धन्यवाद एंडी?) दोनों समाधान आपके लिए काम करते हैं? या सिर्फ विकल्प?
biology.info 13:18

4
हां, मैंने इसकी कोशिश की और यह काम करता है। हालाँकि, पहले कोड ब्लॉक में मुझे दोनों रिपॉजिटरी यूआरएल को https से http में बदलना पड़ा, अन्यथा मुझे पहले जैसा ही त्रुटि संदेश मिला। इसके अलावा, यह कोशिश करने वाले किसी भी व्यक्ति के लिए <activeProfiles> टैग न भूलें।
एंडी

1
बस दूसरे वैकल्पिक सरल समाधान के साथ कोशिश की, यह मेरे लिए काम किया ... धन्यवाद।
ब्लू डायमंड

7
15 जनवरी, 2020 से प्रभावी, केंद्रीय रिपॉजिटरी अब सादे HTTP पर असुरक्षित संचार का समर्थन नहीं करती है और इसके लिए आवश्यक है कि रिपॉजिटरी के सभी अनुरोध HTTPS पर एन्क्रिप्ट किए गए हों।
अहमद अलखतीब

183

ऊपर दिया गया उत्तर एक अच्छा काम करने वाला उपाय है, लेकिन यहाँ आप इसे कैसे करें यदि आप एसएसएल रेपो का उपयोग करना चाहते हैं:

  • Https://repo.maven.apache.org/ पर जाने के लिए एक ब्राउज़र (आईई का इस्तेमाल किया) का उपयोग करें
    • लॉक आइकन पर क्लिक करें और "प्रमाणपत्र देखें" चुनें
    • "विवरण" टैब पर जाएं और "फ़ाइल सहेजें" चुनें
    • "बेस 64 X.509 (.CER)" चुनें और इसे कहीं सहेजें
  • अब एक कमांड प्रॉम्प्ट खोलें और टाइप करें (अपने खुद के रास्तों का उपयोग करें):

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

  • अब आप पैरामीटर के साथ फिर से कमांड चला सकते हैं

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

  • लिनक्स के तहत निरपेक्ष पथ का उपयोग करें

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

    अन्यथा यह क्या होगा

  • ऐशे ही:

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

वैकल्पिक:

आप MAVEN_OPTSपर्यावरण चर का उपयोग कर सकते हैं ताकि आपको इसके बारे में फिर से चिंता न करनी पड़े। यहाँMAVEN_OPTS चर पर अधिक जानकारी देखें :


15
इसे सही उत्तर के रूप में स्वीकार किया जाना चाहिए। आपका ISA प्रॉक्सी एक मध्यवर्ती प्रमाणपत्र सम्मिलित कर रहा है जो JDK द्वारा विश्वसनीय नहीं है।
गॉर्डन

2
मुझे कमांड लाइन के माध्यम से काम करने में मदद मिली। मैं इसे कैसे काम करूँ?
प्रबोध म्हालगी

MAVEN_OPTS के लिए आसान cut'n'paste: -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

इससे मेरी समस्या हल हो गई। जब यह कीस्टोर पासवर्ड के लिए पूछता है, तो डिफ़ॉल्ट "चेंज" है यदि आपने इसे पहले से नहीं बदला है। :)
जॉन मेन्को

3
इसके अलावा, उबंटू पर, आप कमांड को चला सकते हैं जैसेsudo keytool -import -file ./repo.maven.apache.org.crt -keystore /usr/lib/jvm/java-8-oracle/jre/lib/security/cacerts
जॉन मेन्को

23

अपडेट करें

मैं सिर्फ इस बग रिपोर्ट पर ठोकर खाई:

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

यह हमारी समस्याओं का कारण प्रतीत होता है। सी-सर्टिफिकेट-जावा के साथ कुछ त्रुटि का सामना करना और पूरी तरह से कैसर्ट्स को आबाद नहीं करना। मेरे लिए, यह मेरे द्वारा १५.१० में अपग्रेड करने के बाद शुरू हुआ और यह बग संभवत: उस प्रक्रिया के दौरान हुआ।

निम्न आदेश निष्पादित करने के लिए समाधान है:

sudo /var/lib/dpkg/info/ca-certports-java.postinst कॉन्फ़िगर करें

यदि आप कीस्टोर की सामग्री की जाँच करते हैं (जैसा कि मेरे मूल उत्तर में है), तो अब आपको एक पूरा गुच्छा और देखना होगा, जिसमें आवश्यक DigiCert Global Root CA भी शामिल है।

यदि आप मेरे मूल उत्तर में प्रक्रिया से गुजरे हैं, तो आप इस कमांड को चलाकर हमारे द्वारा जोड़ी गई कुंजी को साफ कर सकते हैं (यह मानते हुए कि आपने कोई अन्य उपनाम निर्दिष्ट नहीं किया है):

सूदो कीत्तुले -दिल्ली -लियास मायके -स्टिस्टोर / आदि / एसएलएल / सेरेट्स / जावा / कैसर्ट

मावेन अब ठीक काम करेगा।


मूल उत्तर

मैं सिर्फ प्रमाण पत्र जोड़ने और कीस्टॉर निर्दिष्ट करने के बारे में एंडी के जवाब पर विस्तार करना चाहता हूं। यह मुझे शुरू कर दिया, और कहीं और जानकारी के साथ संयुक्त मैं समस्या को समझने और एक और (बेहतर?) समाधान खोजने में सक्षम था।

एंडी का जवाब मावेन सर्टिफिकेट के साथ एक नया कीस्टोर निर्दिष्ट करता है। यहां, मैं थोड़ा अधिक व्यापक जा रहा हूं और डिफ़ॉल्ट जावा ट्रस्टस्टोर में रूट प्रमाणपत्र जोड़ रहा हूं। यह मुझे कीस्ट को निर्दिष्ट किए बिना mvn (और अन्य जावा सामान) का उपयोग करने की अनुमति देता है।

संदर्भ के लिए मेरा ओएस मावेन 3.3.3 के साथ उबंटू 15.10 है।

मूल रूप से, इस सेटअप में डिफ़ॉल्ट जावा ट्रस्टस्टोर मावेन रेपो (DigiCert Global Root CA) के मूल प्रमाणपत्र पर भरोसा नहीं करता है, इसलिए इसे जोड़ने की आवश्यकता है।

मैंने इसे यहाँ पाया और डाउनलोड किया:

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

तब मुझे डिफ़ॉल्ट ट्रस्टस्टोर स्थान मिला, जो यहां रहता है:

/ Etc / ssl / प्रमाणपत्र / जावा / cacerts

आप देख सकते हैं कि वर्तमान में इस कमांड को चलाकर कौन से सेर्ट हैं:

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

जब संकेत दिया जाता है, तो डिफ़ॉल्ट कीस्टॉर पासवर्ड "चेंजिट" होता है (लेकिन कोई भी कभी भी नहीं करता है)।

मेरे सेटअप में, "DigiCert Global Root CA" का फिंगरप्रिंट मौजूद नहीं था (DigiCert इसे ऊपर के लिंक में "थंबप्रिंट" कहता है)। तो यहाँ कैसे इसे जोड़ने के लिए है:

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

अगर आपको सर्टिफिकेट पर भरोसा है, तो हां कहना चाहिए।

कुंजी मौजूद है यह सत्यापित करने के लिए फिर से कीटल-सूची का उपयोग करें। मैं एक उपनाम (-लिया) निर्दिष्ट करने के लिए परेशान नहीं था, इसलिए यह इस तरह समाप्त हुआ:

mykey, 2 दिसंबर, 2015, विश्वसनीयकंट्री, सर्टिफिकेट फिंगरप्रिंट (SHA1): A8: 98: 5D: 3A: 65: E5: E5: C4: B2: D7: D6: 6D: 40: C6: DD: 2F: B1: 9C : 54: 36

तब मैं मावन कमांड को सामान्य रूप से चलाने में सक्षम था, कीस्टोर को निर्दिष्ट करने की कोई आवश्यकता नहीं थी।


एंडी को धन्यवाद। और लीलैंड के लिए जिन्होंने अपने ब्लॉग को रीपोस्ट किया। nodsw.com/blog/leeland/2006/12/… और आपको भी @Luke
अजोशी

13

आप -Dmaven.wagon.http.ssl.insecure=trueविकल्प का उपयोग कर सकते हैं


11

आप एसएसएल प्रमाणपत्र को मैन्युअल रूप से आयात कर सकते हैं और इसे केवल कीस्टोर में जोड़ सकते हैं।

लिनक्स उपयोगकर्ताओं के लिए,

वाक्य - विन्यास:

keytool -trustcacerts -keystore / jre / lib / सुरक्षा / कैसर्ट -स्टोरेज परिवर्तन -importcert -alias nexus -file

उदाहरण :

keytool -trustcacerts -Stystore /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home/jre/lre/lec/reecurity/cacerts -storepass बदलाव -importcert -alias nexus -file-file/fownload/- डाउनलोड CRT


पहले तो आपको अभी भी एंडी के उत्तर में वर्णित प्रमाण पत्र को सहेजना होगा । तो विस्तार ".cer" होगा।
sjngm

9

यह सबसे अच्छा समाधान नहीं हो सकता है। मैंने अपने मावेन को 3.3.x से 3.2.x में बदल दिया। और यह मुद्दा चला गया।


मैंने बिना किसी भाग्य के कुछ घंटों के लिए समारोहों को स्थापित करने की कोशिश की, और इस समाधान ने आखिरकार काम किया! मावेन का नवीनतम संस्करण जिसे मुझे काम करना था 3.2.2 था।
jlars62

३.३.३ और ३.२.५ ने मेरे लिए काम नहीं किया, लेकिन
३.३.५

मैं एक खोज इंजन से यहां समाप्त हुआ, लेकिन मैंवेन के बजाय ग्रैडल का उपयोग कर रहा हूं। ग्रेडेल के मेरे पुराने संस्करण को अपडेट करना भी मेरे लिए इन अजीब एसएसएल मुद्दों को तय करता है।
निक रीमन

6

मैं वास्तव में एक ही समस्या थी।

जब मैं दौड़ता हूं

mvan साफ पैकेज

मेरे maven प्रोजेक्ट पर, मुझे maven टूल द्वारा यह प्रमाणपत्र त्रुटि मिलती है।

मैंने @Andy के उत्तर का अनुसरण उस बिंदु तक किया जहां मैंने .cer फ़ाइल डाउनलोड की थी

उसके बाद बाकी का जवाब मेरे काम नहीं आया लेकिन मैंने निम्नलिखित काम किया (मैं लिनक्स डेबियन मशीन पर चल रहा हूँ)

सबसे पहले, भागो:

कीटल-लिस्ट -स्टीस्टोर "जावा पथ +" / jre / lib / सुरक्षा / कैसर्ट ""

मेरे मामले में उदाहरण के लिए यह है:

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

यदि यह पासवर्ड के बारे में पूछता है, तो बस हिट दर्ज करें।

यह आदेश जावा द्वारा स्वीकृत सभी ssl प्रमाणपत्रों को सूचीबद्ध करने वाला है। जब मैंने इस कमांड को चलाया, तो मेरे मामले में मुझे उदाहरण के लिए 93 प्रमाण पत्र मिले।

अब डाउनलोड की गई फ़ाइल को जोड़ने .cer करने cacerts निम्न आदेश चलाकर फ़ाइल:

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 पासवर्ड लिखें फिर यह आपसे कीस्टोर पासवर्ड के बारे में पूछेगा

डिफ़ॉल्ट एक परिवर्तन है

तो कहते हैं कि y कि आप इस प्रमाणपत्र पर भरोसा है।

यदि आप कमांड चलाते हैं

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

एक बार फिर, मेरे मामले में, मुझे कैसर्ट फ़ाइल की 94 सामग्री मिली

इसका मतलब है, इसे सफलतापूर्वक जोड़ा गया था।


2

एक त्वरित समाधान अपने pom.xml में इस कोड को जोड़ रहा है:

<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>

जहां खोज प्रमाणित से बचने के लिए कभी नहीं होती है।


1
यह उत्तर धागा में नीचे स्क्रॉल करने के लिए लायक है। यह बस काम किया!
सिल्वर

1

मुझे SSL प्रमाणपत्र के बारे में वही त्रुटि मिल रही थी जब मावेन ने आवश्यक मॉड्यूल को स्वचालित रूप से डाउनलोड करने का प्रयास किया था।
एक उपाय के रूप में, मैं ल्यूक के उत्तर को ऊपर लागू करने का प्रयास कर रहा था, लेकिन पाया कि डिजिर्ट ग्लोबल रूट सीए प्रमाण पत्र पहले से ही जावा के विश्वसनीय कीस्टोर में है।

क्या मुझे %JAVA_HOME%\binपथ चर में जोड़ने में मदद मिली (मैं विंडोज चला रहा हूं)। और %JAVA_HOME%एक JDK स्थान है, न कि केवल JRE स्थान, क्योंकि मावेन को एक JDK की आवश्यकता है।
मुझे यकीन नहीं है कि इसने मदद क्यों की, लेकिन इसने किया। मुझे पूरा यकीन है कि यह केवल एक चीज थी जिसे मैंने बदल दिया।



1

चरण 1: वेबसाइट के प्रमाणपत्र की सामग्री प्राप्त करें (आप इसे एक विश्वसनीय रूट के रूप में आयात करना चाहते हैं)

$ 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.

चरण 2: पूरी बात (BEGIN CERTIFICATE और END CERTIFICATE लाइनों सहित, जो इस मामले में महत्वपूर्ण हैं) को godaddyg2.pem के रूप में सहेजें और इसे मेरे ट्रस्ट स्टोर में आयात किया:

चरण 3: प्रमाणपत्र को कीस्टोर (जावा विश्वसनीय कुंजी स्टोर) में आयात करें

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

1

मेरे लिए क्या काम किया:

इसमें <proxy>सेटिंग्स कॉन्फ़िगर करें ${MAVEN_HOME}/conf/settings.xml:

(नोट: अन्य लोगों के लिए, यह तब काम करता था जब वे कॉन्फ़िगर करते थे ${user.home}/.m2/settings.xml। अगर कोई सेटिंग नहीं है। user.home में कोई xx, बस इसे maven निर्देशिका में conf / से कॉपी करें।)

  <!-- 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>

फिर pom.xmlhttp मावेन सेंट्रल रेपो से डाउनलोड करने के लिए इंगित करें:

<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>

आपको अपने आईडीई में http प्रॉक्सी को कॉन्फ़िगर करने की भी आवश्यकता हो सकती है। VSCode के लिए settings.json:

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

Win10 के लिए: प्रारंभ / खोजें> नेटवर्क प्रॉक्सी सेटिंग> स्क्रिप्ट पता यहाँ छवि विवरण दर्ज करें

सूत्रों का कहना है:


0

मैं एक ही स्थिति में इस समस्या में भाग गया, और मैंने स्टैक ओवरफ्लो पर संबंधित प्रश्न का एक विस्तृत उत्तर लिखा, जिसमें बताया गया कि कैसे जीयूआई टूल का उपयोग करके सिस्टम के कैचर्ट्स को आसानी से संशोधित किया जा सकता है। मुझे लगता है कि यह एक विशेष परियोजना के लिए एक-बंद कीस्टोर का उपयोग करने या मावेन के लिए सेटिंग्स को संशोधित करने (जो सड़क के नीचे परेशानी पैदा कर सकता है) से थोड़ा बेहतर है।


0

भले ही मैं प्रमाण पत्र cacerts में डाल रहा था, फिर भी मुझे त्रुटि मिल रही थी। मुड़ता है हमारे मैं उन्हें jre में डाल रहा था, jdk / jre में नहीं।

दो कीस्टोर्स हैं, ध्यान रखें !!!


0

मुद्दा, मुझे मिल गया है पहले, मैं स्थापित प्रमाण पत्र के साथ jdk 1.8.0_31 का उपयोग कर रहा था। मैंने jdk 1.8.0_191 पर स्विच किया, लेकिन प्रमाणपत्र स्थापित नहीं किया।

लेकिन, मेरी परियोजनाएँ ठीक काम कर रही थीं, मैंने महसूस किया कि उनकी निर्भरताएँ पहले ही डाउनलोड हो चुकी हैं। इसलिए, वे केवल उन परियोजनाओं को संकलित और पैकेज करेंगे। लेकिन, यह नए मावेन परियोजनाओं के लिए काम नहीं किया क्योंकि उनकी निर्भरता पहले डाउनलोड नहीं की गई थी।

उपाय::

  1. अपने नए प्रोजेक्ट के लिए पहले के jdk वर्जन (जिसमें पहले से ही सर्टिफिकेट था) में स्विच करें और क्लीन इंस्टॉल करें
  2. नए jdk संस्करण के लिए फिर से प्रमाणपत्र डाउनलोड करें जिसे आपने हाल ही में स्विच किया है और फिर क्लीन इंस्टॉल करें

0

@Andy द्वारा उल्लिखित कीस्टोर बनाने के बाद। ग्रहण में, मैंने jvm आर्ग को जोड़ा और यह काम किया।

यहाँ छवि विवरण दर्ज करें

यहाँ छवि विवरण दर्ज करें


0

मुझे एसएसएल और मावेन के साथ भी यही समस्या थी। मेरी कंपनियाँ IT नीति मुझे कंप्यूटर कॉन्फ़िगरेशन में कोई भी परिवर्तन करने के लिए प्रतिबंधित करती है, इसलिए मैंने अपने अन्य कंप्यूटर से पूरे .m2 की प्रतिलिपि बनाई और इसे .m2 फ़ोल्डर में चिपकाया और यह काम किया।

.m2 फ़ोल्डर आमतौर पर c \ user \ admin के अंतर्गत पाया जाता है


-1

बस एक और कारण: यदि आप चार्ल्स को खोलते हैं, तो आप इस समस्या को भी पूरा कर सकते हैं, इस मामले में बस चार्ल्स को छोड़ दें।


-1

मैंने बस नए जावा संस्करण का उपयोग किया और यह मेरे लिए काम किया।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.