Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 强制JVM对https连接使用某些密码_Java_Ssl - Fatal编程技术网

Java 强制JVM对https连接使用某些密码

Java 强制JVM对https连接使用某些密码,java,ssl,Java,Ssl,我有一个Java客户端,它使用https连接到某些web服务。客户机的一个要求是,我们应该能够从支持的密码套件列表中进行选择,然后强制客户机使用它们 从下面 https.cipherSuite系统属性。其中包含以逗号分隔的密码套件名称列表,指定要启用的密码套件 用于此HttpsURLConnection。请参阅SSLSocket SetEnabledChiperSuite(字符串[])方法 但是当我设置这个JVM属性并列出默认密码时。我得到标准启用的密码列表,与不使用此属性时相同 我用于列出

我有一个Java客户端,它使用https连接到某些web服务。客户机的一个要求是,我们应该能够从支持的密码套件列表中进行选择,然后强制客户机使用它们

从下面

  • https.cipherSuite系统属性。其中包含以逗号分隔的密码套件名称列表,指定要启用的密码套件 用于此HttpsURLConnection。请参阅SSLSocket SetEnabledChiperSuite(字符串[])方法
但是当我设置这个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

有什么建议吗?

此系统属性仅影响默认的https客户端代码;不是整个密码列表,即使用
HttpsURLConnection
的任何内容都将由
https.cipherSuites
值控制

它并没有很好的文档记录——它位于的源代码中,并在以下文件中明确指出:

https.cipherSuites
系统属性。这包含一个以逗号分隔的密码套件名称列表,指定要在此
HttpsURLConnection
上启用哪些密码套件

如果您想完全覆盖套接字工厂,您可以创建一个类来做同样的事情——做出合理的尝试