JREキーストアに自己署名入りのCA証明書がインストールされています。私がkeytool -list -keystore $JAVA_HOME/jre/lib/security/cacerts|grep mycert
と入力すると、実際に正しくインストールされていることがわかります。しかし、私はMavenのを通じて、いくつかの機能テストを実行したときに、私は次のようなエラーが出る:MavenがJREキーストアを無視しています
Certificate for doesn't match any of the subject alternative names: []; nested exception is javax.net.ssl.SSLPeerUnverifiedException: Certificate for doesn't match any of the subject alternative names
私のセットアップはOSXシエラ、JRE 8u151 - オラクルとMaven 3.0.5、sdkmanを介してインストールの両方です。最も奇妙なことは、IntelliJからmavenを実行すると、エラーが消えることです。私は何らかの調査をしていて、それが別のmavenランチャーを使用していることを発見しました。ここで生成されたコマンドです:
# IntelliJ
/Users/jdebenitocalzada/.sdkman/candidates/java/8u151-oracle/bin/java
-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true -Djsse.enableSNIExtension=false
-Dmaven.home=/Users/jdebenitocalzada/.sdkman/candidates/maven/3.0.5
-Dclassworlds.conf=/Users/jdebenitocalzada/.sdkman/candidates/maven/3.0.5/bin/m2.conf
-classpath /Users/jdebenitocalzada/.sdkman/candidates/maven/3.0.5/boot/plexus-classworlds-2.4.jar
org.codehaus.classworlds.Launcher
test
# Maven
Users/jdebenitocalzada/.sdkman/candidates/java/8u151-oracle/bin/java
-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true -Djsse.enableSNIExtension=false
-Dmaven.home=/Users/jdebenitocalzada/.sdkman/candidates/maven/current
-Dclassworlds.conf=/Users/jdebenitocalzada/.sdkman/candidates/maven/current/bin/m2.conf
-classpath /Users/jdebenitocalzada/.sdkman/candidates/maven/current/boot/plexus-classworlds-2.4.jar
org.codehaus.plexus.classworlds.launcher.Launcher
test
あなたが見ることができるように、唯一の違いは、IntelliJのはorg.codehaus.classworlds.Launcher
対CLIから実行したときにMavenが使用するorg.codehaus.plexus.classworlds.launcher.Launcher
を使用していることです。
私の質問は主に、コマンドラインから実行しているときにMavenがキーストアを無視している理由と、IntelliJから実行しているときに別のランナーを使用している理由と両方のランナーの違いについてです。
注:動作の違いは、CLIからIntelliJで生成されたコマンドを実行したときに正しく動作するため、JDKバージョンとは何の関係もありません。
コマンドラインからのmavenは、intellijのmavenと同じJDKを使用していますか?新しいコマンドラインを起動し、 'which java'と入力してください。 – vikingsteve
@vikingsteve yeah、IntelliJとMavenはコマンドラインから同じJDKを使用しています。上記のコマンドで見られるように、コマンドラインからは 'current'バージョンを指していますが、IntelliJコマンドが指摘している同じ3.0.5バージョンへのシンボリックリンクです – beni0888