• sun.security.validator.ValidatorException: PKIX path building failed


    问题说明

    在A系统使用HttpPost调用B系统的接口时报,B系统的ssl证书使用的是阿里云免费ssl证书,很郁闷调用别的系统都没有出现过这样的问题。

    sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

    /**
    	 * 发送post请求;带请求头和请求参数
    	 *
    	 * @param url 请求地址
    	 * @param headers 请求头集合
    	 * @param params 请求参数集合
    	 * @return
    	 * @throws Exception
    	 */
    	public static HttpClientResult doPostOa(String url, Map<String, String> headers, Map<String, String> params) throws Exception {
    		// 创建httpClient对象
    		CloseableHttpClient httpClient = HttpClients.createDefault();
    		// 创建http对象
    		HttpPost httpPost = new HttpPost(url);
    		/**
    		 * setConnectTimeout:设置连接超时时间,单位毫秒。
    		 * setConnectionRequestTimeout:设置从connect Manager(连接池)获取Connection
    		 * 超时时间,单位毫秒。这个属性是新加的属性,因为目前版本是可以共享连接池的。
    		 * setSocketTimeout:请求获取数据的超时时间(即响应时间),单位毫秒。 如果访问一个接口,多少时间内无法返回数据,就直接放弃此次调用。
    		 */
    		RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(CONNECT_TIMEOUT).setSocketTimeout(SOCKET_TIMEOUT).build();
    		httpPost.setConfig(requestConfig);
    		// 设置请求头
    		httpPost.setHeader("Cookie", "");
    		httpPost.setHeader("Connection", "keep-alive");
    		httpPost.setHeader("Accept", "application/json");
    		httpPost.setHeader("Accept-Language", "zh-CN,zh;q=0.9");
    		httpPost.setHeader("Accept-Encoding", "gzip, deflate, br");
    		httpPost.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36");
    //		packageHeader(headers, httpPost);
    
    		// 封装请求参数
    		packageParam(params, httpPost);
    
    		// 创建httpResponse对象
    		CloseableHttpResponse httpResponse = null;
    
    		try {
    			// 执行请求并获得响应结果
    			return getHttpClientResult(httpResponse, httpClient, httpPost);
    		} finally {
    			// 释放资源
    			release(httpResponse, httpClient);
    		}
    	}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45

    在这里插入图片描述

    第一步:去阿里云下载

    在这里插入图片描述
    在这里插入图片描述

    第二步:配置证书

    在这里插入图片描述

    // 证书路径
    System.setProperty("javax.net.ssl.trustStore", trustStore);
    // 证书密码
    System.setProperty("javax.net.ssl.trustStorePassword", trustStorePassword);
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    Find My资讯|首款支持苹果Find My电动滑板车发布
    如何解决响应结果中文乱码问题
    干货 | 一文搞定 pytest 自动化测试实战
    新生任务-1
    基于SSH的医院在线挂号系统设计与实现
    存储区域网络(SAN)之FC-SAN和IP-SAN的比较
    Linux 安装nginx
    在github上将private仓库转为public
    Kotlin 中的 inline 和nonline 和crossinline
    TS 入门指南
  • 原文地址:https://blog.csdn.net/qq_25983579/article/details/132908244