SBTを使用しようとすると、次のエラーで一部のファイルをダウンロードできません。
サーバーアクセスエラー:Sun.security.validator.ValidatorException:PKIXパスの構築に失敗しました:Sun.security.provider.certpath.SunCertPathBuilderException:要求されたターゲットurl = https://repo1.maven。 org/maven2/org/scala-sbt/sbt/1.0.0-M4/sbt-1.0.0-M4.jar
Stack Overflowに関するいくつかのアドバイスに従い、Java keytoolで説明されているように、企業のプロキシSSL証明書をインポートしました: WebサービスプロキシでのSSL証明書の問題
SBTツールには影響しないようです。別のキーストアを調べますか?何か案は?
ブラウザにURLを貼り付けると、ファイルがダウンロードされます。
インストールしたSBTツールを単に実行すると、このエラーが発生します。 IntelliJ IdeaでSBTプロジェクトを作成して更新しようとすると、異なるURLで同じエラーが発生します。ライトベンドアクティベーターを使用する場合も同様です。
したがって、これはプロキシの背後にあり、プロキシサーバー証明書をJava truststoreに追加する必要がある場合に発生します。
cp $Java_HOME/jre/lib/security/cacerts <some accessible dir>/
# Get the certificate of the proxy server and store it in a file-proxy.pem
keytool -keystore caerts -import -file proxy.pem -alias my_proxy
# Now we can invoke sbt with following config
sbt "-Djavax.net.ssl.trustStore=/path/to/included/proxycert/cacerts" compile
私が正しく思い出すと、SBTは、デフォルトでトラストストアを指定するためのJavaシステムプロパティを尊重しない古いバージョンのApache commons httpclient(3.1)を間接的に使用します。
次の3つの解決策が考えられます。
artifactory のようなプロキシリポジトリを使用すると、SBTはプロキシに接続するだけでよく、プロキシは企業プロキシを介して外部にhttpsを処理できます。
企業発行証明書をJVMのデフォルトのトラストストアにインストールします(通常は%JDK_HOME%/jre/lib/security/cacerts
)。これは、新しいJREを実行するたびに行う必要があります。
coursier を使用してみてください。これは、Apache httpclientを経由しない依存関係を取得する別の方法を提供するSBTのプラグインです。トラストストアのJavaシステムプロパティを尊重する必要があると思います。httpライブラリを使用します。また、はるかに高速です。
これは問題を解決しました:
-Djavax.net.ssl.trustStore = "C:\ Program Files\Java\jre1.8.0_121\lib\security\cacerts"をsbt構成ファイル(sbtconfig)に追加します。
IntelliJ Ideaを使用している場合は、[SBT設定]-> [JVMオプション]-> VMパラメータをクリックし、同じ行を追加します。
パスは、JDKパス-> lib->セキュリティにあるcacertsファイルへのパスです。
次の説明に従って、キーストアツールでプロキシ証明書をインポートする必要があります WebサービスプロキシでのSSL証明書の問題
このエラーは、古いJavaバージョンを使用した場合にも発生する可能性があります。 Javaバージョン1.8.0_45-b14を使用すると、このエラーが発生します。 Javaバージョン11.0.2 + 7(2018-10-16)に更新すると解決しました。
参考までに、私が受け取った完全なエラーメッセージは次のとおりです。
[エラー] typesafe-ivy-releases:com.geirsson#sbt-scalafmt; 1.6.0-RC4のリソースを取得できません:res = https://repo.typesafe.com/typesafe/ivy-releases/ com.geirsson/sbt-scalafmt/1.6.0-RC4/jars/sbt-scalafmt.jar :javax.net.ssl.SSLHandshakeException:Sun.security.validator.ValidatorException:PKIXパスの構築に失敗しました:Sun.security。 provider.certpath.SunCertPathBuilderException:要求されたターゲットへの有効な証明書パスが見つかりません
新しいJavaバージョンに切り替えると、すぐに解決しました。
MacOSでは、sbt
を指定してSudo
コマンドを実行することで解決しました。