我已经看到很多使用jdk.tls.disabledAlgorithms在java中禁用TLS密码的例子,例如:
jdk.tls.disabledAlgorithms=MD2, RSA keySize < 1024, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
Run Code Online (Sandbox Code Playgroud)
但是,我如何禁用某些协议的密码,使用jdk.tls.disabledAlgorithms或类似的配置?
例如,我怎么可以禁用TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256的TLSv1.1唯一?
它似乎不支持opensssl这样做的方式,就像这样:
TLSv1.1:!TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
Run Code Online (Sandbox Code Playgroud)
它不会导致任何错误,但仍然允许使用密码.
编辑:请注意,我只对基于JVM配置的答案感兴趣,因为我不控制许多这些服务器上的代码,只有JVM和JVM配置.有些甚至是第三方服务器,因此更多的是操作级别的东西.
编辑2:请注意,您可以运行一个Java应用程序并提供更改使用哪些协议和密码的参数,例如java -server -Djava.security.properties=./my/custom/java.security -jar myapp.jar它会这样做 - 但它不会让您通过协议过滤密码,只能从我看到的密码或协议中过滤密码.该文件将包含一个属性条目jdk.tls.disabledAlgorithms
JSSE文档说该https.protocols属性可以在给定的SSL上下文中存储逗号分隔的受支持协议列表,但是此属性由当前JSSE实现使用,但可能被其他供应商或未来版本忽略,因此YMMV.
以编程方式,您可以像这样实现它:
SSLSocket socket = (SSLSocket) SSLSocketFactory.getDefault().createSocket();
socket.setEnabledCipherSuites(new String[] {
CipherSuite.TLS_RSA_WITH_RC4_128_MD5.javaName,
CipherSuite.TLS_RSA_WITH_RC4_128_SHA.javaName,
});
//allow TLS1.2 only
socket.setEnabledProtocols(new String[] {
TlsVersion.TLS_1_2.javaName,
});
Run Code Online (Sandbox Code Playgroud)
发表评论作为答案,因为为什么不.
其他答案,以及我在网上找到的每个文档,似乎都同意你所要求的内容在Java中是不可能做到的,至少还不是.您可以全局启用/禁用协议,也可以全局启用/禁用密码类型,但不能基于另一种启用/禁用密码类型.
但是,由于您处于DevOps端,因此可能存在非Java解决方案.您可以运行应用程序的单独实例,每个实例仅启用TLSv1.1,仅启用TLSv1.2等,并将所需的密码过滤器应用于每个实例; 然后让nginx(或任何你使用的)根据检测到的协议将流量重定向到适当的实例.
所以,NODE1的一个实例是:
jdk.tls.client.protocols=TLSv1.1
jdk.tls.disabledAlgorithms=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
Run Code Online (Sandbox Code Playgroud)
NODE2的另一个例子是:
jdk.tls.client.protocols=TLSv1.2
jdk.tls.disabledAlgorithms=...
Run Code Online (Sandbox Code Playgroud)
还有一些nginx规则(使用return或者rewrite你认为合适):
server {
[...]
if ( $ssl_protocol = TLSv1.1 ) {
return 302 $scheme://NODE1.yourhost.com$request_uri;
}
if ( $ssl_protocol = TLSv1.2 ) {
rewrite ^ $scheme://NODE2.yourhost.com$request_uri;
}
Run Code Online (Sandbox Code Playgroud)
我只是一个Java开发人员,我对nginx的经验非常有限,所以你可能需要调整一下配置.只是想帮忙.
| 归档时间: |
|
| 查看次数: |
1610 次 |
| 最近记录: |