国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

解決遠(yuǎn)程調(diào)用三方接口:javax.net.ssl.SSLHandshakeException報(bào)錯(cuò)

這篇具有很好參考價(jià)值的文章主要介紹了解決遠(yuǎn)程調(diào)用三方接口:javax.net.ssl.SSLHandshakeException報(bào)錯(cuò)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、前言

最近在對(duì)接騰訊會(huì)議API接口,在鑒權(quán)完成后開始調(diào)用對(duì)方的接口,在此過程中出現(xiàn)調(diào)用報(bào)錯(cuò):javax.net.ssl.SSLHandshakeException。

二、出現(xiàn)原因

當(dāng)你在進(jìn)行https請(qǐng)求時(shí),JDK中不存在三方服務(wù)的信任證書,導(dǎo)致出現(xiàn)錯(cuò)誤javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX路徑構(gòu)建失敗。

三、解決方法

1、獲取根證書安裝證書到你的JRE的Java cacerts中(安裝證書到PATHTOYOURJDK/JRE/lib目錄/ cacerts中)。

2、忽略SSL證書的校驗(yàn)。

這里因?yàn)楹芏嗲闆r沒有證書,所以采用第二種方案,在你的代碼中進(jìn)行忽略SSL證書校驗(yàn)。

四、代碼

這里要區(qū)分你使用的是那種方式調(diào)用三方服務(wù)(RestTemplate 、OkHttpClient)。

1、RestTemplate

package com.hikvision.meeting.config;

import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.conn.ssl.TrustStrategy;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;

import javax.net.ssl.*;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;


/**
 * @author dongliang7
 * @projectName 
 * @ClassName Config2RestTemplate.java
 * @description: 跳過證書效驗(yàn)
 * @createTime 2021年11月23日 09:59:00
 */
@Configuration
public class Config2RestTemplate {

    @Bean
    public RestTemplate restTemplate() throws Exception {
        TrustStrategy acceptingTrustStrategy = (X509Certificate[] chain, String authType) -> true;

        SSLContext sslContext = org.apache.http.ssl.SSLContexts.custom()
                .loadTrustMaterial(null, acceptingTrustStrategy)
                .build();

//        SSLConnectionSocketFactory csf = new SSLConnectionSocketFactory(sslContext);
        SSLConnectionSocketFactory csf = new SSLConnectionSocketFactory(createIgnoreVerifySSL(),
                // 指定TLS版本
                null,
                // 指定算法
                null,
                // 取消域名驗(yàn)證
                new HostnameVerifier() {
                    @Override
                    public boolean verify(String string, SSLSession ssls) {
                        return true;
                    }
                });

        CloseableHttpClient httpClient = HttpClients.custom()
                .setSSLSocketFactory(csf)
                .build();

        HttpComponentsClientHttpRequestFactory requestFactory =
                new HttpComponentsClientHttpRequestFactory();

        requestFactory.setHttpClient(httpClient);
        requestFactory.setReadTimeout(60 * 1000);// ms
        requestFactory.setConnectTimeout(60 * 1000);// ms
        // 該代碼的意思是請(qǐng)求工廠類是否應(yīng)用緩沖請(qǐng)求正文內(nèi)部,默認(rèn)值為true,當(dāng)post或者put大文件的時(shí)候會(huì)造成內(nèi)存溢出情況,設(shè)置為false將數(shù)據(jù)直接流入底層HttpURLConnection
        requestFactory.setBufferRequestBody(false);
        RestTemplate restTemplate = new RestTemplate(requestFactory);
        return restTemplate;
    }

    /**
     * 跳過證書效驗(yàn)的sslcontext
     *
     * @return
     * @throws Exception
     */
    private static SSLContext createIgnoreVerifySSL() throws Exception {
        SSLContext sc = SSLContext.getInstance("TLS");

        // 實(shí)現(xiàn)一個(gè)X509TrustManager接口,用于繞過驗(yàn)證,不用修改里面的方法
        X509TrustManager trustManager = new X509TrustManager() {
            @Override
            public void checkClientTrusted(X509Certificate[] paramArrayOfX509Certificate,
                                           String paramString) throws CertificateException {
            }

            @Override
            public void checkServerTrusted(X509Certificate[] paramArrayOfX509Certificate,
                                           String paramString) throws CertificateException {
            }

            @Override
            public X509Certificate[] getAcceptedIssuers() {
                return null;
            }
        };
        sc.init(null, new TrustManager[] { trustManager }, null);
        return sc;
    }
}

2、OkHttpClient

package com.tencent.wemeet.gateway.restapisdk.util;

import lombok.extern.slf4j.Slf4j;
import okhttp3.OkHttpClient;

import javax.net.ssl.*;
import java.security.KeyStore;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
import java.util.concurrent.TimeUnit;

