当前位置: 首页 > 知识库问答 >
问题:

如何使用java或Spring库使rest服务仅使用TLS V1.2?

葛晔
2023-03-14

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

我知道,在java8中,我们可以选择使用java.security文件中的属性jdk.tls.disabled算法=SSLv3、RC4禁用旧版本的TLS和SSL。

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

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

共有1个答案

淳于恺
2023-03-14

创建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();

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

Client client = ClientBuilder.newBuilder().sslContext(sslContext).build();
 类似资料:
  • 我必须使用在HTTPs上运行的rest服务。制作人给了我证书和方法参数。您能告诉我如何使用该服务以及如何使用代码中的证书吗。我使用的是Spring4和Java8。请分享代码片段。

  • 问题内容: 我对Java单元测试非常陌生,听说Mockito框架对于测试非常有用。 我已经开发了一个REST Server(CRUD方法),现在我想对其进行测试,但是我不知道如何? 我什至不知道该测试程序应该如何开始。我的服务器应该在本地主机上运行,​​然后在该URL上进行调用(例如,本地主机:8888)? 这是我到目前为止尝试过的方法,但是我很确定这不是正确的方法。 这是方法的代码。 在此测试用

  • 我正在尝试使用雅虎气象服务的以下HTTPSendpoint: 雅虎天气服务API 我正在根据API进行一些特殊查询,以获取某些参数化位置的当前天气。 位置是一个提供属性“name”的类,该属性是位置的字符串描述,例如“New York”或“Manila”。 其他类只映射返回的对象。 执行时,我得到以下HTTP响应: 这意味着我无权从我所了解的内容访问资源。 如果我只是复制,URL效果很好 雅虎天气

  • 我想用apache-camel使用Jetty在http://localhost:8080/中并发一个rest服务。但是这段代码不会对API产生任何请求。我是apache-camel的初学者,我想使用不同的微服务。 日志: 此输出不产生LocalHost:8080中API的任何响应,但我认为路由是正确的。我想知道是否有其他方法使用Apache-Camel使用API rest的rest服务。

  • 问题内容: 谁能提供给我一个代码示例,以使用Spring Rest模板访问通过https保护的REST服务URL。 我有证书,用户名和密码。服务器端使用了基本身份验证,我想创建一个可以使用提供的证书,用户名和密码(如果需要)连接到该服务器的客户端。 问题答案:

  • 我正在寻找一个最佳实践和高效的解决方案,以确保通过REST与Web客户端应用程序通信的多个微服务的安全。 当前设置: 这些微服务是用Java制作的,带有Spring框架,并运行在Docker容器中。 客户端是一个Angular 2应用程序。 我创建了一个新的µ服务,它将充当“网关”,是我的web客户端和其他服务之间的唯一通信点。 我从远程身份验证API检索JWT加密令牌(让我们称之为LOCK) 我