প্রক্সিটির পিছনে মাভেন এবং এসএসএল ব্যবহার করতে সমস্যা


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 এ কেন্দ্রীয় মাভেন সংগ্রহশালা থেকে ডাউনলোড করতে পারি না । ত্রুটিটি হ'ল "সানকার্টপথবিল্ডার এক্সসেপশন: অনুরোধ করা টার্গেটের বৈধ শংসাপত্রের পথ খুঁজে পাওয়া যায় না"।

আমি কর্পোরেট ফায়ারওয়ালের পিছনে বসে আছি এবং উভয়ের জন্য প্রক্সি সেটিংস সঠিকভাবে কনফিগার করেছি 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
এসএসএল শংসাপত্র চেক করা উপেক্ষা করার জন্য রেকের উত্তর অনুসরণ করে আমি এটি সমাধান করেছি ।
ইভিনি 1_

উত্তর:


182

আসল বিষয়টি হ'ল আপনার মেভেন প্লাগইনটি কোনও https রিমোট রিপোজিটরিতে সংযুক্ত হওয়ার চেষ্টা করে
(যেমন https://repo.maven.apache.org/maven2/ )

এটি মেভেন সেন্ট্রালের জন্য একটি নতুন এসএসএল কানেকটিভিটি আগস্ট, 2014 এ উপলব্ধ করা হয়েছিল!

সুতরাং দয়া করে, আপনি যাচাই করতে পারেন যে আপনার সেটিংস। 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>

আপনি বিকল্প হিসাবে এই জাতীয় সহজ পোষাক ভাণ্ডার ব্যবহার করতে পারেন

 <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
দ্রুত এবং নির্ভুল প্রতিক্রিয়ার জন্য ধন্যবাদ, এটি আমার পক্ষে কাজ করেছে এবং সম্ভবত আগস্ট ২০১৪-এর পরে ম্যাভেন ব্যবহার শুরু করা প্রচুর লোককে সহায়তা করবে :-) এর মধ্যে আমি কীভাবে এসএসএল দিয়ে এটি কাজ করতে পারি তা বুঝতে পেরেছি। অন্যকে সাহায্য করার জন্য নীচের উত্তর হিসাবে এটি পোস্ট করব, তবে আপনার উত্তরটি সরকারীভাবে গৃহীত হবে। ধন্যবাদ
অ্যান্ডি

ধন্যবাদ অ্যান্ডি;) উভয় সমাধানই আপনার পক্ষে কাজ করে? নাকি শুধু বিকল্প?
biology.info

4
হ্যাঁ, আমি এটি চেষ্টা করেছিলাম এবং এটি কার্যকর হয়। তবে, প্রথম কোড ব্লকে আমাকে উভয় রেপোজিটরি ইউআরএল https থেকে http এ পরিবর্তন করতে হয়েছিল, অন্যথায় আমি আগের মতো একই ত্রুটি বার্তা পেয়েছি। এছাড়াও, যে কেউ এর চেষ্টা করছেন, <activeProfiles> ট্যাগটি ভুলে যাবেন না।
অ্যান্ডি

1
কেবলমাত্র দ্বিতীয় বিকল্প সরল দ্রাবক দিয়ে চেষ্টা করেছিলাম, এটি আমার পক্ষে কাজ করেছে ... ধন্যবাদ
নীল ডায়মন্ড

7
15 জানুয়ারী, 2020-এ কার্যকর, সেন্ট্রাল রিপোজিটরি আর প্লেইন এইচটিটিপি-র উপর সুরক্ষিত যোগাযোগের পক্ষে সমর্থন করে না এবং প্রয়োজন রেপোসেটরিতে সমস্ত অনুরোধ এইচটিটিপিএস-এর মাধ্যমে এনক্রিপ্ট করা উচিত।
আহমদ আলখতিব

183

উপরের উত্তরটি একটি ভাল কার্যক্ষম সমাধান, তবে আপনি যদি এসএসএল রেপো ব্যবহার করতে চান তবে এটি কীভাবে করবেন তা এখানে রয়েছে:

  • Https://repo.maven.apache.org/ এ যেতে একটি ব্রাউজার ব্যবহার করুন (আমি আইই ব্যবহার করেছি)
    • লক আইকনে ক্লিক করুন এবং "শংসাপত্র দেখুন" নির্বাচন করুন
    • "বিশদ" ট্যাবে যান এবং "ফাইলটিতে সংরক্ষণ করুন" নির্বাচন করুন
    • "বেস 64 এক্স.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
