最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java HTTPS請(qǐng)求失敗排查與證書(shū)導(dǎo)入的全過(guò)程

 更新時(shí)間:2025年08月03日 10:43:52   作者:XMYX-0  
在實(shí)際項(xiàng)目部署中,我們可能會(huì)遇到 Java 應(yīng)用調(diào)用某個(gè) HTTPS 接口失敗,特別是涉及公司網(wǎng)關(guān)或 WAF 防護(hù)設(shè)備時(shí),問(wèn)題常常集中在 SSL/TLS 證書(shū)驗(yàn)證失敗上,本文記錄一次完整的排查過(guò)程,并給出相關(guān)知識(shí)點(diǎn)補(bǔ)充,需要的朋友可以參考下

引言

在實(shí)際項(xiàng)目部署中,我們可能會(huì)遇到 Java 應(yīng)用調(diào)用某個(gè) HTTPS 接口失敗,特別是涉及公司網(wǎng)關(guān)(如 www.test.com)或 WAF 防護(hù)設(shè)備時(shí),問(wèn)題常常集中在 SSL/TLS 證書(shū)驗(yàn)證失敗上。本文記錄一次完整的排查過(guò)程,并給出相關(guān)知識(shí)點(diǎn)補(bǔ)充。

問(wèn)題背景

Java 應(yīng)用通過(guò) java.net.HttpURLConnection 或 RestTemplate 等方式請(qǐng)求接口 https://www.test.com,卻出現(xiàn)如下異常:

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

問(wèn)題初步分析

該錯(cuò)誤表明 Java 無(wú)法信任目標(biāo)服務(wù)的 HTTPS 證書(shū)。常見(jiàn)原因有:

  • 服務(wù)端證書(shū)是自簽名(Self-signed)
  • 服務(wù)端證書(shū)鏈不完整
  • Java SDK 默認(rèn)的 cacerts 信任庫(kù)中缺少對(duì)應(yīng)根證書(shū)或中間證書(shū)

特別注意:Java 不使用系統(tǒng)證書(shū)庫(kù),而是依賴(lài)其內(nèi)置的 cacerts 信任庫(kù)。

排查過(guò)程

查看目標(biāo)地址證書(shū)

openssl s_client -connect www.test.com:443 -showcerts

可以看到目標(biāo)返回了一整套證書(shū)鏈,包括:

  • 服務(wù)器證書(shū)(.crt)
  • 中間證書(shū)(可能有多個(gè))
  • 根證書(shū)(部分環(huán)境不提供)

導(dǎo)入證書(shū)

你可能收到運(yùn)維/安全團(tuán)隊(duì)提供的證書(shū)文件,如:

www.test.com_public.crt
www.test.com_chain.crt
www.test.com.key

我們只需要 .crt 文件,通常導(dǎo)入 www.test.com_chain.crt 即可。

導(dǎo)入命令如下(以 JDK 默認(rèn) cacerts 為例):

keytool -importcert \
  -trustcacerts \
  -alias test-gateway \
  -file www.test.com_chain.crt \
  -keystore $JAVA_HOME/lib/security/cacerts \
  -storepass changeit

驗(yàn)證證書(shū)是否導(dǎo)入成功

keytool -list -keystore $JAVA_HOME/lib/security/cacerts -storepass changeit | grep duola

輸出示例:

test-gateway, Jul 31, 2025, trustedCertEntry,

重啟應(yīng)用

# 這是走默認(rèn)的cacerts信任庫(kù)
java -jar my-test-project-0.0.1-SNAPSHOT.jar
# 下邊是指定我們導(dǎo)入的信任庫(kù)
java -Djavax.net.ssl.trustStore=$JAVA_HOME/lib/security/cacerts -Djavax.net.ssl.trustStorePassword=changeit -jar my-test-project-0.0.1-SNAPSHOT.jar

此時(shí)如果請(qǐng)求成功,即可初步判定問(wèn)題解決。

進(jìn)一步驗(yàn)證:是否真的是證書(shū)問(wèn)題?

如果你懷疑是 WAF、CDN 等中間設(shè)備阻斷,可以用兩種方式驗(yàn)證:

1. 瀏覽器訪問(wèn)

瀏覽器訪問(wèn) https://www.test.com 是否提示 “證書(shū)不受信任”?如果沒(méi)有,一般說(shuō)明服務(wù)器證書(shū)鏈?zhǔn)峭暾?,?Java 環(huán)境中仍然缺少相應(yīng)的中間證書(shū)。

2. 抓包工具驗(yàn)證(如 Charles、Wireshark)

查看 TLS 握手過(guò)程是否被中斷或中間設(shè)備返回自定義證書(shū)。

補(bǔ)充知識(shí)點(diǎn)

Java 中默認(rèn)信任庫(kù)在哪里?

  • 路徑:$JAVA_HOME/lib/security/cacerts
  • 默認(rèn)密碼:changeit

如果要?jiǎng)h除已導(dǎo)入證書(shū)?

keytool -delete -alias test-gateway -keystore $JAVA_HOME/lib/security/cacerts -storepass changeit

可否使用瀏覽器導(dǎo)出證書(shū)?

可以。在瀏覽器中點(diǎn)擊鎖圖標(biāo) → 查看證書(shū) → 導(dǎo)出為 .crt 文件,然后再導(dǎo)入 Java 信任庫(kù)。

總結(jié)

這次排查證明:

