gpt4 book ai didi

java - 限制基于 Java 的 Web 服务器 TLS 协议(protocol)以供 Wireshark 检查

转载 作者:行者123 更新时间:2023-11-30 09:11:42 26 4
gpt4 key购买 nike

我正在使用基于 Java 的 Web 服务器(PlayFramework 2.2 FWIW - 请参阅 very good write up on TLS),并且我想调试各种设备(例如:Android)的 SSL 通信,以确切了解线路上发生了什么随着 TLS 的发展。为此,我可以使用 Wireshark to decrypt the SSL layer .如果服务器不创建临时 key ,这会起作用,如 explained nicely by Steven Iveson :

Important: Ensure the use of a Diffie-Hellman Ephemeral (DHE/EDH) or RSA Ephemeral cipher suite is not negotiated between the two hosts. This is indicated by the use of a ServerKeyExchange message. There is no way to decrypt data where ephemeral ciphers are used.

Java Secure Sockets Extension Reference Guide section on how to Disable Algorithms指向我尝试在 $JAVA_HOME/jre/lib/security/java.security 文件中直接设置为

jdk.tls.disabledAlgorithms 属性
jdk.tls.disabledAlgorithms=DH, ECDH, EDCHE, DiffieHellman

我尝试使用一些 Java™ Cryptography ArchitectureStandard Algorithm Name Documentation作为尝试选择其中一个字符串的尝试,但我一直在野外选择一些。

我也尝试在代码中使用它来设置它

java.security.Security.setProperty("jdk.tls.disabledAlgorithms","ECDH, ECDHE, ECDHE_RSA, DiffieHellman")

但这似乎并没有阻止 ServerKeyExchange 消息的出现,如 OSX 上 Wireshark 1.11.2 的屏幕截图所示:screenshot of Wireshark 1.11.2 on OSX .事实上,我似乎无法解密流。

知道我做错了什么吗?

最佳答案

不确定这是否有帮助,但请尝试在特权 block 内进行:

AccessController.doPrivileged(
new PrivilegedExceptionAction[Unit]() {
java.security.Security.setProperty("jdk.tls.disabledAlgorithms","ECDH, ECDHE, ECDHE_RSA, DiffieHellman")

}
)

关于java - 限制基于 Java 的 Web 服务器 TLS 协议(protocol)以供 Wireshark 检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21958615/

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