এটি সঠিক উত্তর হিসাবে গ্রহণ করা উচিত। আপনার আইএসএ প্রক্সিটি মধ্যবর্তী শংসাপত্রটি সন্নিবেশ করছে যা জেডিকে দ্বারা বিশ্বাসযোগ্য নয়।
গর্ডন

2
আমি কমান্ড লাইনের মাধ্যমে কাজ করতে পেরেছি। আমি কীভাবে এটি গ্রহন করব?
প্রবোধ মালগি

MAVEN_OPTS- এর জন্য সহজ কাট'এন'পাস্ট: -Xmx512m -Djavax.net.ssl.trustStore = trust.jks -Djavax.net.ssl.trustStorePassword = -Djavax.net.ssl.keyStore = / home / ডিরেক্টরি / mycertificate.p12 - Djavax.net.ssl.keyStoreType = pkcs12 -Djavax.net.ssl.keyStorePassword = XXXXXX
আল লেলোপাথ

এটি আমার সমস্যার সমাধান করেছে। যখন এটি কীস্টোর পাসওয়ার্ডের জন্য জিজ্ঞাসা করে, আপনি ইতিমধ্যে এটি পরিবর্তন না করে থাকলে ডিফল্টটি "চেঞ্জিট" হয়। :)
জন মানকো 8'16

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

এটি এখানে আমাদের সমস্যার কারণ বলে মনে হচ্ছে। সিএ-শংসাপত্র-জাভা সহ এমন কিছু যা একটি ত্রুটির মুখোমুখি হয় এবং পুরোপুরি ক্যাশেটারগুলি জনবহুল করে না। আমার জন্য, আমি 15.10 এ আপগ্রেড হওয়ার পরে এটি ঘটতে শুরু করে এবং সম্ভবত এই প্রক্রিয়া চলাকালীন এই বাগটি ঘটেছিল।

কাজটি হ'ল নিম্নলিখিত কমান্ডটি কার্যকর করা:

sudo /var/lib/dpkg/info/ca-cerર્ટates- java.postinst কনফিগার

আপনি যদি কীস্টোরের বিষয়বস্তুগুলি পরীক্ষা করেন (আমার মূল উত্তর হিসাবে), আপনি এখন ডিজিটকার্ট গ্লোবাল রুট সিএ সহ আরও একটি গোছা আরও দেখতে পাবেন।

আপনি যদি আমার আসল উত্তরে প্রক্রিয়াটি চালিয়ে যান তবে আপনি এই কমান্ডটি চালিয়ে যে কীটি যুক্ত করেছেন তা আপনি পরিষ্কার করতে পারেন (ধরে নিবেন যে আপনি আলাদা আলাদা নাম নির্দিষ্ট করে নি):

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

মাভেন এখন ঠিকঠাক কাজ করবে।


আসল উত্তর

আমি শংসাপত্র যুক্ত করার এবং কীস্টোর নির্দিষ্ট করার বিষয়ে অ্যান্ডির উত্তরটি প্রসারিত করতে চাই। এটি আমার শুরু হয়েছে এবং অন্য কোথাও তথ্যের সাথে একত্রিত হয়ে আমি সমস্যাটি বুঝতে পেরেছিলাম এবং আরও একটি (আরও ভাল?) সমাধান খুঁজে পেতে সক্ষম হয়েছি।

অ্যান্ডির উত্তরটি মাভেন সার্টের সাথে একটি নতুন কীস্টোর নির্দিষ্ট করে। এখানে, আমি কিছুটা আরও বিস্তৃত হয়ে ডিফল্ট জাভা ট্রাস্টস্টোরটিতে মূল শংসাপত্র যুক্ত করছি। এটি আমাকে কীস্টোর নির্দিষ্ট না করেই mvn (এবং অন্যান্য জাভা স্টাফ) ব্যবহার করতে দেয়।

রেফারেন্সের জন্য আমার ওএস হ'ল ম্যাভেন 3.3.3 সহ উবুন্টু 15.10।

মূলত, এই সেটআপের ডিফল্ট জাভা ট্রস্টস্টোর মাভেন রেপো (ডিজিকার্ট গ্লোবাল রুট সিএ) এর মূল শংসাপত্রকে বিশ্বাস করে না, সুতরাং এটি যুক্ত করা দরকার।

আমি এটি এখানে পেয়েছি এবং ডাউনলোড করেছি:

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

তারপরে আমি ডিফল্ট ট্রাস্টস্টোরের অবস্থান পেয়েছি, যা এখানে বাস করে:

জন্য / etc / SSL / শংশাপত্র / জাভা / cacerts