/**
 * @author dongliang7
 * @projectName tenxun-meeting-api
 * @ClassName SSLSocketClient.java
 * @description: 創(chuàng)建 OkHttpClient 不進(jìn)行SSL(證書)驗(yàn)證
 * @createTime 2021年11月19日 09:50:00
 */
@Slf4j
public class SSLSocketClient {

    public static OkHttpClient getUnsafeOkHttpClient() {
        try {
            // 創(chuàng)建不驗(yàn)證證書鏈的信任管理器
            final TrustManager[] trustAllCerts = new TrustManager[]{
                    new X509TrustManager() {
                        @Override
                        public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) {}
                        @Override
                        public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) {}
                        @Override
                        public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                            return new java.security.cert.X509Certificate[]{};
                        }
                    }
            };
            if (trustAllCerts.length != 1 || !(trustAllCerts[0] instanceof X509TrustManager)) {
                throw new IllegalStateException("Unexpected default trust managers:" + Arrays.toString(trustAllCerts));
            }
            X509TrustManager x509TrustManager = (X509TrustManager) trustAllCerts[0];

            // 安裝全信任信任管理器
            final SSLContext sslContext = SSLContext.getInstance("SSL");
            sslContext.init(null, trustAllCerts, new java.security.SecureRandom());
            // 使用我們完全信任的管理器創(chuàng)建 ssl 套接字工廠
            final SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();

            OkHttpClient.Builder builder = new OkHttpClient.Builder()
                    .connectTimeout(60 , TimeUnit.SECONDS).readTimeout(60 , TimeUnit.SECONDS).writeTimeout(120 , TimeUnit.SECONDS);
            builder.sslSocketFactory(sslSocketFactory , x509TrustManager);
            builder.hostnameVerifier(new HostnameVerifier() {
                @Override
                public boolean verify(String hostname, SSLSession session) {
                    return true;
                }
            });
            OkHttpClient okHttpClient = builder.build();
            return okHttpClient;
        } catch (Exception e) {
            log.error("創(chuàng)建OkHttpClient不進(jìn)行SSL(證書)驗(yàn)證失?。簕}", e.getMessage());
            throw new RuntimeException(e);
        }
    }
}

獲取OkHttpClient :

//創(chuàng)建 OkHttpClient 不進(jìn)行SSL(證書)驗(yàn)證
    private static final OkHttpClient okHttpClient = SSLSocketClient.getUnsafeOkHttpClient();

在minio中的運(yùn)用

 minioClient = MinioClient.builder()
                        .endpoint(minioUrl, Integer.parseInt(minioUrl.substring(minioUrl.lastIndexOf(":")+1,minioUrl.length()-1)),true)
                        .credentials(minioName, minioPass)
                        .httpClient(okHttpClient)
                        .build();

轉(zhuǎn)載自:https://www.cnblogs.com/dongl961230/p/15594627.html文章來源地址http://www.zghlxwxcb.cn/news/detail-539639.html

