gpt4 book ai didi

java - 在 JSSE 中禁用非 DHE 和非 ECDHE 密码

转载 作者:太空宇宙 更新时间:2023-11-03 14:05:50 26 4
gpt4 key购买 nike

我有一个 Winstone 服务器在 Windows 上使用 Java 8 运行 Jenkins。我试图确保如果客户端请求未能指定首选密码,服务器会首选 Diffie-Hellman 密码。与 Tomcat 不同,Winstone 似乎没有办法指定密码列表来对它们进行排序。所以,我试图禁用非 DHE 和非 ECDHE 密码。通过指定最小 key 大小和删除 MD2 算法来修改 java.security 文件的禁用算法列表,我已经能够删除其中的一些算法,但无法禁用所有算法。 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

最佳答案

java.policy 不执行您描述的操作; java.security 可以。但它只会禁用或限制单个基元和 AFAICT 它不能将非 PFS 作为一个类禁用。

如果您(可以并且确实)给服务器一个 ECDSA 证书(即一个带有 ECC key 和 KU=sign 的证书)而不是一个 RSA 证书,那么只能使用 ECDHE-ECDSA 密码与该证书协商。如果您(同时或相反)给它一个DSA 证书,那么只有 DHE-DSS 密码可以与该证书协商;这可能取决于使用您自己的 CA 或自签名(具有其优点和缺点),因为我还没有找到任何颁发 DSA 证书的公共(public) CA。 Java8 默认 DHE 为 1024 位共享值,现在被认为是安全边界,但您可以使用系统属性更改它,请参阅 How to expand DH key size to 2048 in java 8 .

PS:OpenSSL 称为“EDH”的是 RFC 中的 DHE,实际上是算法 DH,而 OpenSSL 称为“DES-CBC3”的实际上是 {3DES|3DES-EDE|DESEDE}-加拿大广播公司;见Map SSL/TLS cipher suites and their OpenSSL equivalents

关于java - 在 JSSE 中禁用非 DHE 和非 ECDHE 密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41683034/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com