এই কমান্ডটি চালিয়ে আপনি বর্তমানে সেখানে কী কী শংসাপত্র রয়েছে তা দেখতে পাবেন:

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

যখন অনুরোধ করা হয়, ডিফল্ট কীস্টোর পাসওয়ার্ডটি হ'ল "পরিবর্তন" (তবে কেউ কখনও করেনি)।

আমার সেটআপে, "ডিজিকার্ট গ্লোবাল রুট সিএ" এর আঙুলের ছাপটি বিদ্যমান ছিল না (ডিজিকার্ট এটিকে উপরের লিঙ্কটিতে "থাম্বপ্রিন্ট" বলে)। এটি এখানে কীভাবে যুক্ত করবেন তা এখানে:

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

আপনি যদি শংসাপত্রের উপর বিশ্বাস রাখেন তবে এটি অনুরোধ করা উচিত, হ্যাঁ বলুন।

কী বিদ্যমান কিনা তা যাচাই করতে আবার কীটল-তালিকাটি ব্যবহার করুন। আমি কোনও উপনাম (-ালিয়াস) নির্দিষ্ট করার জন্য বিরক্ত করিনি, সুতরাং এটি এর আগে শেষ হয়েছিল:

মাইকি, ডিসেম্বর 2, 2015, বিশ্বস্তকার্টেনট্রি, শংসাপত্রের ফিঙ্গারপ্রিন্ট (SHA1): এ 8: 98: 5D: 3A: 65: E5: E5: সি 4: বি 2: ডি 7: ডি 6: 6 ডি: 40: সি 6: ডিডি: 2 এফ: বি 1: 9 সি : 54: 36

তারপরে আমি এমভিএন কমান্ডগুলি স্বাভাবিক হিসাবে চালাতে সক্ষম হয়েছি, কীস্টোর নির্দিষ্ট করার দরকার নেই।


অ্যান্ডিকে ধন্যবাদ এবং লিল্যান্ড যারা তার ব্লগ পোস্ট করেছেন। nodsw.com/blog/leeland/2006/12/… এবং আপনারও, @ লুক।
আজোশি

13

আপনি -Dmaven.wagon.http.ssl.insecure=trueবিকল্পটি ব্যবহার করতে পারেন


11

আপনি ম্যানুয়ালি এসএসএল শংসাপত্রটি আমদানি করতে পারেন এবং কেবল কীস্টোরে এটি যুক্ত করতে পারেন।

লিনাক্স ব্যবহারকারীদের জন্য,

বাক্য গঠন:

কীটোল-স্ট্রাস্টকেসার্টস-কিস্টোর / জেআর / লিবিব / সিকিউরিটি / ক্যাসার্টস-স্টোরপাস চেঞ্জিট-ইম্পোর্টসার্ট -ালিয়াস নেক্সাস-ফাইল

উদাহরণ:

কীটোল-ট্রাস্টক্যাসার্টস-কিস্টোর / লাইবারি / জাভা / জাভা ভার্চুয়ালম্যাচাইনস / জেডকি 1.8.0_144.jdk/Ctetents/Home/jre/lib/security/cacerts- স্টোরপাস চেঞ্জিট -কম্পারসেট -ালিয়াস নেক্সাস-ফাইল ~ / ডাউনলোড / অ্যাবসি.কম। সিআরটি


প্রথমদিকে এখনও আপনাকে অ্যান্ডির উত্তরে বর্ণিত শংসাপত্রটি সংরক্ষণ করতে হবে । সুতরাং এক্সটেনশনটি ".cer" হবে।
sjngm

9

এটি সেরা সমাধান নাও হতে পারে। আমি আমার মেভেনটি 3.3.x থেকে 3.2.x এ পরিবর্তন করেছি এবং এই সমস্যা চলে গেছে।


আমি ভাগ্য ছাড়াই কয়েক ঘন্টা সার্টিফিকেটগুলি ইনস্টল করার চেষ্টা করেছি, এবং এই সমাধানটি শেষ পর্যন্ত কাজ করেছে! আমি কাজের জন্য পেয়েছি maven এর সর্বশেষ সংস্করণ ছিল 3.2.2।
জালার্স 62

৩.৩.৩ এবং ৩.২.৫ আমার পক্ষে কাজ করেনি, তবে 3.0.5 কাজ করেছে
রোমানিয়া_আজ্ঞানী

আমি এখানে একটি অনুসন্ধান ইঞ্জিন থেকে শেষ হয়েছি, তবে মাভেনের পরিবর্তে গ্রেডল ব্যবহার করছি। গ্র্যাডলের আমার পুরানো সংস্করণ আপডেট করাও আমার কাছে এই অদ্ভুত এসএসএল সমস্যাগুলি স্থির করেছে।
নিক রেইমান

