我有一个 Winstone 服务器在 Windows 上使用 Java 8 运行 Jenkins。我试图确保如果客户端请求未能指定首选密码,则服务器首选 Diffie-Hellman 密码。与 Tomcat 不同,Winstone 似乎没有办法指定密码列表来对它们进行排序。所以,我正在尝试禁用非 DHE 和非 ECDHE 密码。我已经能够通过修改 java.security 文件的禁用算法列表来删除其中的一些,方法是指定最小密钥大小并删除 MD2 算法,但不能禁用所有这些算法。OpenSSL 将剩余的不需要的密码算法标识为:
AES128-GCM-SHA256
AES128-SHA256
AES128-SHA
EDH-RSA-DES-CBC3-SHA
DES-CBC3-SHA
在 java.security 文件中,我尝试为 AES、AES128、None、EDH 和 DES 添加各种过滤器,但是当我向服务器发出请求时,这些算法仍然显示为启用状态。我还尝试删除 legacyAlgorithms 之后的条目。有谁知道什么过滤器值会删除这些?
java.security 片段:
jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024
jdk.tls.disabledAlgorithms=SSLv3, RC4, SSLv2Hello, TLSv1, TLSv1.1
jdk.tls.legacyAlgorithms= \
K_NULL, C_NULL, M_NULL, \
DHE_DSS_EXPORT, DHE_RSA_EXPORT, DH_anon_EXPORT, DH_DSS_EXPORT, \
DH_RSA_EXPORT, RSA_EXPORT, \
DH_anon, ECDH_anon, \
RC4_128, RC4_40, DES_CBC, DES40_CBC