如何使rest服务只使用TLS V1.2使用java或spring库?



承载rest服务的服务提供者要求仅使用TLS 1.2版本进行通信。所以现在我需要让我的应用程序使用TLS v 1.2与该服务通信。

我知道,在java8中,我们可以使用属性jdk.tls禁用TLS和SSL的遗留版本。disabledAlgorithms=SSLv3, java中的RC4。安全文件。

但是在服务器中会有其他进程使用相同的java设置,所以我担心如果我在java中更改该属性。安全文件,那么它将适用于使用相同设置的其他服务。

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

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

SSLContext sslContext = SSLContext.getInstance("TLSv1.2");
sslContext.init(null, null, null);

如果客户端代码或库使用HttpsURLConnection,那么你可以为所有的https连接设置默认的SSLSocketFactory:

HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());

或者在每个连接级别:

HttpsURLConnection urlConnection = ....;
urlConnection.setSSLSocketFactory(sslContext.getSocketFactory());
urlConnection.connect();

不同的库可能有不同的系统提供SSLSocketFactorySSLContext。例如,如果您正在使用JAX-RS,您可以创建一个使用SSLContext的REST客户端:

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

最新更新