返回顶部
首页 > 资讯 > 精选 >RestTemplate如何添加HTTPS证书
  • 290
分享到

RestTemplate如何添加HTTPS证书

2023-06-25 12:06:09 290人浏览 泡泡鱼
摘要

小编给大家分享一下RestTemplate如何添加https证书,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!RestTemplate添加HttpS证书证书的下载

小编给大家分享一下RestTemplate如何添加https证书,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

RestTemplate添加HttpS证书

证书的下载

先通过浏览器将未签名验证的证书保存到本地, 点击 不安全–> 证书–> 详细信息 --> 复制到文件 然后默认选择 起一个文件名 , 保存即可, 比如我将证书保存在了桌面 , 命名为 xx.cer

证书导入jdk

若是想要在项目中用到证书 , 需要先将证书导入到JDK的证书管理里面, 导入命令如下:

keytool -import -noprompt -trustcacerts -alias xx -keystore /home/oracle/jdk1.8.0_181/jre/lib/security/cacerts -file xx.cer

对上面的命令做一个解释 此命令是在linux服务器内执行的 , 在执行这个命令的时候就在证书所在的文件夹下打开终端, 然后命名一下别名 , 别名最好和证书名称一致 , 如上, 都叫xx , 另外将上面命令中的JDK路径换成你的实际路径即可

上面命令输入完毕后回车 , 会让你写密码啥的 , 就写 changeit 若是changeit不行就写 changeme 一般的 chageit 就可以了

生成keystore文件

只将证书导入JDK就可以了吗? 我这里验证的是不可以的, 必须还要生成对应的 keystore文件

keystore文件生成命令: keytool -import -file xx.cer -keystore xx.keystore

对上面的命令做一个解释 , 该命令也是在linux下执行的 ,当然windows下也可以的 , 执行的时候也是在证书所在文件夹进行的 , 若是提示权限不够 那就再加sudo , windows就以管理员的身份执行

回车后又会让你输入密码 , 那么就还对应着输入 chageit 即可

执行完毕后会在当前路径下再产生一个xx.keystore文件

项目中配置

将上面上传的xx.keystore 文件文件复制到你的项目的类路径下

将下面的这个restTemplate的配置复制到你的项目中去,其中里面用到了一个httpConverter 这个是做JSON格式转换的, 和HTTPS没太大关系 , 若是不需要就将它以及相关代码删掉即可

