我正在使用基于Java的Web服务器(PlayFramework 2.2 FWIW - 请参阅very good write up on TLS),我想调试各种设备的SSL通信,例如:Android,以查看就TLS而言,究竟是什么在线上发生。为此,我可以使用Wireshark to decrypt the SSL layer。这工作,如果服务器不创建一个临时密钥,为explained nicely by Steven Iveson:限制基于Java的Web服务器TLS协议以供Wireshark检查
要点:确保使用的Diffie-Hellman短暂(DHE/EDH)或 RSA短暂的密码套件没有在两台主机之间协商。 这通过使用ServerKeyExchange消息来表示。在使用临时密码的地方,没有办法解密数据。
的Java Secure Sockets Extension Reference Guide section on how to Disable Algorithms点,我曾尝试在$JAVA_HOME/jre/lib/security/java.security
文件中直接设置为
jdk.tls.disabledAlgorithms=DH, ECDH, EDCHE, DiffieHellman
我使用了一些Java™ Cryptography Architecture Standard Algorithm Name Documentation为尝试选择那些字符串中的一个尝试jdk.tls.disabledAlgorithms
属性,但我一直在野外挑选一点。
我试着设置也使用它的代码
java.security.Security.setProperty("jdk.tls.disabledAlgorithms","ECDH, ECDHE, ECDHE_RSA, DiffieHellman")
但是这似乎并没有停止ServerKeyExchange
消息的外观,如图Wireshark的1.11.2对OSX的截图: 。事实上,我似乎无法解密流。
任何想法我可能做错了什么?
时,我会回到您的观点。如果有帮助,则字符串列表在[SSLAlgorithmConstraints.java](http://grepcode.com/file/)中定义repository.grepcode.com/java/root/jdk/openjdk/7u40-b43/sun/security/ssl/SSLAlgorithmConstraints.java#265) –
如果java客户端脚本正在从Windows机器运行,那么可以禁用它作为以及具体如何?该服务器是一个Apache服务器,数据包也被发现无法解密。 – vbNewbie
我想出了如何在Windows上执行此操作,但只想验证此设置是否可确保运行的客户端脚本不会在其httpwebrequests中使用算法加密? – vbNewbie