我最初的问题是当我在jetty配置文件中使用IncludeCipherSuites选项时,只支持TLS 1.2。请参阅以下帖子了解详情: Jetty IncludeCipherSuites enables only TLS 1.2
根据评论看来,如果我在我的码头配置文件中没有提供ExcludeCipherSuite,则会使用jetty默认排除密码列表,并且排除了我通过IncludeCipherSuites选项明确启用的许多密码(如果它们在码头中)默认排除列表)。
只需在同一个配置文件中添加一个空的ExcludeCiphersSuites标记和IncludeCipherSuites标记即可解决问题。通过说空,我的意思是我没有添加任何密码来排除,我只是添加了ExcludeCiphersSuites标签和空密码列表:
<Set name="ExcludeCipherSuites">
<Array type="String">
</Array>
</Set>
我的理解是之前(仅使用IncludeCipherSuites选项)我所包含的一些密码被jetty默认排除列表排除。但是,使用空列表强制添加ExcludeCiphersSuites选项以使用空列表覆盖jetty的默认排除列表,因此不会从包含密码列表中排除任何内容。你能否证实我的理解是正确的?
同样根据以上所有调查结果,jetty具有以下密码默认配置:
Jetty default exclude ciphers: CIPHER1, CIPHER2
Jetty default include ciphers: CIPHER3, CIPHER4
我想配置我的码头以仅支持CIPHER1和CIPHER5。以下是我应该使用的正确配置吗?
<Set name="ExcludeCipherSuites">
<Array type="String">
</Array>
</Set>
<Set name="IncludeCipherSuites">
<Array type="String">
<Item>CIPHER1</Item>
<Item>CIPHER2</Item>
</Array>
</Set>
这会覆盖所有jetty默认值并强制jetty支持CIPHER1和CIPHER2而不是其他任何东西吗?
答案 0 :(得分:2)
Jetty不会禁用协议TLS / 1.0或TLS / 1.1。
协议,密码,密钥库,信任库等的配置均由SslContextFactory
SslContextFactory能够使用addExcludeProtocols()
请注意,Jetty在其默认排除项中不包含TLS / 1.0或TLS / 1.1。
截至Jetty 9.3.13.v20161014 the default exclusion of protocols的内容如下:
addExcludeProtocols("SSL", "SSLv2", "SSLv2Hello", "SSLv3");
由于您似乎专门询问密码套件,请知道Jetty 9.3.13.v20161014 default exclusions for Cipher suites如下:
setExcludeCipherSuites("^.*_(MD5|SHA|SHA1)$");
这恰好是在2008年被宣布为易受攻击的同一组密码套件,并且将于2017年1月1日停止在Chrome和Firefox客户端上使用。此MD5 / SHA / SHA1的终止开关存在于在过去的几年(5-ish?)年内发布了所有版本的Chrome和Firefox。
另请注意,Java本身会禁用各种协议和密码套件算法。
$ grep -E "^jdk.*disabled" $JAVA_HOME/jre/lib/security/java.security
jdk.certpath.disabledAlgorithms=MD2, MD5, RSA keySize < 1024
jdk.tls.disabledAlgorithms=SSLv3, RC4, MD5withRSA, DH keySize < 768