ssl - 升级后的 Jetty SSL 问题 - 未知协议
问题描述
我将 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 的新版本(包括密钥库路径和启用 https 支持)。您是否知道升级过程中可能出了什么问题或我可能错过了什么?
非常感谢您的支持。
解决方案
Jetty 9.3.x 和 9.4.x 具有不同的 Cipher Suite 排除项。
码头 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");
码头 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 使用非标准密码套件名称(与所有其他使用 RFC 注册密码套件名称的 JVM 不同)。
推荐阅读
- node.js - 如何根据查询值链接 express-validator?
- javascript - 浏览器开发者工具(F12模式)下直接执行Cypress命令如何打印日志
- excel - 删除新工作簿中的空白行
- python - openpyxl:合并单元格的左右边框
- vb.net - 调整窗口大小和窗口窗体
- kubernetes - 具有容器原生负载平衡的 GKE Ingress 未检测到运行状况检查(字段“resource.httpHealthCheck”的值无效)
- angular - 常规变更日志自定义模板 - 如果未指定关闭,则不返回行
- amazon-web-services - 编排中的线程与容器
- html - 输入的文本值通过角度 2 中的 ngFor 循环在动态生成的文本框中复制
- microsoft-teams - 一周前的 MS Teams 调用操作按钮导致无效的 teamId 和/或 appId 指定消息