首页 > 其他分享 >创建一个配置为信任所有HTTPS连接的RestTemplate实例,不验证服务器的SSL证书。这个示例主要用于测试或开发环境,对接第三方接口时一直提示SSL证书校验异常,可通过下面的方法绕过校验:

创建一个配置为信任所有HTTPS连接的RestTemplate实例,不验证服务器的SSL证书。这个示例主要用于测试或开发环境,对接第三方接口时一直提示SSL证书校验异常,可通过下面的方法绕过校验:

时间:2024-05-28 09:35:00浏览次数:21  
标签:证书 创建 RestTemplate 校验 blog SSL 实例

这个配置类使用背景:可参考博客:

springboot 使用restTemplate 发送https请求 忽略ssl证书

https://jsonll.blog.csdn.net/article/details/129191580?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-129191580-blog-83038086.235%5Ev43%5Epc_blog_bottom_relevance_base2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-129191580-blog-83038086.235%5Ev43%5Epc_blog_bottom_relevance_base2&utm_relevant_index=2



public class RestTemplateUtilTool { public static RestTemplate restTemplateHttps() { RestTemplate restTemplateTool = null; try { TrustStrategy acceptingTrustStrategy = (chain, authType) -> true; SSLContext sslContext = SSLContexts.custom().loadTrustMaterial(null, acceptingTrustStrategy).build(); SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE); HttpClientBuilder clientBuilder = HttpClients.custom(); CloseableHttpClient httpClient = clientBuilder.setSSLSocketFactory(sslsf).build(); HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(); requestFactory.setHttpClient(httpClient); restTemplateTool = new RestTemplate(requestFactory); } catch (Exception e) { e.printStackTrace(); } return restTemplateTool; }

这个RestTemplateUtil类中的restTemplateHttps方法是为了创建一个配置为信任所有HTTPS连接的RestTemplate实例。让我为你逐步解释它都在做什么:

  1. 定义变量:

    • RestTemplate restTemplate = null;: 初始化一个RestTemplate变量,并将其设置为null。
  2. 设置信任所有证书的TrustStrategy:

    • TrustStrategy acceptingTrustStrategy = (chain, authType) -> true;: 这是一个Lambda表达式,它定义了一个TrustStrategy,该策略简单地返回true,表示它信任所有证书,无论它们是否有效或来自受信任的颁发机构。
  3. 创建SSL上下文:

    • 使用SSLContexts.custom().loadTrustMaterial(null, acceptingTrustStrategy).build();,基于前面定义的信任策略,创建一个SSLContext实例。
  4. 创建SSL连接套接字工厂:

    • 使用SSLConnectionSocketFactory,它使用前面创建的SSLContext和一个NoopHostnameVerifier(不执行任何主机名验证)。这意味着HTTPS连接不会检查主机名是否与证书中的主机名匹配。
  5. 配置HttpClientBuilder:

    • 使用HttpClients.custom()创建一个HttpClientBuilder实例。
    • 使用setSSLSocketFactory(sslsf)将之前创建的SSLConnectionSocketFactory设置为HTTP客户端的SSL套接字工厂。
    • 使用build()方法构建CloseableHttpClient实例。
  6. 配置RestTemplate的HTTP请求工厂:

    • 创建一个HttpComponentsClientHttpRequestFactory实例。
    • 使用setHttpClient(httpClient)方法将之前创建的CloseableHttpClient实例设置为请求工厂的HTTP客户端。
  7. 创建RestTemplate实例:

    • 使用配置好的HttpComponentsClientHttpRequestFactory实例来创建一个新的RestTemplate实例。
  8. 异常处理:

    • 如果在上面的任何步骤中发生异常,它都会被捕获并打印到标准错误输出(e.printStackTrace())。
  9. 返回RestTemplate实例:

    • 最后,方法返回配置好的RestTemplate实例。如果发生异常,它将返回null(这通常不是一个好主意,因为调用者可能会在没有检查null的情况下使用这个值,从而导致NullPointerException)。

注意:这种方法应该谨慎使用,因为它会使你的应用程序容易受到中间人攻击(MITM)。在生产环境中,你应该始终验证服务器的SSL证书。这个示例主要用于测试或开发环境,其中你可能需要绕过SSL证书验证。

    可见链接:

RestTemplete 忽略安全证书

https://blog.csdn.net/nmjhehe/article/details/83038086?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-1-83038086-blog-117602595.235^v43^pc_blog_bottom_relevance_base2&spm=1001.2101.3001.4242.2&utm_relevant_index=4

