gpt4 book ai didi

java - Java 中的 Tomcat 6 和 TLSv1.2

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:23:06 25 4
gpt4 key购买 nike

我在 tomcat 6 中部署了一个 Java 应用程序。该应用程序通过套接字将消息发送到另一个服务,它只需要使用 TLSv1.2 协议(protocol)。在我的 tomcat6.conf 文件中,我放置了这个配置:

JAVA_HOME=/usr/lib/jvm/jre1.7.0_75
JAVA_OPTS="${JAVA_OPTS} -Djavax.sql.DataSource.Factory=org.apache.commons.dbcp.BasicDataSourceFactory -Dhttps.protocols=TLSv1.2"

但仍然会使用旧的 tls 版本。

是否有任何配置可以在 java 或 tomcat 中应用以强制使用 TLSv1.2?


编辑 1:@Peter Walser 提供的答案很好并且可以工作。问题是我无法修改代码,因为是第三方提供的jar,我只能配置环境,不能配置代码。

最佳答案

https.protocols 系统属性仅考虑用于 HttpsURLConnectionURL.openStream(),如 Diagnosing TLS, SSL, and HTTPS 中所述

Controls the protocol version used by Java clients which obtain https connections through use of the HttpsURLConnection class or via URL.openStream() operations. ...

For non-HTTP protocols, this can be controlled through the SocketFactory's SSLContext.

您可以按如下方式配置 SSLSocket:

SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault();
SSLSocket socket = (SSLSocket) factory.createSocket(host, port);
socket.setEnabledProtocols(new String[] {"TLSv1.2"});

当使用 REST 客户端时,它们中的大多数都支持通过 SSLContext 配置协议(protocol)。示例(JAX-RS 客户端):

Client client = ClientBuilder.newBuilder()
.sslContext(SSLContext.getInstance("TLSv1.2"))
// more settings, such as key/truststore, timeouts, logging
.build();

关于java - Java 中的 Tomcat 6 和 TLSv1.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51308294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com