package com.abc.air.config;import java.io.File;import java.io.FileInputStream;import java.io.InputStream;import java.security.KeyManagementException;import java.security.KeyStore;import java.security.KeyStoreException;import java.security.NoSuchAlGorithmException;import java.security.cert.X509Certificate;import java.util.ArrayList;import java.util.List;import org.apache.http.config.ReGIStry;import org.apache.http.config.RegistryBuilder;import org.apache.http.conn.Socket.ConnectionSocketFactory;import org.apache.http.conn.socket.PlainConnectionSocketFactory;import org.apache.http.conn.ssl.NoopHostnameVerifier;import org.apache.http.conn.ssl.SSLConnectionSocketFactory;import org.apache.http.impl.client.CloseableHttpClient;import org.apache.http.impl.client.HttpClients;import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;import org.apache.http.ssl.SSLContextBuilder;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.core.io.ClassPathResource;import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;import org.springframework.http.converter.HttpMessageConverter;import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;import org.springframework.http.converter.xml.MappingJackson2XmlHttpMessageConverter;import org.springframework.WEB.client.RestTemplate;import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;@Configurationpublic class RestTemplateConfig {    @Autowired    private FastJsonHttpMessageConverter httpMessageConverter;    @Bean    RestTemplate restTemplate() throws Exception {    HttpComponentsClientHttpRequestFactory factory = new                                                                HttpComponentsClientHttpRequestFactory();        factory.setConnectionRequestTimeout(5 * 60 * 1000);        factory.setConnectTimeout(5 * 60 * 1000);        factory.setReadTimeout(5 * 60 * 1000);        // https        SSLContextBuilder builder = new SSLContextBuilder();        KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());        ClassPathResource resource = new ClassPathResource("nonghang.keystore");        InputStream inputStream = resource.getInputStream();        keyStore.load(inputStream, null);        SSLConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory(builder.build(), NoopHostnameVerifier.INSTANCE);        Registry<ConnectionSocketFactory> registry = RegistryBuilder.<ConnectionSocketFactory>create()                .register("http", new PlainConnectionSocketFactory())                .register("https", socketFactory).build();        PoolingHttpClientConnectionManager phccm = new PoolingHttpClientConnectionManager(registry);        phccm.setMaxTotal(200);        CloseableHttpClient httpClient = HttpClients.custom().setSSLSocketFactory(socketFactory).setConnectionManager(phccm).setConnectionManagerShared(true).build();        factory.setHttpClient(httpClient);        RestTemplate restTemplate = new RestTemplate(factory);        List<HttpMessageConverter<?>> converters = restTemplate.getMessageConverters();            ArrayList<HttpMessageConverter<?>> convertersValid = new ArrayList<>();            for (HttpMessageConverter<?> converter : converters) {                if (converter instanceof MappingJackson2HttpMessageConverter ||                    converter instanceof MappingJackson2XmlHttpMessageConverter) {                    continue;                }                convertersValid.add(converter);            }            convertersValid.add(httpMessageConverter);            restTemplate.setMessageConverters(convertersValid);        inputStream.close();        return restTemplate;    }}

到此配置完毕!

RestTemplate访问HTTPS

本文简述一下怎么使用restTemplate来访问https。

Maven

<dependency>            <groupId>org.apache.httpcomponents</groupId>            <artifactId>httpclient</artifactId>            <version>4.5.3</version>        </dependency>

这里使用httpclient的factory

配置

@Bean    public RestTemplate restTemplate() throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException {        TrustStrategy acceptingTrustStrategy = (X509Certificate[] chain, String authType) -> true;        SSLContext sslContext = org.apache.http.ssl.SSLContexts.custom()                .loadTrustMaterial(null, acceptingTrustStrategy)                .build();        SSLConnectionSocketFactory csf = new SSLConnectionSocketFactory(sslContext);        CloseableHttpClient httpClient = HttpClients.custom()                .setSSLSocketFactory(csf)                .build();        HttpComponentsClientHttpRequestFactory requestFactory =                new HttpComponentsClientHttpRequestFactory();        requestFactory.setHttpClient(httpClient);        RestTemplate restTemplate = new RestTemplate(requestFactory);        return restTemplate;    }

验证

@Test    public void testHttps(){        String url = "https://free-api.heweather.com/v5/forecast?city=CN101080101&key=5c043b56de9f4371b0c7f8bee8f5b75e";        String resp = restTemplate.getForObject(url, String.class);        System.out.println(resp);    }

以上是“RestTemplate如何添加HTTPS证书”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: RestTemplate如何添加HTTPS证书

本文链接: https://lsjlt.com/news/304344.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • RestTemplate如何添加HTTPS证书
    小编给大家分享一下RestTemplate如何添加HTTPS证书,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!RestTemplate添加HTTPS证书证书的下载...
    99+
    2023-06-25
  • RestTemplate添加HTTPS证书全过程解析
    目录RestTemplate添加HTTPS证书证书的下载证书导入JDK生成keystore文件项目中配置RestTemplate访问HTTPSmaven配置验证RestTemplat...
    99+
    2024-04-02
  • 如何使用RestTemplate调用https接口跳过证书验证
    这篇文章将为大家详细讲解有关如何使用RestTemplate调用https接口跳过证书验证,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。RestTemplate调用https接口跳过证书验证import&...
    99+
    2023-06-25
  • springboot添加SSL证书,支持https与http
    文章目录 一、添加ssl证书二、配置文件三、配置同时支持HTTPS与HTTP四、启动 一、添加ssl证书 将证书文件放在/resource目录下 二、配置文件 修改配置文件 server: ssl: # ...
    99+
    2023-08-30
    http spring boot ssl
  • docker 如何添加证书
    1.升级处理:sudo apt-get update 缺包,包的版本旧等问题可以由此解决,如果不是的话那就是缺失认证,需要生成自己的认证证书。 2.生成自己的认证证书 先建一个文件夹...
    99+
    2024-04-02
  • 使用RestTemplate调用https接口跳过证书验证
    目录RestTemplate调用https接口跳过证书验证RestTemplate访问https遇到SSL证书验证错误添加Https证书下载证书导入证书生成keystore文件项目中...
    99+
    2024-04-02
  • SpringBoot如何添加SSL证书
    这篇文章将为大家详细讲解有关SpringBoot如何添加SSL证书,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 一、先进行域名的购买域名购买完毕,进行DNS的解析,我用的是阿里云的,服务器与域...
    99+
    2023-06-15
  • 如何获取网站的HTTPS证书
    如何获取网站的HTTPS证书,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。如何获取网站的HTTPS证书如果你的网站需要收集敏感信息(包括电子邮件和密码等),那么就需要保证网站的...
    99+
    2023-06-04
  • 如何申请免费SSL证书以及实现HTTPS加密
    如何申请免费SSL证书以及实现HTTPS加密,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。每个互联网用户在访问网站时都会传输信息。这些信息通常很敏感,如付款详细...
    99+
    2023-06-04
  • SpringBoot添加SSL证书的方法
     一、先进行域名的购买 域名购买完毕,进行DNS的解析,我用的是阿里云的,服务器与域名都同时使用的阿里云 记录值这里填你的服务器的IP 地址 二、申请SSL证书 阿里云...
    99+
    2024-04-02
  • win10怎么添加证书信任
    在Windows 10上添加证书信任,您可以按照以下步骤操作:1. 打开“控制面板”。您可以通过在开始菜单中搜索并选择“控制面板”来...
    99+
    2023-08-31
    win10
  • https OpenSSL如何生成root CA及签发证书
    https OpenSSL如何生成root CA及签发证书,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、openssl 简介    &n...
    99+
    2023-06-04
  • 如何部署SSL证书,实现https访问呢?
    如何部署SSL证书,实现https访问呢?HTTPS是一种用于加密网站通信并确保信息安全的协议。部署SSL证书是实现HTTPS访问的关键步骤之一。本文将介绍如何部署SSL证书,以确保网站的安全性和信誉度。 一、获取SSL证书 要部署SSL...
    99+
    2024-01-24
    ssl证书 如何部署SSL证书,实现https访问呢? 部署ssl证书 SSL知识
  • 网站https安全证书过期如何解决
    如果网站的HTTPS安全证书过期,可以按照以下步骤解决: 联系网站的管理员或者运营者,让他们尽快更新证书。 如果无法联系到网...
    99+
    2024-05-08
    服务器
  • Django项目如何获得SSL证书与配置HTTPS
    目录为什么你的网站需要支持HTTPS协议?如何在生产环境中部署Django项目时配置HTTPS?第一步:购买下载SSL证书第二步:修改Nginx配置信息第三步&nbs...
    99+
    2024-04-02
  • Java如何实现通过证书访问Https请求
    目录Java通过证书访问Https请求创建证书管理器类调用测试工具类https请求绕过证书检测Java通过证书访问Https请求 创建证书管理器类 import java.io.Fi...
    99+
    2024-04-02
  • 如何申请Let's Encrypt通配符HTTPS证书
    这篇文章主要介绍“如何申请Let's Encrypt通配符HTTPS证书”,在日常操作中,相信很多人在如何申请Let's Encrypt通配符HTTPS证书问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对...
    99+
    2023-06-19
  • Centos6.3下Apache怎么配置基于加密的认证https加密证书访问
    这篇文章主要介绍“Centos6.3下Apache怎么配置基于加密的认证https加密证书访问 ”,在日常操作中,相信很多人在Centos6.3下Apache怎么配置基于加密的认证https加密证书访问 问题上存在疑惑,小编查阅了各式资料,...
    99+
    2023-06-10
  • 网站添加SSL证书有哪些优点
    网站添加SSL证书的优点有:1、可以避免网络中间人攻击网站,防止攻击者窃取用户登录凭证或透支卡数据信息;2、能与其他网站建立信任,保证客户的隐私保护和维护他们的信息内容;3、能提高网站搜索引擎的排名,有利于网站发展;4、能以多种方式维护PC...
    99+
    2024-04-02
  • 宝塔建站域名怎么添加证书
    在宝塔建站中添加域名ssl证书的方法首先,登录宝塔,进入宝塔操作界面;在界面中,选择“网站”选项卡,进入宝塔站点列表;在站点列表中,选择需要添加证书的网站,点击设置;打开站点配置窗口后,选择“SSL”选项卡;进入SSL配置界面,点击“其他证...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作