MavenにSSLエラーを無視するように指示する方法(およびすべての証明書を信頼する方法)


106

「mvn」コマンドを頻繁に実行する必要があります。

mvn -f pom.xml clean install -Dmaven.test.skip=false --settings /Users/myhome/settings.xml -X -Djavax.net.ssl.trustStore=/Users/myhome/truststore.jks -Djavax.net.ssl.trustStoreType=JKS -Djavax.net.ssl.trustStorePassword=dummy -Djava.protocol.handler.pkgs=com.sun.net.ssl.internal.www.protocol -U

他のさまざまなドメインと統合する必要があるため、現在のところ、SSLハンドシェイクエラーを防ぐために、truststore.jksに証明書を追加する必要があります。

SSLエラーを無視するようにmvnを設定する方法はありますか?

回答:


235

次のコマンドラインパラメータを1つ以上追加することで、SSL証明書の確認を無効にできます。

  • -Dmaven.wagon.http.ssl.insecure=true -ユーザーが生成した証明書の緩和されたSSLチェックの使用を有効にします。
  • -Dmaven.wagon.http.ssl.allowall=true-サーバーのX.509証明書とホスト名の一致を有効にします。無効にすると、チェックのようなブラウザが使用されます。
  • -Dmaven.wagon.http.ssl.ignore.validity.dates=true -証​​明書の日付に関する問題を無視します。

公式ドキュメント:http : //maven.apache.org/wagon/wagon-providers/wagon-http/

簡単なコピーアンドペーストのワンライナーは次のとおりです。

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

Ajay Gautam~/.mavenrc、コマンドラインで毎回指定する必要がないように、上記をファイルに追加することもできると提案しました。

$ cat ~/.mavenrc 
MAVEN_OPTS="-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true -Dmaven.wagon.http.ssl.ignore.validity.dates=true"

1
Spring Boot / mavenプロジェクトがあり、maven-jaxb2-pluginを使用してWebサービスのソースを生成しています。しかし、証明書の有効期限が切れています。そこで、Eclipseで上記のagrumentsを使用してMaven生成ソースを実行してみました。しかし、「タイムスタンプチェックに失敗しました」というエラーがまだ表示されますが、Eclipse / Maven環境でそれを解決する方法はわかりません。
ムクン

14
答えは私にはうまくいきません。私はmaven 3.5.0を使用していますが、受け取った例外はでしたPKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target。ワゴンはMAven 3.5.0で動作しますか?
スリム

代わりに、トラストストアjksを作成し、mavenにこのjksファイルを指定しました。
スリムな

3
Java Cryptography Extension(JCE)Unlimited Strength(JDK7の場合 | JDK8の場合)をインストールすることで、Maven 3.5.0の問題を修正
skadya

1
netbeans 6.8を使用して、UIの[Global Execution Options]でnetbeans mavenオプションにオプションを追加し、httpsを使用してリポジトリからダウンロードすることができました。
Dan675

46

Maven Centralを使用するときに、settings.xmlに次の行を追加して、Mavenにhttps:ではなくhttp:を使用するように指示することもできます

<settings>
   .
   .
   .
  <mirrors>
    <mirror>
        <id>central-no-ssl</id>
        <name>Central without ssl</name>
        <url>http://repo.maven.apache.org/maven2</url>
        <mirrorOf>central</mirrorOf>
    </mirror>
  </mirrors>
   .
   .
   .
</settings>

もちろん走行距離は異なります。


2
ありがとう、うまくいきました!また、SSLが機能するようになったら元に戻すように注意してください。これにより、ユーザーは何を知っているかをホストできる非標準のリポジトリを追加する可能性があります
asgs

3
Mavenリポジトリがhttp接続を無効にしたため、2020年1月以降これは機能しません
ジャスティン

1
MavenリポジトリがHttp接続を無効にしたため、2020年1月以降にこのエラーが発生します:ReasonPhrase:HTTPSが必要
Justin

8

フォルダー${USER_HOME}/.mvn を作成し、その中にファイルを呼び出しますmaven.config

内容は次のとおりです。

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

お役に立てれば。


コマンドラインでこれらのパラメーターを直接使用することに成功しましたが、ファイルに追加すると失敗します
Justin

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