web-dev-qa-db-ja.com

scala sbtおよび企業プロキシ-SunCertPathBuilderException

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で同じエラーが発生します。ライトベンドアクティベーターを使用する場合も同様です。

11
Thiago Sayão

したがって、これはプロキシの背後にあり、プロキシサーバー証明書を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
8
user3169330

私が正しく思い出すと、SBTは、デフォルトでトラストストアを指定するためのJavaシステムプロパティを尊重しない古いバージョンのApache commons httpclient(3.1)を間接的に使用します。

次の3つの解決策が考えられます。

  1. artifactory のようなプロキシリポジトリを使用すると、SBTはプロキシに接続するだけでよく、プロキシは企業プロキシを介して外部にhttpsを処理できます。

  2. 企業発行証明書をJVMのデフォルトのトラストストアにインストールします(通常は%JDK_HOME%/jre/lib/security/cacerts)。これは、新しいJREを実行するたびに行う必要があります。

  3. coursier を使用してみてください。これは、Apache httpclientを経由しない依存関係を取得する別の方法を提供するSBTのプラグインです。トラストストアのJavaシステムプロパティを尊重する必要があると思います。httpライブラリを使用します。また、はるかに高速です。

3
Brian Smith

これは問題を解決しました:

-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証明書の問題

2
Thiago Sayão

このエラーは、古い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バージョンに切り替えると、すぐに解決しました。

1

MacOSでは、sbtを指定してSudoコマンドを実行することで解決しました。

0
Vlad