プロキシの背後にあるMavenおよびSSLの使用に関する問題


133

私はMavenをダウンロードして、「Maven in Five Minutes」ページ(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

実行すると、SSL証明書でエラーが発生し、https: //repo.maven.apache.org/maven2の中央Mavenリポジトリからダウンロードできません。エラーは、「SunCertPathBuilderException:要求されたターゲットへの有効な証明書パスが見つかりません」です。

私は企業のファイアウォールの後ろに座っており、ファイルhttphttpsアクセスの両方のプロキシ設定を正しく構成していsettings.xmlます。Mavenをダウンロードして初めて実行するすべての人がMavenリポジトリーのSSL証明書をインポートする必要があるとは思えないので、問題はプロキシーにあるに違いありません。誰かこれについて何か経験がありますか?

以下は、完全デバッグモード(-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

事実は、あなたのmavenプラグインがhttpsリモートリポジトリ
https://repo.maven.apache.org/maven2/など)に接続しようとすることです

これは、2014年8月に利用可能になったMaven Centralの新しいSSL接続です。

では、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 mavenリポジトリーを使用することもできます。

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

私の解決策が機能するかどうか教えてください;)

J.


2
迅速かつ正確な応答のおかげで、それは私にとってはうまくいき、おそらく2014年8月以降にmavenを使い始める多くの人を助けるでしょう:-)その間に、SSLで動作させる方法を見つけました。他の人を助けるために以下の回答として投稿しますが、あなたの回答は正式に承認されたものになります。ありがとう
アンディ

アンディありがとう;)両方の解決策がうまくいきますか?または単に代替ですか?
biology.info 2014

4
うん、私はそれを試してみましたが、うまくいきました。ただし、最初のコードブロックでは、両方のリポジトリURLをhttpsからhttpに変更する必要がありました。それ以外の場合は、以前と同じエラーメッセージが表示されました。また、これを試す人は、<activeProfiles>タグを忘れないでください。
アンディ14

1
2番目の代替シンプルソルインで試したところ、うまくいきました。ありがとう。
Blue Diamond

7
2020年1月15日から、中央リポジトリはプレーンHTTPを介した安全でない通信をサポートしなくなり、リポジトリへのすべてのリクエストをHTTPSを介して暗号化する必要があります。
Ahmad Alkhatib

183

上記の答えは有効な解決策ですが、SSLリポジトリを使用する場合の方法は次のとおりです。

  • ブラウザ(私はIEを使用しました)を使用してhttps://repo.maven.apache.org/にアクセスます
    • ロックアイコンをクリックして、[証明書の表示]を選択します
    • [詳細]タブに移動し、[ファイルに保存]を選択します
    • タイプ「Base 64 X.509(.CER)」を選択して、どこかに保存します
  • 次に、コマンドプロンプトを開き、次のように入力します(独自のパスを使用)。

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

  • これで、パラメーターを指定してコマンドを再度実行できます

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

  • Linuxでは絶対パスを使用

    -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を動作させました。Eclipseを機能させるにはどうすればよいですか?
Prabodh Mhalgi 2015年

MAVEN_OPTSの簡単なカットアンドペースト:-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

これは私の問題を解決しました。キーストアのパスワードを要求する場合、まだ変更していない場合のデフォルトは「changeit」です。:)
John

3
また、Ubuntuでは、次のようなコマンドを実行する可能性がありますsudo keytool -import -file ./repo.maven.apache.org.crt -keystore /usr/lib/jvm/java-8-oracle/jre/lib/security/cacerts
John Manko

23

更新

私はこのバグレポートに出くわしました:

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

ここで問題が発生しているようです。ca-certificates-javaでエラーが発生し、cacertsにデータが完全に入力されていない。私にとって、これは15.10にアップグレードした後に発生し始め、このバグはおそらくそのプロセス中に発生しました。

回避策は次のコマンドを実行することです:

sudo /var/lib/dpkg/info/ca-certificates-java.postinst configure

(私の元の回答のように)キーストアの内容を確認すると、必要なDigiCertグローバルルートCAを含め、さらに多くのものが表示されます。

私の元の回答でプロセスを実行した場合は、次のコマンドを実行して、追加したキーをクリーンアップできます(別のエイリアスを指定しなかった場合)。

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

Mavenは正常に動作します。


元の回答

証明書の追加とキーストアの指定に関するAndyの回答をさらに詳しく説明します。それが私を始め、他の場所の情報と組み合わせて、問題を理解し、別の(より良い?)解決策を見つけることができました。

Andyの回答では、Maven証明書を具体的に含む新しいキーストアを指定しています。ここでは、もう少し広めにして、ルート証明書をデフォルトのJavaトラストストアに追加します。これにより、キーストアを指定せずにmvn(およびその他のJavaのもの)を使用できます。

参考までに、私のOSはUbuntu 15.10とMaven 3.3.3です。

基本的に、このセットアップのデフォルトのJavaトラストストアは、Mavenリポジトリのルート証明書(DigiCertグローバルルートCA)を信頼しないため、追加する必要があります。

ここで見つけてダウンロードしました:

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

次に、ここにあるデフォルトのトラストストアの場所を見つけました:

/ etc / ssl / certs / java / cacerts

次のコマンドを実行すると、現在そこにある証明書を確認できます。

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

プロンプトが表示されたら、デフォルトのキーストアパスワードは「changeit」です(ただし、誰も変更しません)。

私のセットアップでは、「DigiCertグローバルルートCA」のフィンガープリントは存在しませんでした(DigiCertは、上記のリンクでは「サムプリント」と呼んでいます)。これを追加する方法は次のとおりです。

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

証明書を信頼している場合は、プロンプトが表示されます。「はい」と答えます。

