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

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

使用此配置类的背景:参见博客:

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

https://jsonll.blog.csdn.net/article/details/129191580?spm=1001.2101.3001.6650.1utm_Medium=distribute.pc_relev-brog-2%7EDefffffff AULT%7EBLOGCOMMENDFROMMBAIDU%7raate-129191580-BLOG-8308 08 6 .235%5EV43% 5Epc_blog_bottom_relevance_base2 深度_1 – utm_source=Distribution.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-129191580-blog-83038086.235%5Ev43%5Epc_blog_bottom_relevance_base2utm_relevant_index=2

公共类RestTemplateUtilTool {

公共静态RestTemplaterestTemplateHttps() {

RestTemplate RestTemplateTool=null;

尝试{

TrustStrategy AcceptTrustStrategy=(链, authType) – true;

SSLContext sslContext=SSLContexts.custom().loadTrustmaterial(null,acceptTrustStrategy).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 (异常e) {

e.printStackTrace();

}

返回restTemplateTool。

}

此RestTemplateUtil 类的restTemplateHttps 方法创建一个配置为信任所有HTTPS 连接的RestTemplate 实例。让我一步步解释它的作用。

定义变量:

RestTemplaterestTemplate=null; 初始化RestTemplate 变量并将其设置为null。 设置TrustStrategy: 以信任所有证书

TrustStrategy AcceptTrustStrategy=(chain, authType) – true; 这是定义TrustStrategy 的lambda 表达式,无论证书是否有效或来自受信任的颁发机构,该表达式都仅返回true 表示所有证书都是受信任的。创建SSL 上下文:

使用SSLContexts.custom().loadTrustmaterial(null,acceptTrustStrategy).build(); 根据您之前定义的信任策略创建SSLContext 实例。创建SSL 连接套接字工厂:

使用SSLConnectionSocketFactory。这将使用您之前创建的SSLContext 和NoopHostnameVerifier(不执行主机名验证)。这意味着HTTPS 连接不会检查主机名是否与证书中的主机名匹配。配置HttpClientBuilder:

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

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

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

如果在上述任何步骤中发生异常,它将被捕获并打印到标准错误(e.printStackTrace())。返回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_relev ance_base2s pm=10 01.2101。 3001.4242 .2utm_相关索引=4

#上面是关于创建一个RestTemplate实例,配置为信任所有HTTPS连接,并且不验证服务器的SSL证书。该示例主要用于测试或开发环境。连接第三方接口时,总是提示SSL证书验证异常。您可以通过以下方式避免验证:相关信息请访问官方网站。演示将优先。

原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/92586.html

(0)
CSDN的头像CSDN
上一篇 2024年6月27日
下一篇 2024年6月27日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注