Jetty 使Geode使用TLSv1

Jetty 使Geode使用TLSv1,jetty,gemfire,geode,Jetty,Gemfire,Geode,出于向后兼容性的原因,我需要一个GeodeJetty服务器来使用TLSv1,而不是1.1或1.2 在gemfire.properties中设置ssl-enabled components=web和ssl-protocols=TLSv1.0后,当我启动Geode并检查HTTPS连接时,我会得到一个TLS结果: 我正在寻找TLS 1.1和TLS 1.0检查是否也表示YesnotNo 请确保您的Java安装包含JSSEAPI并熟悉其使用。 JSSE是关于JRE/lib/security目录中的jav

出于向后兼容性的原因,我需要一个GeodeJetty服务器来使用TLSv1,而不是1.1或1.2

gemfire.properties
中设置
ssl-enabled components=web
ssl-protocols=TLSv1.0
后,当我启动Geode并检查HTTPS连接时,我会得到一个TLS结果:

我正在寻找TLS 1.1和TLS 1.0检查是否也表示
Yes
not
No

请确保您的Java安装包含JSSEAPI并熟悉其使用。

JSSE是关于JRE/lib/security目录中的
java.security
config的。我设置此选项是为了不禁用任何安全算法并重新启动Geode,但结果是相同的。TLS 1.1和1.0未通过上述SSL实验室测试

有没有办法强制Geode从https.protocols=TLSv1开始

当我尝试使用
--J=-XX:https.protocols=TLSv1
启动定位器时,我得到

错误:无法创建Java虚拟机。
错误:发生致命异常。程序将退出。
无法识别的VM选项“https.protocols=TLSv1”

没有单独的码头配置,我可以找到

更新--J=-Dhttps.protocols=TLSv1是将TLS协议分配给JVM的正确设置,可用于启动Geode定位器和服务器

更新当我设置
java.security
设置
jdk.tls.disabledAlgorithms=TLSv1.1,TLSv1.2
时,就根本无法通过HTTPS与Jetty服务器通信。这让我觉得Geode/Jetty
ssl protocols=TLSv1.0
设置也不适用

默认情况下不再支持TLS v1.0、v1.1和SSL v3。如果Jetty实施需要这些协议来支持旧式支持,则可以手动启用这些协议。


有没有办法用Geode配置Jetty?

我不相信您目前能做到这一点。主要是因为Jetty的内部配置方式。Jetty维护一个由regex
^.*(MD5 | SHA | SHA1)$
定义的排除密码列表。不幸的是,这个列表似乎胜过任何可能被添加为“包含”的密码。这里有一个我用于测试的非常简单的Jetty示例:。Jetty将生成一个很好的密码转储,以及在您运行此程序时使用的协议

目前,您可以使用以下curl执行成功的请求:
curl-k-v--tlsv1.2https://localhost:8081/
。现在,如果您使用
tlsv1.0
进行尝试,它将失败,因为必要的密码套件都已禁用。但是,如果取消注释行:
sslContextFactory.setExcludeCipherSuites()
,那么应该可以开始工作了。这样做的目的是删除所有当前排除的密码(并允许使用它们)。不幸的是,如果您只尝试添加密码(不排除所有内容),事情仍然不起作用。注意,通过这样做,Jetty仍然为TLSv1.2(以及1.1和1.0)配置,但客户端可以使用较低的协议版本


底线是Geode并没有明确地从Jetty中排除任何密码。因此,如果您希望添加必要的密码,它们很可能不会有效。我为此打开了一个bug:

首先,我想您应该使用
--J=-Dhttps.protocols=TLSv1
。我最近也看到了这一点,但在使用特定协议(在我的例子中是SSL)时失败了。不过,我甚至没有修改JRE的
java.security
文件中的任何内容。好的,TLS版本是向后兼容的,因此您的服务器应该可以始终支持最新版本。@JensD感谢
--J=-Dhttps.protocols=TLSv1
现在启动了。问题是,当我使用测试HTTPS(通过Jetty)时,它仍然只使用TLS 1.2,而不是TLS 1.1或1.0,所以好像有没有办法在Geode中设置Jetty我找不到配置文件?我真的不明白,当服务器已经支持各种较低版本的客户端时,为什么要降级服务器TLS版本。无论如何,请注意,我们将把Jetty的版本更新为9.4,这将完全放弃对TLSv1.1及以下版本的支持。关于在Jetty中设置协议的当前细节,我们在这里这样做:@JensD我们使用的REST API来自运行在XP上的VB6应用程序,此技术不兼容>TLS 1.0服务器的问题是如果我在
gemfire中设置
ssl protocols=TLSv1.0
ssl protocols=TLSv1
或与
http service ssl protocols
相同。属性
HTTPS REST层是仍然在使用TLSv1.2,我不知道为什么。。。我认为这是一个码头设置是的,我认为你是对的,我认为解决办法是在Geode代码中使用“SetExcludeCipherSuite”来设置协议,并构建。。。待定