如何在 Spring-boot 上启用 TLS 1.2?
How do you enable TLS 1.2 on Spring-boot?
我正在尝试在 Spring-boot 1.2.1 上的 Tomcat 上启用 TLS 1.2。 Android 由于 SSL 握手失败,5.0 无法连接到默认 SSL 设置。 Android 4.4、iOS、Firefox 和 Chrome 都连接到默认版本。我认为这是因为 Android 5.0 支持的 TLS 协议与 spring 引导 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 启动时启用 TLS 1.2?
如果重要的话,我正在使用 Java 1.7。这个文档似乎表明它应该支持 TLS 1.2。
Tomcat 8 seems to have support present. 我不确定如何在 spring 引导中准确检查哪个版本是 运行。
TLS 1.2 在 spring-boot 1.2.1 中默认启用。这可以通过 运行 以下命令行
验证
openssl s_client -connect serverAddress:port
输出
SSL-Session:
Protocol : TLSv1.2
Cipher : ECDHE-RSA-AES256-SHA384
所以我的问题一定是另外的问题。
由于 spring 启动包含的默认密码,您可能会遇到 SSL 握手错误。建议您定义一组密码。我们有一个类似的问题,我们解决它的方法是在调用者上使用 SSLScan 然后扫描我们的系统以查看是否有任何匹配项。这让我们发现没有匹配项,并帮助我们定义了我们应该支持的密码列表。
使用 SSLScan 这些是默认密码 spring 引导将使用:
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.html and https://msdn.microsoft.com/en-us/library/windows/desktop/mt813794(v=vs.85).aspx
我正在尝试在 Spring-boot 1.2.1 上的 Tomcat 上启用 TLS 1.2。 Android 由于 SSL 握手失败,5.0 无法连接到默认 SSL 设置。 Android 4.4、iOS、Firefox 和 Chrome 都连接到默认版本。我认为这是因为 Android 5.0 支持的 TLS 协议与 spring 引导 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 启动时启用 TLS 1.2?
如果重要的话,我正在使用 Java 1.7。这个文档似乎表明它应该支持 TLS 1.2。
Tomcat 8 seems to have support present. 我不确定如何在 spring 引导中准确检查哪个版本是 运行。
TLS 1.2 在 spring-boot 1.2.1 中默认启用。这可以通过 运行 以下命令行
验证openssl s_client -connect serverAddress:port
输出
SSL-Session:
Protocol : TLSv1.2
Cipher : ECDHE-RSA-AES256-SHA384
所以我的问题一定是另外的问题。
由于 spring 启动包含的默认密码,您可能会遇到 SSL 握手错误。建议您定义一组密码。我们有一个类似的问题,我们解决它的方法是在调用者上使用 SSLScan 然后扫描我们的系统以查看是否有任何匹配项。这让我们发现没有匹配项,并帮助我们定义了我们应该支持的密码列表。
使用 SSLScan 这些是默认密码 spring 引导将使用:
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.html and https://msdn.microsoft.com/en-us/library/windows/desktop/mt813794(v=vs.85).aspx