Java HTTPS 請(qǐng)求失敗,通常不是網(wǎng)絡(luò)或 WAF 問(wèn)題,而是 Java 缺少可信證書(shū)鏈中的中間證書(shū)。

解決方法也非常明確:

  1. 獲取目標(biāo)服務(wù)的完整證書(shū)鏈
  2. 將鏈中缺失的證書(shū)導(dǎo)入 Java 的 cacerts 信任庫(kù)
  3. 重啟應(yīng)用驗(yàn)證是否成功

如果你在實(shí)際部署中也遇到類(lèi)似問(wèn)題,不妨從證書(shū)入手,按圖索驥逐步排查。

生產(chǎn)上解決

證書(shū)等級(jí)提升,開(kāi)始是從阿里云上夠買(mǎi)個(gè)人免費(fèi)版證書(shū),提升證書(shū)等級(jí)就行了

以上就是Java HTTPS請(qǐng)求失敗排查與證書(shū)導(dǎo)入的全過(guò)程的詳細(xì)內(nèi)容,更多關(guān)于Java HTTPS請(qǐng)求失敗與證書(shū)導(dǎo)入的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • IDEA 自帶的數(shù)據(jù)庫(kù)工具真的很牛(收藏版)

    IDEA 自帶的數(shù)據(jù)庫(kù)工具真的很牛(收藏版)

    這篇文章主要介紹了IDEA 自帶的數(shù)據(jù)庫(kù)工具真的很牛(收藏版),本文以 IntelliJ IDEA/ Mac 版本作為演示,其他版本的應(yīng)該也差距不大,需要的朋友可以參考下
    2021-04-04
  • Java類(lèi)獲取Spring中bean的5種方式

    Java類(lèi)獲取Spring中bean的5種方式

    這篇文章主要為大家詳細(xì)介紹了Java類(lèi)獲取Spring中bean的5種方式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-03-03
  • java后端訪問(wèn)https證書(shū)的問(wèn)題及解決

    java后端訪問(wèn)https證書(shū)的問(wèn)題及解決

    這篇文章主要介紹了java后端訪問(wèn)https證書(shū)的問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Spring如何使用注解@DependsOn控制Bean加載順序

    Spring如何使用注解@DependsOn控制Bean加載順序

    這篇文章主要介紹了Spring如何使用注解@DependsOn控制Bean加載順序,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-06-06
  • Spring mvc是如何實(shí)現(xiàn)與數(shù)據(jù)庫(kù)的前后端的連接操作的?

    Spring mvc是如何實(shí)現(xiàn)與數(shù)據(jù)庫(kù)的前后端的連接操作的?

    今天給大家?guī)?lái)的是關(guān)于Spring mvc的相關(guān)知識(shí),文章圍繞著Spring mvc是如何實(shí)現(xiàn)與數(shù)據(jù)庫(kù)的前后端的連接操作的展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • 解決spring集成redisson踩過(guò)的坑

    解決spring集成redisson踩過(guò)的坑

    這篇文章主要介紹了spring集成redisson踩過(guò)的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • java如何防止表單重復(fù)提交的注解@RepeatSubmit

    java如何防止表單重復(fù)提交的注解@RepeatSubmit

    @RepeatSubmit是一個(gè)自定義注解,用于防止表單重復(fù)提交,它通過(guò)AOP和攔截器模式實(shí)現(xiàn),結(jié)合了線程安全和分布式環(huán)境的考慮,注解參數(shù)包括interval(間隔時(shí)間)和message(提示信息),使用時(shí)需要注意并發(fā)處理、用戶(hù)體驗(yàn)、性能和安全性等方面,失效原因是多方面的
    2024-11-11
  • 基于Spring Boot DevTools實(shí)現(xiàn)開(kāi)發(fā)過(guò)程優(yōu)化

    基于Spring Boot DevTools實(shí)現(xiàn)開(kāi)發(fā)過(guò)程優(yōu)化

    這篇文章主要介紹了基于Spring Boot DevTools實(shí)現(xiàn)開(kāi)發(fā)過(guò)程優(yōu)化,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Java如何自動(dòng)生成api文檔

    Java如何自動(dòng)生成api文檔

    在?Java?開(kāi)發(fā)中,自動(dòng)生成?API?文檔是一項(xiàng)非常實(shí)用的功能,這篇為大家介紹了幾種常見(jiàn)的?Java?自動(dòng)生成?API?文檔的方式,需要的可以參考一下
    2025-02-02
  • java實(shí)現(xiàn)Object和Map之間的轉(zhuǎn)換3種方式

    java實(shí)現(xiàn)Object和Map之間的轉(zhuǎn)換3種方式

    本篇文章主要介紹了java實(shí)現(xiàn)Object和Map之間的轉(zhuǎn)換3種方式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06

最新評(píng)論

克拉玛依市| 库车县| 合水县| 鄂温| 容城县| 高平市| 永年县| 阿鲁科尔沁旗| 兖州市| 巧家县| 吉隆县| 长治县| 五台县| 城固县| 平江县| 平邑县| 肇东市| 台北市| 井研县| 吉安县| 景宁| 雷州市| 迁西县| 泌阳县| 元氏县| 萍乡市| 景洪市| 莒南县| 肇庆市| 习水县| 依安县| 遂宁市| 白玉县| 岢岚县| 昔阳县| 福安市| 开平市| 望城县| 凌云县| 内黄县| 柘荣县|