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

Spring RestTemplate调用HTTPS*而不使用*HttpClient

诸葛茂勋
2023-03-14

尝试使用RestTemboard使用服务器证书作为要进行调用的客户端证书进行REST调用。

不要问我为什么:-),但我不想使用Apache的HttpClient。我只是觉得太过分了。

我见过一些代码,它们使用常规JDK的SSLContext系统范围内进行设置,即设置SSLContext和调用SSLContext。设置默认值(sslContext)如下代码所示:

// ... keymanagers, trustmanagers are omitted here
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(keymanagers, trustmanagers, new SecureRandom());
SSLContext.setDefault(sslContext);

然而,我在这里看到了GitHub的评论(https://github.com/spring-projects/spring-boot/issues/6493)这说明将SSLContext设置为默认值并不是一个好主意。

所以,我的问题是:除了必须使用HttpClient之外,是否有办法使用上面在RestTemboard设置中的代码片段中配置的sslContext

共有1个答案

沈皓君
2023-03-14

您可以通过执行以下操作来覆盖restTemplate中的默认requestFactory

restTemplate.setRequestFactory(new MyCustomRequestFactory());

在这里查看org.springframework.http.client.SkipSslVerficationHttpRequest estFactory,了解在请求工厂中设置SSLContext的示例。

 类似资料:
  • 我的eclipse安装始终使用https协议下载存储库结构。问题是我的合作代理不允许我在这个url上使用https。如何强制m2e使用http? 我尝试了m2e的不同外部maven安装,但没有成功。只有在使用CLI中的外部maven(使用http)时,它才起作用。

  • 我正在尝试构建react原生android应用程序,作为一种依赖,我看到我有gradle,但它无法在构建时加载。错误消息: 问题很明显,我坐在公司代理后面,阻止任何像这样的错误HTTPS连接。所以我的问题是:如何强制gradle使用HTTP加载这些文件?这些属性应该放在哪里(哪一个gradle文件,即gradle.properties)? P. S.我已经在gradle属性文件中设置了这些: 任何

  • 我有一个Spring Boot 1.3.0应用程序,其中包含Spring Security OAuth,作为一种SSO集成。 问题是,应用程序运行在非SSL环境中,负载平衡器(F5)后面有一个非标准端口,强制使用SSL,OAuth提供程序要求将所有重定向URL注册为https,但Spring OAuth客户端(使用@EnableOAuthso自动配置)将仅使用以下URL重定向到OAuth提供程序。

  • 我试图在两个docker容器之间建立连接。一个是nginx服务器Symfony应用程序,另一个是Mercure。 我的应用程序工作正常,docker-comment构建也没有任何问题。问题是,当我试图测试它,并试图从Symfony应用程序发布一些东西到Mercure时,我得到了500个内部服务器错误,其中包含“未能发送更新”消息。 在堆栈跟踪中,我可以看到TransportException错误,

  • 本文向大家介绍使用https,$_SERVER['HTTPS']却不等于on?,包括了使用https,$_SERVER['HTTPS']却不等于on?的使用技巧和注意事项,需要的朋友参考一下 目前有两台服务器,都是http和https协议共存。 但是部分程序遇到一些问题,因为PHP中有根据$_SERVER['HTTPS']来设置环境常量。 一台服务器可以拿到值为on,另外一台却是NULL。 一步步

  • 问题内容: 我无法使用来自ipad / iphone的ajax进行https POST呼叫。实际上,我正在尝试在我的PhoneGap应用程序中调用它。 您能在这方面帮助我吗? 问题答案: 您尚未说明服务器上的证书种类。我怀疑它是自签名的。我也有同样的问题。不能对具有自签名证书的服务器进行Ajax调用,这是SDK的限制。您必须编写一个Objective C插件才能解决此问题。