出于向后兼容性的原因,我需要一个Geode Jetty服务器来使用TLSv1,而不是1.1或1.2
在ssl-enabled-components=web和ssl-protocols=TLSv1.0设置为gemfire.properties之后,当我启动Geode并检查HTTPS与SSL实验室的连接时,就会得到一个TLS结果:

我正在寻找TL1.1和TLS1.0检查,也可以说是Yes而不是No
Geode SSL文档 say Make sure your Java installation includes the JSSE API and familiarize yourself with its use.
JSSE与JRE/lib/ java.security目录中的JSSE配置有关。我将此设置为不禁用任何安全算法并重新启动Geode,但结果是相同的。TLS 1.1和1.0没有通过上面的SSL实验室测试。
有没有办法迫使Geode从https.protocols=TLSv1开始呢?
当我尝试用--J=-XX:https.protocols=TLSv1启动定位器时,我会得到
Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit. Unrecognized VM option 'https.protocols=TLSv1'
我找不到单独的Jetty配置..。
Update --J=-Dhttps.protocols=TLSv1是将TLS协议分配给JVM的正确设置,用于启动Geode定位器和服务器。
当我设置更新设置jdk.tls.disabledAlgorithms=TLSv1.1, TLSv1.2 就像这个的反面时,根本不可能通过HTTPS与Jetty服务器进行通信。这让我认为Geode / Jetty ssl-protocols=TLSv1.0设置也不适用?
码头配置说TLS v1.0, v1.1 and SSL v3 are no longer supported by default. If your Jetty implementation requires these protocols for legacy support, they can be enabled manually.
有办法用Geode配置Jetty吗?
发布于 2017-10-23 03:53:56
我不相信你现在能做到这一点。主要是因为Jetty是如何在内部配置的。Jetty维护由regex ^.*_(MD5|SHA|SHA1)$定义的排除密码列表。不幸的是,这个列表似乎超过了任何可能被添加为“包括”的密码。下面是我用来测试的一个非常简单的Jetty示例:https://gist.github.com/jdeppe-pivotal/c0c6e7de4282bc077357749fc91bc44f。Jetty将生成它在运行时所使用的密码和协议的一个很好的转储。
目前,您可以使用以下curl执行成功的请求:curl -k -v --tlsv1.2 https://localhost:8081/。现在,如果您尝试使用tlsv1.0,它将失败,因为所有必要的密码套件都是禁用的。但是,如果您取消注释行:sslContextFactory.setExcludeCipherSuites(),那么事情就应该开始工作了。这样做的目的是删除所有当前排除的密码(并允许使用它们)。不幸的是,如果您只尝试添加密码(同时也不排除所有内容),事情仍然不起作用。注意,通过这样做,Jetty仍然被配置为TLSv1.2 (以及1.1和1.0),但是客户机可以使用更低的协议版本。
底线是Geode没有明确地从Jetty中排除任何密码。因此,如果您希望添加必要的密码,它们很可能是无效的。我为这个打开了一个bug:https://issues.apache.org/jira/browse/GEODE-3891
https://stackoverflow.com/questions/46828937
复制相似问题