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

标签 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 协议(protocol)与 spring boot tomcat 默认设置(TLS v1?)不匹配。

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

server.ssl.protocol=TLS

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

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

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

如何在 spring boot 中启用 TLS 1.2?

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

Tomcat 8 seems to have support present.我不确定如何准确检查哪个版本在 spring boot 中运行。

最佳答案

由于 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

关于ssl - 如何在 Spring-boot 上启用 TLS 1.2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27989034/

相关文章:

Android- Lollipop 预览 Nexus 5 未在 Genymotion 模拟器中启动

安卓媒体播放器错误代码-1005

TOMCAT SSL 错误 : Alias name does not identify a key entry

spring-boot - GCP 上的 Spring Cloud Consul 健康检查和状态配置

java - 以编程方式将 PEM 证书导入 Java KeyStore

java - Spring Boot,从 websocket 调用 ControllerLinkBuilder.linkTo 时出现 java.lang.IllegalStateException

java - Spring Boot OpenId Connect 和 Gluu 的配置问题

android - 工具栏默认没有阴影?

node.js - 如何在 Express.js 中强制使用 SSL/https

ssl - 在 AWS Linux 中安装 SSL 后 HTTPD 停止