Java JVM Hotspot ephemeralDHKeySize

我试图将DH密钥大小从1024位增加到2048位,根据这个问题:
How to expand DH key size to 2048 in java 8.

但是,它似乎不起作用.相关信息:

java -version
java version "1.8.0_45" 
Java(TM) SE Runtime Environment (build 1.8.0_45-b14) 
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)

System.out.println(Security.getProperty("jdk.tls.ephemeralDHKeySize"));
2048

但是,如果我从客户端连接到该服务器,它使用1024位:

openssl s_client -connect server:port -cipher "EDH" 2>/dev/null | grep -ie "Server .* key"
Server Temp Key: DH, 1024 bits

知道我还能做什么吗?

最佳答案 我担心您正在调用Security.getProperty(“jdk.tls.ephemeralDHKeySize”)来检查DH密钥大小. jdk.tls.ephemeralDHKeySize属性不是Security属性,它是一个System属性,这使我怀疑你没有正确设置它.如果你这样设置:

Security.setProperty("jdk.tls.ephemeralDHKeySize", "2048"); // don't do this

然后那不会起作用.尝试传递:

-Djdk.tls.ephemeralDHKeySize=2048

在程序的命令行中,或者像这样设置:

System.setProperty("jdk.tls.ephemeralDHKeySize", "2048");

在代码中.

点赞