Java HTTPS 請求失敗排查與證書導入全過程

文章目錄

  • Java HTTPS 請求失敗排查與證書導入全過程
  • 問題背景
  • 問題初步分析
  • 排查過程
    • 查看目標地址證書
    • 導入證書
    • 驗證證書是否導入成功
    • 重啟應用
  • 進一步驗證:是否真的是證書問題?
    • 1. 瀏覽器訪問
    • 2. 抓包工具驗證(如 Charles、Wireshark)
  • 補充知識點
    • ? Java 中默認信任庫在哪里?
    • ? 如果要刪除已導入證書?
    • ? 可否使用瀏覽器導出證書?
  • 總結
  • 生產上解決


Java HTTPS 請求失敗排查與證書導入全過程

在實際項目部署中,我們可能會遇到 Java 應用調用某個 HTTPS 接口失敗,特別是涉及公司網關(如 www.test.com)或 WAF 防護設備時,問題常常集中在 SSL/TLS 證書驗證失敗上。本文記錄一次完整的排查過程,并給出相關知識點補充。


問題背景

Java 應用通過 java.net.HttpURLConnection 或 RestTemplate 等方式請求接口 https://www.test.com,卻出現如下異常:

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 無法信任目標服務的 HTTPS 證書。常見原因有:

  • 服務端證書是自簽名(Self-signed)
  • 服務端證書鏈不完整
  • Java SDK 默認的 cacerts 信任庫中缺少對應根證書或中間證書

特別注意:Java 不使用系統證書庫,而是依賴其內置的 cacerts 信任庫。


排查過程

查看目標地址證書

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

可以看到目標返回了一整套證書鏈,包括:

  • 服務器證書(.crt)
  • 中間證書(可能有多個)
  • 根證書(部分環境不提供)

導入證書

你可能收到運維/安全團隊提供的證書文件,如:

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

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

導入命令如下(以 JDK 默認 cacerts 為例):

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

驗證證書是否導入成功

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

輸出示例:

test-gateway, Jul 31, 2025, trustedCertEntry,

重啟應用

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

此時如果請求成功,即可初步判定問題解決。


進一步驗證:是否真的是證書問題?

如果你懷疑是 WAF、CDN 等中間設備阻斷,可以用兩種方式驗證:

1. 瀏覽器訪問

瀏覽器訪問 https://www.test.com 是否提示 “證書不受信任”?如果沒有,一般說明服務器證書鏈是完整的,但 Java 環境中仍然缺少相應的中間證書。

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

查看 TLS 握手過程是否被中斷或中間設備返回自定義證書。


補充知識點

? Java 中默認信任庫在哪里?

  • 路徑:$JAVA_HOME/lib/security/cacerts
  • 默認密碼:changeit

? 如果要刪除已導入證書?

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

? 可否使用瀏覽器導出證書?

可以。在瀏覽器中點擊鎖圖標 → 查看證書 → 導出為 .crt 文件,然后再導入 Java 信任庫。


總結

這次排查證明:

Java HTTPS 請求失敗,通常不是網絡或 WAF 問題,而是 Java 缺少可信證書鏈中的中間證書

解決方法也非常明確:

  1. 獲取目標服務的完整證書鏈
  2. 將鏈中缺失的證書導入 Java 的 cacerts 信任庫
  3. 重啟應用驗證是否成功

如果你在實際部署中也遇到類似問題,不妨從證書入手,按圖索驥逐步排查。

生產上解決

證書等級提升,開始是從阿里云上夠買個人免費版證書,提升證書等級就行了


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/93877.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/93877.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/93877.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

android APT技術

1,背景 對于注解的使用,想必大家都不陌生,它出現在我們的源碼中,以及大部分框架中,比如ButterKnife、Arouter、Retrofit,但它們是有區別的,其中前2個是編譯時注解,最后一個是運行時注…

MySQL 和 PostgreSQL綜合比對分析匯總

面對大數據項目或其它類型項目中,面對關系型數據庫選擇一直是很總要的一點,本文針對MySQL 和 PostgreSQL進行綜合比對分析匯總,內容僅供參考。MySQL 和 PostgreSQL 是兩款主流的開源關系型數據庫(RDBMS),但…

Linux---make和makefile

一、基本概念1.是什么make是一條命令,makefile是一個文件2.對應在vs中按一下f5就能運行代碼,在Linux中make就相當于f5,使用makefile來封裝從而實現我, 想要的功能3.使用①創建makefile文件②編輯makefile解釋:test.exe…

【DAB收音機】DAB收音機協議及其他資料匯總

