让Geode使用TLSv1

时间:2017-10-19 11:33:32

标签: jetty gemfire geode

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

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

HTTPS SSL check

我正在寻找TLS 1.1和TLS 1.0检查也说Yes而不是No

Geode SSL docsMake sure your Java installation includes the JSSE API and familiarize yourself with its use.

JSSE是关于JRE / lib / security目录中的java.security配置。我设置这不是为了禁用任何安全算法并重新启动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配置......

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

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

Jetty configTLS 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?

1 个答案:

答案 0 :(得分:1)

我不相信你现在能做到这一点。主要是因为Jetty是如何在内部配置的。 Jetty维护由正则表达式^.*_(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中的任何密码。因此,如果您希望添加必要的密码,它们很可能不会有效。我已经为此打开了一个错误:https://issues.apache.org/jira/browse/GEODE-3891