标签:证书,创建,RestTemplate,校验,blog,SSL,实例
From: https://www.cnblogs.com/isme-zjh/p/18217113

相关文章

  • WindowsCA证书服务(三)证书的基础知识
    CA证书申请流程嫖个图吧。TLS/ssl发展 1、SSL3SSL3于1995年末发布,为了弥补先前协议版本的诸多弱点,SSL3从头开始设计了一套协议,并一直沿用到了最新版本的TLS。2、TLS1.0TLS1.0于1999年1月发布,3、TLS1.1TLS1.1于2006年4月发布。4、TLS1.2TLS1.2于2008年8月发布。5、T......
  • 详谈网安证书【CISP-PTE和CISP-PTS】方向
    PTE和PTS介绍CISP-PTE即注册信息安全专业人员渗透测试工程师认证,是由中国信息安全测评中心统一管理和规范的信息安全专业培训,是目前国内最为主流及被业界认可的专业攻防领域的资质培训。CISP-PTE目前是国内唯一针对网络安全渗透测试专业人才的资格认证,也是国家对信息安全人员......
  • nginx开启ssl并把http重定向到https
    前言Nginx是一个非常强大和流行的高性能Web服务器。本文讲解Nginx如何整合https并将http重定向到https。Nginx的特点(1)热启动:例如当修改配置文件后,不需要停止与启动就可以让配置生效,命令:nginx-sreload(2)高并发连接:顶住10万以上连接是没有问题的。(3)低内存消耗:在高性能的同时......
  • 使用OpenSSL生成证书和私钥文件
    使用OpenSSL生成证书和私钥文件,请按以下步骤操作:第1步:生成RSA私钥opensslgenrsa-outprivate_key.pem2048参数-out指定生成的私钥文件名,参数2048指定生成的RSA私钥以位为单位的长度,常见的取值:1024、2048、3072、4096,较长的密钥通常提供更高的安全性,但可能导致性能下降......
  • 宝塔:续签SSL证书报错Verification failed, domain name resolution error or verifica
    网站SSL证书因为忘了续签,导致过期后无法进行续签,点击续签验证报错:Verificationfailed,domainnameresolutionerrororverificationURLcannotbeaccessed! 解决方法:1.点击SSL,在面板中选择“Let'sEncrypt”,1.1、选择DNSVerification(Wildcardsupport);1.2、......
  • Sectigo SSL证书:全球SSL证书市场占有率最高品牌
    Sectigo(原ComodoCA)是全球SSL证书市场占有率最高的SSL证书品牌,由于其产品安全,价格低,受到大量用户的信任和欢迎。Sectigo旗下的SSL证书品牌包括Sectigo,PositiveSSL,SectigoEnterprise等。其SSL证书产品凭借卓越的安全性、广泛的认可度以及高效的服务,成为了众多企业和组......
  • 后端数据校验之Validator的使用方法
    https://blog.csdn.net/m0_72167535/article/details/1281733261.使用场景2.常用注解3.非空校验注解@NotNull、@NotEmpty、@NotBlank的区别和运用4.使用示例1.使用场景方法体在根据参数进行逻辑处理时,尝尝需要对参数进行校验,一些简单的校验可以使用Validator校验方法。2.常......
  • Nodejs 在实战中的校验用户信息(JWT、localStorage、Cookie)
    本文分别站在了客户端(reactjs)与服务端(nodejs)的角度,总结了整个用户校验过程各自的操作。一概念明晰1.1localStorage和Cookie都是存储数据的方式localStorage:储存在客户端(浏览器)本地Cookie:存储在服务端,安全性更高。(是一个HTTP请求标头,由服务器通过 Set-Cookie 设置,......
  • End Of Live OpenSSL 1.1 vs Slow OpenSSL 3.0
    EndOfLiveOpenSSL1.1vsSlowOpenSSL3.0【英文原文】你可能已经注意到,OpenSSL1.1.1系列将于下周一(2024年5月27日)达到寿命终止(EOL)……最明智的选择是尽快切换到3.0或3.1版本。当然,我们的mORMot2OpenSSL单元在1.1和3.x分支上运行,并在运行时自适应每个......
  • WindowsCA证书服务(二)IIS发放证书
    简介IIS,虽说没怎么用,asp也少了,即使有也DOCKER部署。但是和CA中心配合,最合适的就IIS了吧。安装安装windowsserver2022略加入域略安装IIS添加IIS 角色服务先默认 测试IIShttp 检查根证书运行certmgr,可以看到加入域的计算机是自动获取自己的根证书的。手动申......