如何在Spring-boot上启用TLS 1.2?

时间:2015-01-16 17:01:54

标签: ssl spring-boot android-5.0-lollipop tomcat8

我试图在Spring-boot 1.2.1上启用Tomcat上的TLS 1.2。由于SSL握手失败,Android 5.0无法连接到默认的SSL设置。 Android 4.4,iOS,Firefox和Chrome都连接到默认版本。我认为这是因为Android 5.0支持的TLS协议和spring boot tomcat默认值(TLS v1?)不匹配。

我想我想要更改此application.properties设置:

server.ssl.protocol=TLS

但我没有找到其他可接受的字符串(或者如果有的话,甚至)。通过搜索spring boot github中的“协议”,我找不到枚举。 我试过“TLSv1.2”,但这似乎没有效果。

application.properties中的当前SSL配置是:

server.ssl.key-store = chainedcertificates.p12
server.ssl.key-store-password = secret
server.ssl.key-store-type = PKCS12

如何在春季启动时启用TLS 1.2?

如果重要,我使用的是Java 1.7。这方面的文档似乎表明它应该支持TLS 1.2。

Tomcat 8 seems to have support present.我不确定如何确切地检查春季启动中运行的版本。

2 个答案:

答案 0 :(得分:13)

由于spring boot包含的默认密码,您可能会遇到SSL握手错误。建议您定义一组密码。我们遇到了类似的问题,我们修复它的方法是在调用者上使用SSLScan,然后扫描我们的系统以查看是否有任何匹配。这导致我们发现没有匹配并帮助我们定义了一个我们应该支持的密码列表。

使用SSLScan这些是spring boot将使用的默认密码:

Preferred TLSv1.2  128 bits  ECDHE-RSA-AES128-GCM-SHA256   Curve P-256 DHE 256
Accepted  TLSv1.2  128 bits  ECDHE-RSA-AES128-SHA256       Curve P-256 DHE 256
Accepted  TLSv1.2  128 bits  ECDHE-RSA-AES128-SHA          Curve P-256 DHE 256
Accepted  TLSv1.2  128 bits  DHE-RSA-AES128-GCM-SHA256     DHE 1024 bits
Accepted  TLSv1.2  128 bits  DHE-RSA-AES128-SHA256         DHE 1024 bits
Accepted  TLSv1.2  128 bits  DHE-RSA-AES128-SHA            DHE 1024 bits

要启用TLS 1.2并定义密码列表,请执行以下操作:

#enable/diable https
server.ssl.enabled=true

#ssl ciphers
server.ssl.ciphers=TLS_RSA_WITH_AES_128_CBC_SHA256, INCLUDE_ANY_OTHER_ONES_YOU_NEED_TO_SUPPORT

# SSL protocol to use.
server.ssl.protocol=TLS

# Enabled SSL protocols.
server.ssl.enabled-protocols=TLSv1.2

有关密码列表,您可以使用https://testssl.sh/openssl-rfc.mapping.htmlhttps://msdn.microsoft.com/en-us/library/windows/desktop/mt813794(v=vs.85).aspx

答案 1 :(得分:8)

在spring-boot 1.2.1中默认启用TLS 1.2。这可以通过从命令行运行以下来验证

openssl s_client -connect serverAddress:port

输出

SSL-Session:
Protocol  : TLSv1.2
Cipher    : ECDHE-RSA-AES256-SHA384

所以我的问题必须是分开的。