Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何以编程方式查找磁盘上的当前信任库?_Java_Ssl_Truststore - Fatal编程技术网

Java 如何以编程方式查找磁盘上的当前信任库?

Java 如何以编程方式查找磁盘上的当前信任库?,java,ssl,truststore,Java,Ssl,Truststore,是否有任何函数可以告诉我程序中使用的当前信任库是什么。在windows上,默认的信任存储位于JAVA\u HOME\lib\security\cacerts 但是,可以通过多种方式更改默认设置 在命令行中使用-Djavax.net.ssl.keyStore 使用密钥库类 如果程序在应用程序运行的应用程序服务器上运行,则可以通过其面板设置存储路径 如果程序在Tomcat上运行,则Tomcat设置可能会更改信任库 还有很多其他的方法 有没有一种编程方法可以让我找到当前处于活动状态的信任库的磁盘路

是否有任何函数可以告诉我程序中使用的当前信任库是什么。在windows上,默认的信任存储位于JAVA\u HOME\lib\security\cacerts

但是,可以通过多种方式更改默认设置

  • 在命令行中使用
    -Djavax.net.ssl.keyStore

  • 使用
    密钥库

  • 如果程序在应用程序运行的应用程序服务器上运行,则可以通过其面板设置存储路径

  • 如果程序在Tomcat上运行,则Tomcat设置可能会更改信任库

还有很多其他的方法


有没有一种编程方法可以让我找到当前处于活动状态的信任库的磁盘路径?

一般来说,你不能(这与)

在JSSEAPI中,信任证书实际上不是由信任存储决定的,而是由
TrustManager
决定的。虽然它通常使用密钥库(信任库)进行初始化,但这并不是必需的。此外,。默认的trust manager API中没有任何内容允许您检查潜在信任存储的使用位置和方式

SSLSocket
中甚至没有任何内容可以让您返回其
SSLSocketFactory
,也没有任何内容可以让您返回其原始
SSLContext
,也没有任何内容可以让您获得信任管理器

哪个信任库/信任管理器当前处于活动状态也在很大程度上取决于应用程序。一般来说,没有任何东西告诉您应用程序正在进行的连接使用默认的
SSLContext
,可以通过
javax.net.ssl.*
系统属性初始化。应用程序可以自由初始化自己的
SSLContext
s来创建它们的套接字(这是Tomcat在指定某些值时为其连接器所做的)

自Java 6以来,默认值(当前)
SSLContext
也可以全局更改(通过
SSLContext.setDefault(…)

您可以从中找到默认使用的内容。其余内容将取决于每个应用程序的文档。如果需要,使用
-Djavax.net.debug=SSL,trustmanager
可能会有所帮助,但这不是API访问


(顺便说一句,
-Djavax.net.ssl.keyStore
将为默认密钥管理器而不是信任存储设置密钥库。)

您需要解决的问题到底是什么?@Thorbjørnravandersen-有时问题背后没有不同的问题:-)然后获取JDK的源代码,看看代码的作用。如果幸运的话,会有一个日志语句告诉您它的功能,您可以在Java控制台中启用它。但是,当
-Djavax.net.debug=SSL时,trustmanager
会以log
的形式快速提供给您,trustStore是:C:\Program Files\Java\jdk1.7.0\u 01\jre\lib\security\cacerts
,它很有帮助(虽然我运行的是Java 8)