如何显示可用于码头HTTPS客户协议和加密套件?

问题描述 投票:2回答:1

我已经配置Jetty的嵌入式服务器包含/排除一些协议和加密套件。有没有办法来报告那些工作服务?我想是这样getSupportedCipherSuites()getSupportedProtocols() javax.net.ssl.SSLServerSocket,但对于Jetty服务器对象。我的代码已经具备了从CONFIGRATION的事情:

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报道

但随着码头的环境,我不知道如何获得该名单。我通过调用sslContextFactory.addExcludeProtocols()排除一些协议(我因为Chrome有错误,TLSv1.2残疾人ERR_SSL_CLIENT_AUTH_SIGNATURE_FAILED in Google Chrome

我怎样才能得到可用的协议的列表(不排除)为Jetty服务器?

我想这对我的环境这样的结果将是:

SSLv2Hello
SSLv3
TLSv1
TLSv1.1

(TLSv1.2工作是禁用)

java ssl https cryptography jetty
1个回答
0
投票

我刚刚经历了类似的问题了。

码头的工作方式,它实例化一个默认SSLEngine,然后将其应用于排除和其他偏好。默认情况下,码头9.4排除了以下协议:

this.addExcludeProtocols("SSL", "SSLv2", "SSLv2Hello", "SSLv3");

密码都以类似的方式进行管理,但你可以UGE正则表达式。默认情况下,码头9.4不包括以下情况:

this.setExcludeCipherSuites("^.*_(MD5|SHA|SHA1)$");
        this.addExcludeCipherSuites("^TLS_RSA_.*$");
        this.addExcludeCipherSuites("^SSL_.*$");
        this.addExcludeCipherSuites("^.*_NULL_.*$");
        this.addExcludeCipherSuites("^.*_anon_.*$");

如果调用包含/排除方法yourselp,你将不得不面对与码头进行,这可能造成混乱,处理的特定序列。所以,我建议你先用setter方法与空数组,以清除任何码头到位默认,然后添加你喜欢的项目。例:

// empty the collections, we don't need no education
sslContextFactory.setExcludeProtocols(new String[]{});
sslContextFactory.setExcludeCipherSuites(new String[]{});

// tell me what you want, what you really really want
sslContextFactory.setIncludeProtocols("TLSv1","TLSv1.1","TLSv1.2");
sslContextFactory.setIncludeCipherSuites(omgIveNeverSeenSuchABigArrayOfCiphers);

如果你需要一个特定的Java客户端支持的密码列表,运行客户端-Djavax.net.debug=ssl:handshake:verbose和寻找客户问候消息。

© www.soinside.com 2019 - 2024. All rights reserved.