Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用java或spring库使rest服务仅使用TLSV1.2?_Java_Spring_Tls1.2_Using - Fatal编程技术网

如何使用java或spring库使rest服务仅使用TLSV1.2?

如何使用java或spring库使rest服务仅使用TLSV1.2?,java,spring,tls1.2,using,Java,Spring,Tls1.2,Using,托管rest服务的服务提供商要求仅使用TLS版本1.2进行通信。 所以现在我需要让我的应用程序使用TLS1.2与该服务通信 我知道,在java8中,我们可以使用java.security文件中的属性jdk.TLS.disabledAlgorithms=SSLv3,RC4禁用传统版本的TLS和SSL 但在服务器中,会有其他进程使用相同的java设置,因此我担心如果我在java.security文件中更改该属性,那么它将适用于使用相同设置的其他服务 问题: 我想知道是否有其他方法可以通过使用java

托管rest服务的服务提供商要求仅使用TLS版本1.2进行通信。 所以现在我需要让我的应用程序使用TLS1.2与该服务通信

我知道,在java8中,我们可以使用java.security文件中的属性jdk.TLS.disabledAlgorithms=SSLv3,RC4禁用传统版本的TLS和SSL

但在服务器中,会有其他进程使用相同的java设置,因此我担心如果我在java.security文件中更改该属性,那么它将适用于使用相同设置的其他服务

问题:
我想知道是否有其他方法可以通过使用java/spring库的应用程序代码使我的rest调用只使用特定的TLS版本?

创建
SSLContext
以使用所需的协议:

SSLContext sslContext = SSLContext.getInstance("TLSv1.2");
sslContext.init(null, null, null);
如果客户端代码或库使用HttpsURLConnection,则可以为所有HTTS连接设置默认的
SSLSocketFactory

HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
或在每个连接级别:

HttpsURLConnection urlConnection = ....;
urlConnection.setSSLSocketFactory(sslContext.getSocketFactory());
urlConnection.connect();
不同的库可能有不同的系统来提供
SSLSocketFactory
SSLContext
。 例如,如果您使用的是JAX-RS,则可以创建一个REST客户端,该客户端使用
SSLContext

Client client = ClientBuilder.newBuilder().sslContext(sslContext).build();

首先,如果您展示您的REST客户机代码,这将有所帮助,因为这将有助于找到适合您的解决方案。其次,如果服务提供商只想支持TLSv1.2,那么他们可以在服务器端进行配置。然后,只要客户端支持,所有连接都将使用TLSv1.2。我的意见是,他们应该执行这一点,而不是客户。