もう一度keytool -listを使用して、キーが存在することを確認します。エイリアス(-alias)を指定する必要がなかったため、次のようになりました。

mykey、2015年12月2日、trustedCertEntry、証明書のフィンガープリント(SHA1):A8:98:5D:3A:65:E5:E5:C4:B2:D7:D6:6D:40:C6:DD:2F:B1:9C :54:36

次に、通常どおりmvnコマンドを実行できました。キーストアを指定する必要はありません。


アンディに感謝します。そして、彼のブログを再投稿したリーランドに。 nodsw.com/blog/leeland/2006/12/… そしてあなたにも、@ Luke。
ajoshi 2018年


11

SSL証明書を手動でインポートして、キーストアに追加するだけです。

Linuxユーザーの場合、

構文:

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

例:

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


Andyの回答に記載されているように、最初はまだ証明書を保存する必要があります。したがって、拡張子は「.cer」になります。
sjngm

9

これは最善の解決策ではない可能性があります。Mavenを3.3.xから3.2.xに変更しました。そして、この問題はなくなりました。


証明書を数時間インストールせずに試してみましたが、このソリューションは最終的に機能しました!動作するようになったmavenの最新バージョンは3.2.2でした。
jlars62 2015

3.3.3と3.2.5は機能しませんでしたが、3.0.5は機能しました
ROMANIA_engineer

私は検索エンジンからここに行きましたが、Mavenの代わりにGradleを使用しています。古いバージョンのGradleを更新すると、これらの奇妙なSSLの問題も修正されました。
Nik Reiman

6

私も同じ問題を抱えていました。

私が走るとき

mvn clean package

私のmavenプロジェクトでは、mavenツールによってこの証明書エラーが発生します。

.cerファイルをダウンロードするまで、@ Andyの回答をフォローしました

その後、残りの答えは私にとってはうまくいきませんでしたが、私は次のことをしました(私はLinux Debianマシンで実行しています)

まず最初に、実行します:

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

たとえば私の場合、それは:

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

パスワードについて尋ねられたら、Enterキーを押します。

このコマンドは、Javaによって受け入れられたすべてのSSL証明書をリストすることになっています。このコマンドを実行すると、たとえば93個の証明書が取得されました。

次のコマンドを実行して、ダウンロードしたファイル.cercacertsファイルに追加します。

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パスワードを書き込むと、キーストアのパスワードについて尋ねられます

デフォルトはchangeitです

次に、この証明書を信頼することをyと言います。

コマンドを実行した場合

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

もう一度、私の場合、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

Mavenが必要なモジュールを自動的にダウンロードしようとしたときに、SSL証明書について同じエラーが発生しました。
救済策として、私は上記のルークの回答を実装しようとしましたが、DigiCertグローバルルートCA証明書がすでにJavaの信頼できるキーストアにあることがわかりました。

私を助けたのは%JAVA_HOME%\bin、Path変数に追加することでした(Windowsを実行しています)。そして、%JAVA_HOME%Mavenのは、JDKを必要とするため、JDKの場所だけでなく、JREの場所です。
なぜそれが役に立ったかは定かではありませんが、役に立ちました。私がこれを変更したのはこれだけだったと確信しています。



1

手順1: Webサイトの証明書のコンテンツを取得する(信頼できるルートとしてインポートする必要があります)

$ 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:キーストア(Java信頼キーストア)に証明書をインポートする

$ 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にsettings.xmlがない場合は、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.xml、http maven central repoからダウンロードするようにポイントします。

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

IDEでhttpプロキシを構成する必要がある場合もあります。VSCodeの場合settings.json

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

Win10の場合:スタート/検索>ネットワークプロキシ設定>スクリプトアドレス ここに画像の説明を入力してください

出典:


0

私は同じ状況でこの問題に遭遇し、GUIツールを使用してシステムのcacertsをより簡単に変更する方法を説明するスタックオーバーフローに関する関連質問への詳細な回答を書きました。特定のプロジェクトに1回限りのキーストアを使用したり、Mavenの設定を変更したりすること(これは将来トラブルになる可能性があります)よりも少し良いと思います。


0

証明書をcacertsに入れていても、エラーが発生しました。それらをjdk / jreではなく、jreに入れていたことが変わります。

キーストアは2つあります。


0

私が得た問題は以前、私は証明書がインストールされたjdk 1.8.0_31を使用していました。jdk 1.8.0_191に切り替えましたが、証明書をインストールしませんでした。

しかし、私のプロジェクトは問題なく機能しており、依存関係が既にダウンロードされていることに気付きました。したがって、彼らはそれらのプロジェクトをコンパイルしてパッケージ化するだけです。しかし、依存関係が以前にダウンロードされていなかったため、これは新しいmavenプロジェクトでは機能しませんでした。

解決::

  1. 新しいプロジェクトの以前のjdkバージョン(すでに証明書がインストールされている)に切り替えて、クリーンインストールを実行します
  2. 最近切り替えた新しいjdkバージョンの証明書を再度ダウンロードして、クリーンインストールを実行します

0

@Andyが言及したキーストアを作成した後。Eclipseで、jvm argsを追加しました。

ここに画像の説明を入力してください

ここに画像の説明を入力してください


0

SSLとmavenでも同じ問題が発生しました。私の会社のITポリシーでは、コンピューターの構成に変更を加えることが制限されているため、.m2全体を他のコンピューターからコピーし、.m2フォルダーに貼り付けて機能しました。

.m2フォルダーは通常、c \ user \ adminの下にあります


-1

もう1つの原因:Charlesを開いた場合、この問題にも遭遇する可能性があります。この場合はCharlesを終了します。


-1

私は単に新しいJavaバージョンを使用し、それは私のために働いた。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.