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 如何显示Jetty HTTPS客户端可用的协议和密码套件?_Java_Ssl_Https_Cryptography_Jetty - Fatal编程技术网

Java 如何显示Jetty HTTPS客户端可用的协议和密码套件?

Java 如何显示Jetty HTTPS客户端可用的协议和密码套件?,java,ssl,https,cryptography,jetty,Java,Ssl,Https,Cryptography,Jetty,我已将Jetty嵌入式服务器配置为包括/排除一些协议和密码套件。有没有办法报告在职人员?我考虑的是javax.net.ssl.SSLServerSocket的getSupportedCipherSuite()和getSupportedProtocols(),但对于Jetty服务器对象。我的代码已经显示了配置中的内容: HTTPSPDYServerConnector SSLconnector = new HTTPSPDYServerConnector(server, sslContextFacto

我已将Jetty嵌入式服务器配置为包括/排除一些协议和密码套件。有没有办法报告在职人员?我考虑的是
javax.net.ssl.SSLServerSocket
getSupportedCipherSuite()
getSupportedProtocols()
,但对于Jetty服务器对象。我的代码已经显示了配置中的内容:

HTTPSPDYServerConnector SSLconnector = new HTTPSPDYServerConnector(server, sslContextFactory);
SSLconnector.setPort(PortHTTPS);
...
server.setConnectors(new Connector[] { SSLconnector });
...
showInfo(sslContextFactory.getIncludeCipherSuites());
showInfo(sslContextFactory.getExcludeCipherSuites());
showInfo(sslContextFactory.getIncludeProtocols());
showInfo(sslContextFactory.getExcludeProtocols());
...
server.start();
现在我想看看客户端可以使用哪些协议和密码套件

编辑(更多信息):

我的环境可以使用这些协议:

SSLv2Hello
SSLv3
TLSv1
TLSv1.1
TLSv1.2
这是由报告的
SSLServerSocket.getSupportedProtocols()
的结果

但对于Jetty环境,我不知道如何获得这样的列表。我打电话排除了一些协议
sslContextFactory.addExcludeProtocols()
(由于Chrome错误,我禁用了
TLSv1.2

如何获取Jetty server可用(未排除)的协议列表

我认为,对于我的环境,这样的结果将是:

SSLv2Hello
SSLv3
TLSv1
TLSv1.1

(TLSv1.2被禁用)

我刚刚遇到了一个类似的问题

Jetty的工作方式是实例化默认的
SSLEngine
,然后应用排除和其他首选项。默认情况下,Jetty 9.4不包括以下协议:

SSLv2Hello
SSLv3
TLSv1
TLSv1.1
TLSv1.2
this.addExcludeProtocols(“SSL”、“SSLv2”、“SSLv2Hello”、“SSLv3”);
密码的管理方式与此类似,但您可以使用uge正则表达式。默认情况下,Jetty 9.4不包括以下内容:

this.setExcludeCipherSuite(“^.*(MD5 | SHA | SHA1)$”;
此.addExcludeCipherSuites(“^TLS\U RSA.*$”);
此.addExcludeCipherSuites(“^SSL.*$”);
此.addExcludeCipherSuites(“^.*.\u NULL.*.$”);
本附录中添加了除外的字符集(“^.*.\u anon.*.$”;
如果调用include/exclude方法,则必须处理Jetty执行的特定处理序列,这可能会造成混淆。因此,我建议您首先对空数组使用setter方法,以便清除Jetty默认设置的任何内容,然后添加首选项。例如:

//清空集合,我们不需要教育
setExcludeProtocols(新字符串[]{});
setExcludeCipherSuite(新字符串[]{});
//告诉我你想要什么,你真正想要什么
setIncludeProtocols(“TLSv1”、“TLSv1.1”、“TLSv1.2”);
sslContextFactory.setIncludeCipherSuites(OMGiveNeverseensucchabigarayofiPhone);

如果需要特定Java客户端支持的密码列表,使用
-Djavax.net.debug=ssl:handshake:verbose运行该客户端,并查找ClientHello消息。

您需要知道哪些内容尚未显示?如果我未在包含/排除的协议中使用它,它不会显示可用的协议,如
TLSv1.2
。我不理解“如果我不使用它…”开头的部分。I可以使用:
sslContextFactory.setExcludeCipherSuites(新字符串[]{“TLS\u DHE\u RSA\u WITH_3DES\u EDE\u CBC\u SHA”…)
然后我在日志中看到
TLS\u DHE\u RSA\u WITH_3DES\u EDE\u CBC\u SHA
。但如果我不排除它,即使它可用并且可以被客户端使用,我也不会在日志中看到它。请尝试选择ciphersuites()。