我在tomcat 6中部署了一个Java应用程序.该应用程序通过套接字将消息发送到另一个服务,它只需要使用TLSv1.2协议.在我的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"
Run Code Online (Sandbox Code Playgroud)
但是stll使用旧的tls版本.
有没有任何配置适用于java或tomcat强制使用TLSv1.2?
编辑1: @Peter Walser提供的答案很好,可以工作.问题是我无法修改代码因为是第三方提供的jar,我只能配置环境而不是代码.
系统https.protocols属性仅考虑HttpsURLConnection和,如诊断 TLS、SSL 和 HTTPSURL.openStream()中所述
控制 Java 客户端使用的协议版本,这些客户端通过使用 HttpsURLConnection 类或通过 URL.openStream() 操作获取 https 连接。...
对于非 HTTP 协议,这可以通过 SocketFactory 的 SSLContext 进行控制。
您可以按如下方式配置 SSLSocket:
SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault();
SSLSocket socket = (SSLSocket) factory.createSocket(host, port);
socket.setEnabledProtocols(new String[] {"TLSv1.2"});
Run Code Online (Sandbox Code Playgroud)
使用 REST 客户端时,大多数客户端都支持通过SSLContext. 示例(JAX-RS客户端):
Client client = ClientBuilder.newBuilder()
.sslContext(SSLContext.getInstance("TLSv1.2"))
// more settings, such as key/truststore, timeouts, logging
.build();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1313 次 |
| 最近记录: |