Java JVM 热点临时 DHKeySize

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");

在代码中。