15

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

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

SSLContext context = SSLContext.getDefault();
SSLSocketFactory sf = context.getSocketFactory();
String[] cipherSuites = sf.getSupportedCipherSuites();

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

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

4

1 回答 1

16

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

我必须承认我从来没有真正关注过受支持的密码套件列表中的顺序。重要的是 *enabled" 密码套件列表。

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

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

于 2012-05-07T19:37:35.887 回答