Java密码套件

Ama*_*756 13 java ssl

我正在尝试使用SSLSocketFactory.getSupportedCipherSuites()来确定返回密码套件的顺序 - 它似乎在Java 1.6和Java 1.7之间有所不同.

我认为这很容易确定,但遇到了一些问题.首先,这是我正在使用的代码:

SSLContext context = SSLContext.getDefault();
SSLSocketFactory sf = context.getSocketFactory();
String[] cipherSuites = sf.getSupportedCipherSuites();
Run Code Online (Sandbox Code Playgroud)

非常直接(如果我做了一些愚蠢的事情,请纠正我).所以,我认为(使用eclipse)我可以进入getSupportedCipherSuites()方法,但似乎源代码不是那样做的(这有什么原因吗?).我在jsse.jar中找到了这个类,并使用JD-Eclipse对它进行了反编译.然而,这给了我一个抽象类,我无法看到抽象类的具体实现(我发现可以使用属性"ssl.SocketFactory.provider"设置类,但这还没有在java.security中指定).我还无法确定如何使用"javax.net.debug"属性打开登录(这会消失为本机方法).

有人能指出我哪里错了吗?

Bru*_*uno 16

SunJSSE提供程序文档中提供了受支持(和已启用)密码套件的列表:适用于Java 6Java 7.列表顺序确实不同.

我必须承认,我从未真正关注支持的密码套件列表中的顺序.重要的是*启用的"密码套件列表".

如果您对代码本身感兴趣,您应该在sun.security.ssl.SSLContextImpl和中找到它sun.security.ssl.CipherSuite.请注意,这些类是Sun JSSE实现的一部分,而不是公共Java API的一部分.

关于调试,您可以在JSSE参考指南Debugging部分找到所需的参数.

  • "重要的是"启用了"密码套件列表." - 如果您的目的是(例如)填充一组GUI复选框,以便用户可以选择启用哪些密码套件. (3认同)