一般来说,你不能(这与这个问题非常相似)。
在 JSSE API 中,信任证书实际上不是由信任库决定的,而是由TrustManager
. 虽然它通常使用密钥库(信任库)进行初始化,但这不是必需的。此外,密钥库本身不必是文件。默认信任管理器 API 中没有任何内容可让您检查潜在信任存储的使用位置和方式。
甚至没有任何东西SSLSocket
可以让你回到它的位置SSLSocketFactory
,也没有任何东西可以让你回到它的起源SSLContext
,也没有任何东西可以让你获得信任经理。
哪个信任库/信任管理器当前处于活动状态也很大程度上取决于应用程序。一般来说,没有什么可以告诉您应用程序正在使用的连接使用默认值SSLContext
,它可以由javax.net.ssl.*
系统属性初始化。应用程序可以自由地初始化它们自己SSLContext
的 s 来创建它们的套接字(当您指定某些值时,这是 Tomcat 对其连接器所做的)。
从 Java 6 开始,默认值(当前)SSLContext
也可以全局更改(通过SSLContext.setDefault(...)
.
您可以从JSSE 参考指南中找到默认使用的内容。其余的将取决于每个应用程序的文档。如果您需要,使用-Djavax.net.debug=SSL,trustmanager
可能会有所帮助,但这不是 API 访问。
(顺便说一下,-Djavax.net.ssl.keyStore
将为默认密钥管理器设置密钥库,而不是信任库。)