ssl - 如何在 Open Liberty 上启用 TLSv1.2 目前它说已为 TLSV1 启用

标签 ssl websphere-liberty open-liberty

我们已经使用 Open Liberty webprofile 8 构建了一个 Docker 镜像,目前对 salesforce API 的 HTTPS 出站调用失败,从日志来看似乎只启用了 TLSV1,从所有阅读来看似乎需要 TLSV1.2启用。我是 Open Linberty 的新手,我不知道该怎么做。在我的 Server.xml 文件中,我有以下条目:-

<keyStore id="defaultKeyStore" password="Liberty"/>

<ssl id="defaultSSLConfig" keyStoreRef="defaultKeyStore" sslProtocol="SSL_TLSv2"/>

但即使在那之后我仍然遇到错误并且 HTTPS 调用失败:-

phx.salesforceliveagent.com/136.147.100.1:443 with timeout 0
2019-04-29T23:05:08.840527853Z 2019-04-29 23:05:08.839 DEBUG 1 --- [cutor-thread-16] o.a.h.c.ssl.SSLConnectionSocketFactory   : Enabled protocols: [TLSv1]
2019-04-29T23:05:08.848027084Z 2019-04-29 23:05:08.845 DEBUG 1 --- [cutor-thread-16] o.a.h.c.ssl.SSLConnectionSocketFactory   : Enabled cipher suites:[SSL_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, SSL_ECDHE_RSA_WITH_AES_256_CBC_SHA384, SSL_RSA_WITH_AES_256_CBC_SHA256, SSL_ECDH_ECDSA_WITH_AES_256_CBC_SHA384, SSL_ECDH_RSA_WITH_AES_256_CBC_SHA384, SSL_DHE_RSA_WITH_AES_256_CBC_SHA256, SSL_DHE_DSS_WITH_AES_256_CBC_SHA256, SSL_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, SSL_ECDHE_RSA_WITH_AES_256_CBC_SHA, SSL_RSA_WITH_AES_256_CBC_SHA, SSL_ECDH_ECDSA_WITH_AES_256_CBC_SHA, SSL_ECDH_RSA_WITH_AES_256_CBC_SHA, SSL_DHE_RSA_WITH_AES_256_CBC_SHA, SSL_DHE_DSS_WITH_AES_256_CBC_SHA, SSL_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, SSL_ECDHE_RSA_WITH_AES_128_CBC_SHA256, SSL_RSA_WITH_AES_128_CBC_SHA256, SSL_ECDH_ECDSA_WITH_AES_128_CBC_SHA256, SSL_ECDH_RSA_WITH_AES_128_CBC_SHA256, SSL_DHE_RSA_WITH_AES_128_CBC_SHA256, SSL_DHE_DSS_WITH_AES_128_CBC_SHA256, SSL_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, SSL_ECDHE_RSA_WITH_AES_128_CBC_SHA, SSL_RSA_WITH_AES_128_CBC_SHA, SSL_ECDH_ECDSA_WITH_AES_128_CBC_SHA, SSL_ECDH_RSA_WITH_AES_128_CBC_SHA, SSL_DHE_RSA_WITH_AES_128_CBC_SHA, SSL_DHE_DSS_WITH_AES_128_CBC_SHA, SSL_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, SSL_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, SSL_ECDHE_RSA_WITH_AES_256_GCM_SHA384, SSL_RSA_WITH_AES_256_GCM_SHA384, SSL_ECDH_ECDSA_WITH_AES_256_GCM_SHA384, SSL_ECDH_RSA_WITH_AES_256_GCM_SHA384, SSL_DHE_DSS_WITH_AES_256_GCM_SHA384, SSL_DHE_RSA_WITH_AES_256_GCM_SHA384, SSL_ECDHE_RSA_WITH_AES_128_GCM_SHA256, SSL_RSA_WITH_AES_128_GCM_SHA256, SSL_ECDH_ECDSA_WITH_AES_128_GCM_SHA256, SSL_ECDH_RSA_WITH_AES_128_GCM_SHA256, SSL_DHE_RSA_WITH_AES_128_GCM_SHA256, SSL_DHE_DSS_WITH_AES_128_GCM_SHA256]
2019-04-29T23:05:08.852594802Z 2019-04-29 23:05:08.851 DEBUG 1 --- [cutor-thread-16] o.a.h.c.ssl.SSLConnectionSocketFactory   : Starting handshake
2019-04-29T23:05:08.905209219Z [err] javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
2019-04-29T23:05:09.063121768Z [err]    at com.ibm.jsse2.k.a(k.java:42)
2019-04-29T23:05:09.067062984Z [err]    at com.ibm.jsse2.k.a(k.java:37)
2019-04-29T23:05:09.098532614Z [err]    at com.ibm.jsse2.av.b(av.java:549)
2019-04-29T23:05:09.101687527Z [err]    at com.ibm.jsse2.av.a(av.java:715)

我不确定如何解决这个 handshake_failure 问题?有帮助吗?

2019 年 4 月 30 日更新:--已解决:- 开发团队修复了那里的代码以确保强制执行 TSLv1.2,这暂时为我们解决了这个问题。感谢 Alasdair 关于创建 jvm.options 文件和创建环境变量以设置为 TLSv1.2 的想法,以防将来其他人遇到困难时可以尝试。

UPDATE 05.01/2019--> IBM 的 Alasdir 和 Brian S Paskin 也帮助我处理了 jvm.options 文件,它应该如下所示:-

-Dhttps.protocols=TLSv12
-Djdk.tls.client.protocols=TLSv12
-Dhttps.protocols=TLSv12
-Dcom.ibm.jsse2.overrideDefaultProtocol=TLSv12

如果有人想走这条路。

最佳答案

对于任何绊倒这个问题和包含的答案的人, 答案中有一个类型。缺少一个点,这将禁用所有 TLS 通信(取决于您的 JDK/JRE)。

-Dhttps.protocols=TLSv1.2
-Djdk.tls.client.protocols=TLSv1.2
-Dhttps.protocols=TLSv1.2
-Dcom.ibm.jsse2.overrideDefaultProtocol=TLSv1.2

如果您不想为遗留服务器禁用 TLSv1.1,您可以使用:

-Dhttps.protocols=TLSv1.2,TLSv1.1
-Djdk.tls.client.protocols=TLSv1.2,TLSv1.1
-Dhttps.protocols=TLSv1.2,TLSv1.1
-Dcom.ibm.jsse2.overrideDefaultProtocol=TLSv1.2,TLSv1.1

最后一个设置对于 IBM J9 VM 和 Eclipse OpenJ9 VM 尤为重要。您可以从 adoptopenjdk.net 获取这些信息(以防万一您想知道)。

关于ssl - 如何在 Open Liberty 上启用 TLSv1.2 目前它说已为 TLSV1 启用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55911936/

相关文章:

security - HTTPS 下载/上传

mongodb - 在没有证书的情况下在 mongodb 副本集中启用 ssl

JAVA Liberty 应用程序无法在 Bluemix 中启动

websphere-liberty - 更改自定义属性 IBM Liberty 20x

jax-rs - 在 OpenLiberty jax-rs 上将 POST 请求的默认编码设置为 utf-8

ssl - 为什么即使 verifyHostname 为 false,仍会进行主机名验证?

java - Websphere Liberty Profile for Eclipselink 上的 VerifyError

ssl - 将 www 重定向到非 www

session - 在 Coldfusion 中丢失 session

websphere-liberty - WebSphere Liberty 配置文件 : Context Root Not Found