如何将 Java VM 设置为使用由 Mac OS X 处理的根证书(信任库)

我在使用抄写员OAuth库时遇到以下异常。

Caused by: javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty

基于一些谷歌搜索,似乎我应该以某种方式设置JVM信任库。

为什么我需要这样做?如何指示 Java VM 使用操作系统的缺省信任库?(在我的情况下是Mac OS X)。


答案 1

您可以使用 Apple JCA 提供程序将 OSX 钥匙串用作 Java 信任存储。只需启动具有以下系统属性的 JVM:

-Djavax.net.ssl.trustStoreType=KeychainStore

您可以使用环境变量为每个启动的 JVM 设置此属性,如 hagrawal 的答案中所述。JAVA_TOOL_OPTIONS


答案 2

我可以通过在启动 VM 时添加以下系统属性来设置默认信任库:

-Djavax.net.ssl.trustStore=/Library/Java/Home/lib/security/cacerts

我仍然不明白为什么我需要这样做。这应该是默认设置。每次添加这个也很烦人。有没有更好的方法,例如一些操作系统设置?