6

আমার আসলে একই সমস্যা ছিল

আমি যখন দৌড়াচ্ছি

এমভিএন ক্লিন প্যাকেজ

আমার মাভেন প্রকল্পে, আমি মাভেন সরঞ্জাম দ্বারা এই শংসাপত্রের ত্রুটি পেয়েছি।

আমি বিন্দু পর্যন্ত @Andy এর উত্তর অনুসৃত যেখানে আমি ডাউনলোড .cer ফাইল

এর পরে বাকী উত্তর আমার পক্ষে কার্যকর হয়নি তবে আমি নিম্নলিখিতটি করেছি (আমি লিনাক্স ডেবিয়ান মেশিনে চলছে)

সবার আগে, চালান:

keytool-list -keystore "জাভা পাথ +" / জেআর / লিবিব / সুরক্ষা / কেসার্টস ""

উদাহরণস্বরূপ আমার ক্ষেত্রে এটি হল:

কীটল-তালিকা-কীস্টোর / ইউএসআর / লিবিব / জেভিএম / জেডিকি -8-ওরাকল-আর্ম 32-ভিএফপি-এইচএফলেট / জেআর / লিবিব / সুরক্ষা / ক্যাশেটারস

এটি যদি পাসওয়ার্ড সম্পর্কে জিজ্ঞাসা করে তবে কেবল এন্টার টিপুন।

এই কমান্ডটি জাভা দ্বারা গৃহীত সমস্ত এসএসএল শংসাপত্রগুলি তালিকাভুক্ত করার কথা। যখন আমি এই আদেশটি চালিয়েছি, আমার ক্ষেত্রে আমি উদাহরণস্বরূপ 93 টি শংসাপত্র পেয়েছি।

এখন ডাউনলোড করা ফাইল যোগ .cer করার cacerts নিম্নলিখিত কমান্ডের দ্বারা ফাইল:

sudo keytool -importcert -file / home/hal/Public/certificate_file_downloaded.cer -keystore / usr / lib / jvm / jdk-8-ওরাকল-আর্ম 32-ভিএফপি-এইচফ্লিট / জেআর / সুরক্ষা / ক্যাশেটারস

আপনার sudo পাসওয়ার্ড লিখুন তারপর এটি আপনাকে কীস্টোরের পাসওয়ার্ড সম্পর্কে জিজ্ঞাসা করবে

ডিফল্টটি হ'ল চেঞ্জিট

তারপরে y বলুন যে আপনি এই শংসাপত্রটির উপর আস্থা রেখেছেন।

যদি আপনি কমান্ড চালান

কীটল-তালিকা-কীস্টোর / ইউএসআর / লিবিব / জেভিএম / জেডিকি -8-ওরাকল-আর্ম 32-ভিএফপি-এইচএফলেট / জেআর / লিবিব / সুরক্ষা / ক্যাশেটারস

আবারও, আমার ক্ষেত্রে, আমি ক্যা্যাসার্টসের 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

এসএসএল শংসাপত্র সম্পর্কে আমি একই ত্রুটি পেয়েছিলাম যখন মাভেন প্রয়োজনীয় মডিউলগুলি স্বয়ংক্রিয়ভাবে ডাউনলোড করার চেষ্টা করেছিল।
প্রতিকার হিসাবে, আমি উপরে লুকের উত্তরটি প্রয়োগ করার চেষ্টা করছিলাম, কিন্তু আবিষ্কার করেছি যে ডিজিটার্ট গ্লোবাল রুট সিএ শংসাপত্রটি ইতিমধ্যে জাভার বিশ্বস্ত কীস্টোরে রয়েছে in

কী আমাকে %JAVA_HOME%\binপাথ ভেরিয়েবলটিতে যুক্ত করতে সহায়তা করেছিল (আমি উইন্ডোজ চালাচ্ছি)। এবং %JAVA_HOME%জেডিকে অবস্থান, কেবল একটি জেআরই অবস্থান নয়, যেহেতু মাভেনের জেডিকে দরকার।
কেন এটি সহায়তা করেছিল তা আমি নিশ্চিত নই, তবে তা করেছে। আমি পুরোপুরি নিশ্চিত যে এটিই আমি পরিবর্তন করেছি।



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: পুরো জিনিসটি সংরক্ষণ করুন (শুরু করুন শংসাপত্র এবং সমাপ্তি প্রত্যয়ী রেখাসমূহ সহ, যা এই ক্ষেত্রে উল্লেখযোগ্য) এটিকে 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.xmluse

  <!-- 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.xmlHT maven কেন্দ্রীয় রেপো থেকে ডাউনলোড করুন:

