【发布时间】:2013-09-10 10:07:58
【问题描述】:
我已将 Jetty 嵌入式服务器配置为包含/排除某些协议和密码套件。有没有办法报告那些在工作的服务?我想到了 getSupportedCipherSuites() 和 getSupportedProtocols() 之类的东西 javax.net.ssl.SSLServerSocket 但对于 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() 报告的http://www.java2s.com/Code/JavaAPI/javax.net.ssl/SSLServerSocketgetSupportedProtocols.htm 的结果
但在 Jetty 环境下,我不知道如何获取此类列表。我通过调用排除了一些协议
sslContextFactory.addExcludeProtocols()(由于 Chrome 错误 ERR_SSL_CLIENT_AUTH_SIGNATURE_FAILED in Google Chrome,我禁用了 TLSv1.2)
如何获取 Jetty 服务器可用(不排除)的协议列表?
我想对于我的环境,这样的结果将是:
SSLv2Hello
SSLv3
TLSv1
TLSv1.1
(TLSv1.2 已禁用)
【问题讨论】:
-
你需要知道这还没有显示什么?
-
如果我不在包含/排除的协议中使用它,它不会向我显示可用的协议,如
TLSv1.2。 -
我不明白以“如果我不使用它...”开头的部分。
-
我可以使用:
sslContextFactory.setExcludeCipherSuites(new String[]{"TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA",...),然后我在日志中看到TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA。但是如果我不排除它,即使它可用并且可以被客户使用,我也不会在日志中看到它。 -
试试 selectCipherSuites()。
标签: java ssl https cryptography jetty