对于调试,我想要一种方法来发现在给定时刻运行的JVM,java.security.Security类中维护的所有属性的所有名称和所有值。
我从学习API规范和Java Cryptography Architecture Guide ...
中学到了一些东西如果我知道属性的名称,我可以使用getProperty找到它的当前值。但我不知道如何发现所有的名字。
可以在配置文件中进行属性的初始设置,但稍后可以使用setProperty动态添加和更改设置。我对当前设置感兴趣,这不一定是初始设置。
感谢您的指导!
答案 0 :(得分:1)
setProperty
和getProperty
都操纵内部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");