目錄[ETSI DAB標準協議文檔](https://www.etsi.org/standards)Other DAB資料DAB收音機相關的專利DAB收音機相關的期刊及學位論文DAB開源項目代碼倉庫qt-dab工具welle.io工具dablin工具【eti廣播工具】?? 項目對比與選型建議Other 收音機資料Other資料ETSI DAB標準協議文檔 官…

RabbitMQ的特點和消息可靠性保障

掌握RabbitMQ的核心知識,需從其特點和消息可靠性保障(尤其是消息丟失解決方案)兩方面入手,以下是詳細說明: 一、RabbitMQ的核心特點 RabbitMQ是基于AMQP(Advanced Message Queuing Protocol)協議…

項目升級啦

公司要新做一個醫療行業的業務,經過業務端和產品端的評估該業務與公司已有的產品線關聯不大,用戶后續也不想在老系統那臺老爺車上繼續使用,話說老系統到現在差不多10年了,中間經歷過的前后端開發者形形色色,維護者換了…

Android中頁面生命周期變化

一、Activity切換的生命周期變化(A啟動B)1. 標準流程(B完全覆蓋A)完整生命周期路徑:Activity A:onPause():失去焦點,仍部分可見onStop():完全不可見(當B完全覆…

自動駕駛控制算法——PID算法

自動駕駛控制算法——PID算法 文章目錄自動駕駛控制算法——PID算法一、PID 是什么?二、PID 原理2.1 **比例環節(P)**2.2 **積分環節(I)**2.3 **微分環節(D)**2.4 特點總結2.5 案例分析 —— 小…

Spring Boot 異步執行方式全解析:@Async、CompletableFuture 與 TaskExecutor 對比

在 Spring Boot 開發中,異步執行是提升系統性能的重要手段,尤其適用于處理耗時操作(如日志記錄、郵件發送、數據同步等)。本文將深入對比 Spring Boot 中三種主流的異步實現方式 ——Async注解、手動CompletableFuture和直接使用T…

高效微調2:Prompt-Tuning原理與實戰

高效微調2:Prompt-Tuning原理與實戰 Prompt-Tuning原理介紹 代碼 Prompt-Tuning原理介紹 Prompt-Tuning Prompt-Tuning的思想:凍結主模型全部參數,在訓練數據前加入一小段Prompt,只訓練Prompt的表示層,即一個Embedding模塊。其中,Prompt.又存在兩種形式,一種是hard promp…

使用BART模型和T5模型實現文本改寫

BART模型BART(Bidirectional and Auto-Regressive Transformers)是由 Facebook AI Research(FAIR)在 2019 年提出的序列到序列(seq2seq)預訓練模型,論文發表于《BART: Denoising Sequence-to-Se…

電商前端Nginx訪問日志收集分析實戰

使用FileBeatLogstashES實現分布式日志收集 在大型項目中 ,往往服務都是分布在非常多不同的機器上 ,每個機器都會打印自己的log日志 但是 ,這樣分散的日志 ,本來就無法進行整體分析。再加上微服務的負載均衡體系 ,甚至…

TwinCAT3示例項目1

目錄一、需求分析二、程序編寫1.實現1盞燈的自控(IF、TOF)2. 添加模式控制(Case、枚舉)3. 添加多盞燈(FOR、數組)4. 添加多組燈(二維數組)END項目結合了,FB,I…

如何在 VMware Workstation 虛擬機中利用 Nvidia 顯卡的硬件加速功能

這篇文章詳細介紹了如何在 VMware Workstation 虛擬機中利用 Nvidia 顯卡的硬件加速功能,通過 PCI 設備直通(Pass-Through)技術將顯卡分配給虛擬機使用: 在 VMware Workstation 虛擬機中利用 Nvidia 顯卡的硬件加速功能 1. 檢查…

設計模式(二十二)行為型:策略模式詳解

設計模式(二十二)行為型:策略模式詳解策略模式(Strategy Pattern)是 GoF 23 種設計模式中最具實用性和廣泛影響力的行為型模式之一,其核心價值在于定義一系列算法或行為,并將每個算法封裝到獨立…

AI+向量化

要理解 Java 如何結合 AI 與向量化,我們需要從向量化的核心概念、AI 中向量化的作用、Java 生態中的實現工具以及具體實踐案例四個維度展開。以下是詳細解析:一、核心概念:向量化與 AI 的關系向量化(Vectorization)是將…

Bootstap Vue 之b-form-radio-group 不顯示選中狀態問題

代碼類似&#xff1a;<b-form-radio-groupclass"mt-2"required:disabled"dfrmDisabled"v-model"childDikeForm.SafetyAppraisalRank":options"[一, 二, 三, 四]"name"rankradioopt"></b-form-radio-group>經過測…

Shell 腳本實戰:基于 for 循環的批量操作三例(賬戶創建、網絡檢測與密碼管理)

一、編寫腳本for1.sh,使用for循環創建20賬戶&#xff0c;賬戶名前綴由用戶從鍵盤輸入&#xff0c;賬戶初始密碼由用戶輸入&#xff0c;例如:test1、test2、test3、......、test10實現思路通過read命令獲取用戶輸入的賬戶前綴和初始密碼&#xff1b;加入非空校驗&#xff1a;若前…

PBR技術

一 、PBR的概述1.定義策略路由&#xff1a; PBR 是一種覆蓋路由器默認路由決策機制的技術。它允許管理員根據策略&#xff08;而不僅僅是目標地址&#xff09;來設置數據包的下一跳 IP 地址、出站接口、IP 優先級/DSCP 值等。路由策略&#xff1a;是指在路由器或三層設備上&…

STM32-ESP8266Wi-Fi模塊使用USART實現通信/創建AP和STA模式配置教程(寄存器版)

本章思維導圖&#xff1a;ESP8266WIFI模塊簡介ESP8266 是一款由樂鑫科技推出的低成本、高性能 Wi-Fi 模塊&#xff0c;廣泛應用于物聯網和嵌入式開發領域。WIFI的頻段5G和2.4G2.4G Wi-Fi與5G Wi-Fi最本質的區別即工作頻段&#xff08;無線電波的頻率&#xff09;不一樣&#xf…