我把Jetty 9.3.6升级到了Jetty 9.4.27,但我在SSL连接上遇到了问题。
当我在一些支持的操作上运行curl时,我得到了以下信息error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol (error 35)
而当我在运行Jetty 9.3.6的服务器上运行同样的命令时,一切都正常。
我以旧版本的方式配置了Jetty的新版本(包括keystore路径和启用https支持)。你知道在升级过程中,有什么地方出了问题,或者我漏掉了什么吗?
非常感谢你的支持。
Jetty 9.3.x和9.4.x有不同的Cipher Suite排除。
Jetty 9.3.6.v20151106是这样的 ...
addExcludeProtocols("SSL", "SSLv2", "SSLv2Hello", "SSLv3");
setExcludeCipherSuites(
"SSL_RSA_WITH_DES_CBC_SHA",
"SSL_DHE_RSA_WITH_DES_CBC_SHA",
"SSL_DHE_DSS_WITH_DES_CBC_SHA",
"SSL_RSA_EXPORT_WITH_RC4_40_MD5",
"SSL_RSA_EXPORT_WITH_DES40_CBC_SHA",
"SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA",
"SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA");
Jetty 9.4.29.v20200521是这样的......
/**
* Default Excluded Protocols List
*/
private static final String[] DEFAULT_EXCLUDED_PROTOCOLS = {"SSL", "SSLv2", "SSLv2Hello", "SSLv3"};
/**
* Default Excluded Cipher Suite List
*/
private static final String[] DEFAULT_EXCLUDED_CIPHER_SUITES = {
// Exclude weak / insecure ciphers
"^.*_(MD5|SHA|SHA1)$",
// Exclude ciphers that don't support forward secrecy
"^TLS_RSA_.*$",
// The following exclusions are present to cleanup known bad cipher
// suites that may be accidentally included via include patterns.
// The default enabled cipher list in Java will not include these
// (but they are available in the supported list).
"^SSL_.*$",
"^.*_NULL_.*$",
"^.*_anon_.*$"
};
你要评估为什么你需要已知的脆弱的密码套件来运作。
另外,如果你使用的是IBM JVM,那么所有的赌注都会被取消,因为IBM使用的是非标准的Cipher Suite名称(与所有其他使用RFC注册密码套件名称的JVM不同)。