はじめに
前記事を会社で試そうとしたら、新規SpringスタータープロジェクトおよびMavenの「SunCertPathBuilderException: unable to find valid certification path to requested target」エラーにより四苦八苦したので対処法を書いておく。
証明書の設定をしたにも関わらずMavenのエラーを解消するまでに1日がかりだった。でも別のPCで試したら証明書だけであっさりエラーが解消された。
たぶん、最初にeclipseがJava 17を使用しているのに、Java 11で証明書を設定していたからかも。
環境
- Windows 10 Pro
- Eclipse 2023
- Java 17
- Spring Boot 3.1.0
- Maven
環境変数JAVA_HOMEの設定
eclipse.iniを開きます。
-vm
C:/pleiades/2023-03/java/17/bin
環境変数画面の新規ボタンをクリックします。
「変数名」に「JAVA_HOME」を、「変数値」にeclipse.iniのvm値のbinを除いた「C:\pleiades\2023-03\java\17」を入力して下さい。
新規Springスタータープロジェクトの場合
証明書のダウンロード
ブラウザで https://start.spring.io/ にアクセス
下記記事の証明書のダウンロードを参考にする。
1.URL左のロックアイコンをクリックする
2.「接続がセキュリティで保護されています」の証明書アイコン「証明書は有効です」をクリックする
3.詳細タブでエクスポートをクリック、ローカルの適当な場所にダウンロードする
自分はダウンロードした証明書「_.spring.io.cer」を「C:¥temp」フォルダに保存した。
キーストアに証明書を追加
コマンドプロンプトを起動し以下を実行
%JAVA_HOME%\bin\keytool -importcert -keystore "%JAVA_HOME%\lib\security\cacerts" -storepass changeit -file "C:¥temp¥_.spring.io.cer"
alias
オプションを付けなかった場合、エイリアス名はmykey
となります。
「この証明書を信頼しますか。 [いいえ]: 」が表示されたら、「はい」と入力し実行
この証明書を信頼しますか。 [いいえ]: はい
証明書がキーストアに追加されました
動作確認
新規Springスタータープロジェクトの作成を実行し、エラーが解消されてることを確認する。
Mavenの場合
新規Springスタータープロジェクトの作成時のエラーを突破して、やれやれとホッとしたのも束の間、Mavenでも同様のエラーが発生した。
証明書のダウンロード
ブラウザで https://repo1.maven.org/maven2/ にアクセス
証明書のダウンロードは、新規Springスタータープロジェクトで証明書のダウンロードした同様の方法になります。
1.URL左のロックアイコンをクリックする
2.「接続がセキュリティで保護されています」の証明書アイコン「証明書は有効です」をクリックする
3.詳細タブでエクスポートをクリック、ローカルの適当な場所にダウンロードする
自分はダウンロードした証明書「repo1.maven.org.cer」を「C:¥temp」フォルダに保存した。
キーストアに証明書を追加
コマンドプロンプトを起動し以下を実行
%JAVA_HOME%\bin\keytool -alias repo -importcert -keystore "%JAVA_HOME%\lib\security\cacerts" -storepass changeit -file "C:¥temp¥repo1.maven.org.cer"
「この証明書を信頼しますか。 [いいえ]: 」が表示されたら、「はい」と入力し実行
この証明書を信頼しますか。 [いいえ]: はい
証明書がキーストアに追加されました
動作確認
pom.xmlの依存関係をダウンロード出来るようになっていることを確認する。
その他設定
上記で解決するまでに下記2点の設定を追加したものの、別PCではやり直してみたところ設定しなくても動作した。
証明書の読み込みタイミングとかあるので、eclipseの再起動やPC再起動だけでも解決するかも知れない。
それでも解決しない場合、無駄とはいえないが下記の設定してみるといいかも。
eclipse.iniの末尾に追加
-Djavax.net.ssl.trustStore=C:\pleiades\2023-03\java\17\bin\lib\security\cacerts
-Djava.net.ssl.trustStorePassword=changeit
Mavenのワークスペースのデフォルト使用
eclipseの設定画面のMaven -> Java コンフィギュレーター -> JRE システム・ライブラリー・バージョンにて「ワークスペースのデフォルト使用」に切り替える。
最後に
ようやく会社でも前記事のプロジェクトを動かすことが出来た。