在java.security.Security中查找所有属性的当前状态

时间:2018-05-18 17:34:45

标签: java

对于调试,我想要一种方法来发现在给定时刻运行的JVM,java.security.Security类中维护的所有属性的所有名称和所有值。

我从学习API规范和Java Cryptography Architecture Guide ...

中学到了一些东西

如果我知道属性的名称,我可以使用getProperty找到它的当前值。但我不知道如何发现所有的名字。

可以在配置文件中进行属性的初始设置,但稍后可以使用setProperty动态添加和更改设置。我对当前设置感兴趣,这不一定是初始设置。

感谢您的指导!

2 个答案:

答案 0 :(得分:1)

setPropertygetProperty都操纵内部props字段。您可以使用反射API访问它。严格使用此作为一次性代码进行调试!永远不应该进入生产代码。

Field f = Security.class.getDeclaredField("props");
f.setAccessible(true);
Properties allProps = (Properties) f.get(null); // Static field, so null object.
System.out.println(allProps); //Or iterate over elements()/propertyNames() and print them individually

答案 1 :(得分:0)

使用 Security 类:

String certDisabled = Security.getProperty("jdk.certpath.disabledAlgorithms");
String tlsDisabled= Security.getProperty("jdk.tls.disabledAlgorithms");