到了這里,關(guān)于解決遠(yuǎn)程調(diào)用三方接口:javax.net.ssl.SSLHandshakeException報(bào)錯(cuò)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 解決javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException

    Java Spring應(yīng)用發(fā)送數(shù)據(jù)報(bào)如下問題。 用httpclient訪問https資源時(shí),會(huì)出現(xiàn)異常,與環(huán)境也有關(guān)系,有些機(jī)器請(qǐng)求正常。 1.復(fù)制 附錄 代碼到文本文件中,改名為InstallCert.java。然后在命令行中執(zhí)行命令,編譯InstallCert.java: ?2.再執(zhí)行以下命令: 說明:網(wǎng)址處不需要輸入(https://)信

    2024年02月16日
    瀏覽(23)
  • 解決報(bào)錯(cuò):javax.net.ssl.SSLHandshakeException: No appropriate protocol

    解決報(bào)錯(cuò):javax.net.ssl.SSLHandshakeException: No appropriate protocol

    使用對(duì)象存儲(chǔ)進(jìn)行文件上傳時(shí)報(bào)錯(cuò) 注:該問題只要需要用到http的都有可能出現(xiàn),不是只針對(duì)對(duì)象存儲(chǔ) jdk 的 java.security 文件存在配置問題 1、查看當(dāng)前服務(wù)器使用的 jdk 版本 命令: java -version 2、查看該jdk的安裝目錄 命令: find / -name java.security 這里選擇通過搜索 java.security 來

    2024年01月24日
    瀏覽(22)
  • javax.net.ssl.SSLHandshakeException No appropriate protocol報(bào)錯(cuò)解決方案

    javax.net.ssl.SSLHandshakeException No appropriate protocol報(bào)錯(cuò)解決方案

    用java開發(fā)了一個(gè)簡單的***發(fā)送郵件***的程序,本地運(yùn)行正常,但是上傳到服務(wù)器就出現(xiàn)報(bào)錯(cuò): 方案一 [原文參考地址](javax.net.ssl.SSLHandshakeException: No appropriate protocol報(bào)錯(cuò)解決_藍(lán)緣的博客-CSDN博客) ? 1、找到j(luò)dk目錄/jre/lib/security/java.security,去掉jdk.tls.disabledAlgorithm中的SSLv3、T

    2023年04月15日
    瀏覽(21)
  • 解決 javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX 路徑構(gòu)建失敗

    解決 javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX 路徑構(gòu)建失敗

    之前一個(gè)項(xiàng)目使用Java請(qǐng)求客戶提供的接口時(shí),返回報(bào)錯(cuò)如下: javax.net.ssl.SSLHandshakeException 錯(cuò)誤通常表示 SSL 握手失敗。這意味著在建立 SSL 連接時(shí),Java 安全管理器無法構(gòu)建一個(gè)有效的證書路徑,從而無法找到有效的證書路徑來驗(yàn)證目標(biāo)站點(diǎn)的證書,觸發(fā)此錯(cuò)誤信息的調(diào)用方

    2024年02月04日
    瀏覽(23)
  • 解決 javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path buildin

    解決 javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path buildin

    接口訪問https的網(wǎng)址時(shí),報(bào)以下錯(cuò)誤: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 原因: JAVA的證書庫里已經(jīng)帶了startssl ca證書,而nginx默認(rèn)不帶s

    2024年02月15日
    瀏覽(45)
  • javax.net.ssl.SSLHandshakeException

    解決辦法升級(jí)jdk版本或者修改jdk文件 1、對(duì)于服務(wù)器來說要支持域名并且不進(jìn)行ssl證書校驗(yàn),需要升級(jí)到j(luò)dk1.8的201版本及以上 2、修改…JavaJDKjrelibsecurity目錄下java.security文件,添加下面語句到文件內(nèi)容中

    2024年02月11日
    瀏覽(21)
  • https請(qǐng)求報(bào)錯(cuò):javax.net.ssl.SSLHandshakeException:Received fatal alert: unrecognized_name 的解決過程

    https請(qǐng)求報(bào)錯(cuò):javax.net.ssl.SSLHandshakeException:Received fatal alert: unrecognized_name 的解決過程

    提示:本地調(diào)試正常: 項(xiàng)目場(chǎng)景: 部署到WebSphere服務(wù)器上就會(huì)報(bào)上述錯(cuò)誤; 一度認(rèn)為是WebSphere服務(wù)器上的配置有問題,經(jīng)過多次償試,最終解決問題發(fā)現(xiàn)和服務(wù)配置無關(guān); 測(cè)試環(huán)境使用HttpClient發(fā)送https請(qǐng)求下載附件時(shí)報(bào)錯(cuò): 提示:項(xiàng)目地址是http,需要訪問的地址是https: 因?yàn)樵L問

    2024年02月05日
    瀏覽(35)
  • javax.net.ssl.SSLHandshakeException: No appropriate protocol

    javax.net.ssl.SSLHandshakeException: No appropriate protocol

    報(bào)錯(cuò): 解釋代碼 這是一個(gè)Spring Boot應(yīng)用程序的配置文件中的一行代碼,用于設(shè)置數(shù)據(jù)庫連接信息。具體解釋如下: spring.datasource.url :這是Spring Boot中用于配置數(shù)據(jù)源URL的屬性。 jdbc:mysql://ip:3306/dbuser :這是JDBC URL,用于指定數(shù)據(jù)庫的類型(MySQL)、主機(jī)地址(ip)、端口號(hào)(

    2024年02月20日
    瀏覽(22)
  • javax.net.ssl.SSLHandshakeException: PKIX path building failed

    javax.net.ssl.SSLHandshakeException: PKIX path building failed

    錯(cuò)誤信息 本地環(huán)境缺少ssl證書 一、下載證書 ???????? 可以通過瀏覽器下載;也可以使用命令行 1、瀏覽器 查看證書,直接導(dǎo)出即可 2、命令行 openssl s_client -connect 目標(biāo)網(wǎng)址:端口號(hào) /dev/null | sed -ne \\\'/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p\\\' 證書名.crt 二、導(dǎo)入證書 1. 將證書移動(dòng)到

    2023年04月22日
    瀏覽(24)
  • 證書異常導(dǎo)致:javax.net.ssl.SSLHandshakeException: sun.security.validator

    證書異常導(dǎo)致:javax.net.ssl.SSLHandshakeException: sun.security.validator

    ????????當(dāng)我們應(yīng)用程序 訪問設(shè)有https證書的服務(wù) 時(shí),若 JRE未安裝指定證書 則會(huì)提示標(biāo)題的報(bào)錯(cuò),此時(shí)有 兩種方式 解決該問題: ? ? ? ?按照實(shí)際場(chǎng)景,可從信息科、網(wǎng)絡(luò)處等部門協(xié)調(diào)獲取證書,也可以直接從安裝證書的電腦上,通過瀏覽器下載證書,本文介紹后一種

    2024年01月17日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包