<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 প্রক্সি কনফিগার করতে হবে। ভিএসকোডের জন্য settings.json:

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

উইন 10 এর জন্য: শুরু / অনুসন্ধান> নেটওয়ার্ক প্রক্সি সেটিংস> স্ক্রিপ্টের ঠিকানা এখানে চিত্র বর্ণনা লিখুন

সূত্র:


0

আমি একই পরিস্থিতিতে এই সমস্যার মধ্যে পড়েছিলাম এবং আমি স্ট্যাক ওভারফ্লো সম্পর্কিত একটি সম্পর্কিত উত্তর লিখেছিলাম, কীভাবে জিইআইআই সরঞ্জামটি ব্যবহার করে সিস্টেমের ক্যাচার্টগুলি আরও সহজেই সংশোধন করা যায় তা ব্যাখ্যা করে over আমি মনে করি কোনও নির্দিষ্ট প্রকল্পের জন্য ওয়ান-অফ কীস্টোর ব্যবহার করা বা মাভেনের জন্য সেটিংস সংশোধন করা (যা রাস্তায় সমস্যা হতে পারে) থেকে কিছুটা ভাল।


0

যদিও আমি শংসাপত্রগুলি ক্যাশেয়ার্টগুলিতে রেখে দিচ্ছিলাম, তবুও আমি ত্রুটিটি পেয়েছিলাম। আমাদের ঘুরিয়ে দেয় আমি তাদের জেডিকে / জেরে নয়, জারে রেখেছিলাম।

দুটি কীস্টোর রয়েছে, তা মাথায় রাখুন !!!


0

ইস্যুটি আমি পেয়েছি এটি প্রথমটি, আমি জেডিকে 1.8.0_31 ব্যবহার করে শংসাপত্র ইনস্টল করা ছিল। আমি jdk 1.8.0_191 এ পরিবর্তন করেছি তবে শংসাপত্র ইনস্টল করি নি।

তবে, আমার প্রকল্পগুলি ঠিকঠাকভাবে কাজ করছিল, আমি বুঝতে পারি যে তাদের নির্ভরতা ইতিমধ্যে ডাউনলোড হয়ে গেছে। সুতরাং, তারা কেবল এই প্রকল্পগুলি সংকলন এবং প্যাকেজ করবে। তবে, নতুন maven প্রকল্পগুলির জন্য এটি কাজ করে না কারণ তাদের নির্ভরতা আগে ডাউনলোড করা হয়নি।

সমাধান ::

  1. আপনার নতুন প্রকল্পের জন্য পূর্ববর্তী jdk সংস্করণে (যার শংসাপত্র ইতিমধ্যে ইনস্টল ছিল) স্যুইচ করুন এবং পরিষ্কার ইনস্টল করুন
  2. আপনি সম্প্রতি সরিয়ে নেওয়া নতুন জেডি কে সংস্করণের জন্য আবার শংসাপত্র ডাউনলোড করুন এবং তারপরে পরিষ্কার ইনস্টল করুন

0

@ অ্যান্ডি দ্বারা উল্লিখিত কীস্টোর তৈরির পরে। Eclipse এ, আমি jvm আরোগুলি যুক্ত করেছি এবং এটি কাজ করে।

এখানে চিত্র বর্ণনা লিখুন

এখানে চিত্র বর্ণনা লিখুন


0

এসএসএল এবং ম্যাভেন সম্পর্কে আমার একই সমস্যা ছিল। আমার সংস্থাগুলির আইটি নীতি কম্পিউটারের কনফিগারেশনে কোনও পরিবর্তন করতে আমাকে সীমাবদ্ধ করে, তাই আমি আমার অন্য কম্পিউটার থেকে সম্পূর্ণ .m2 অনুলিপি করে এটি .m2 ফোল্ডারটি পেস্ট করেছি এবং এটি কার্যকর হয়েছে।

.m2 ফোল্ডারটি সাধারণত সি-ব্যবহারকারী \ প্রশাসকের অধীনে পাওয়া যায়


-1

আরও একটি কারণ: আপনি চার্লস খুললে আপনিও এই সমস্যার মুখোমুখি হতে পারেন, এই ক্ষেত্রে কেবল চার্লসকে ছেড়ে যান।


-1

আমি কেবল নতুন জাভা সংস্করণ ব্যবহার করেছি এবং এটি আমার জন্য কাজ করেছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.