【发布时间】:2016-03-12 05:01:05
【问题描述】:
我有 Java 客户端,它使用 https 连接到某些 Web 服务。客户端的要求之一是,我们应该能够从支持的密码套件列表中进行选择,然后强制客户端使用它们。
来自以下page
- https.cipherSuites 系统属性。这包含以逗号分隔的密码套件名称列表,指定要启用的密码套件 用于此 HttpsURLConnection。请参阅 SSLSocket setEnabledCipherSuites(String[]) 方法。
但是当我设置这个 JVM 属性并列出默认密码时。我得到了标准启用的密码列表,与不使用此属性时相同。
我用来列出启用的密码的代码:
SSLSocketFactory factory = HttpsURLConnection.getDefaultSSLSocketFactory();
SSLSocket socket = (SSLSocket) factory.createSocket();
String[] enabledCiphers = socket.getEnabledCipherSuites();
for (String enabledCipher : enabledCiphers) {
System.out.println("Enabled Ciphers: " + enabledCipher);
}
使用以下方式设置属性:
-Dhttps.cipherSuites=SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA,SSL_DHE_DSS_WITH_DES_CBC_SHA
有什么建议吗?
【问题讨论】: