Jenkins 節點連接故障定位及解決方案總結 - PKIX path validation failed


一、故障現象

Jenkins 節點通過 Java Web 方式連接時,報錯:

java.io.IOException: Failed to connect to https://xxxx.zte.com.cn/yyyy/tcpSlaveAgentListener/: PKIX path validation failed: java.security.cert.CertPathValidatorException: validity check failed

二、故障定位及解決方案
1. 證書有效性驗證失敗

原因:Java 客戶端無法驗證 Jenkins 服務器的 SSL 證書,常見于以下情況:

  • 證書已過期。
  • 系統時間不正確導致證書有效期校驗失敗。
  • 自簽名證書未被信任。
  • 證書鏈不完整(缺少中間證書)。

解決方案

(1) 檢查證書有效期
# 使用 openssl 檢查證書有效期
openssl s_client -connect xxxx.zte.com.cn:443 -servername xxxx.zte.com.cn | openssl x509 -noout -dates
  • 證書過期:需在服務器端更新證書(如 Let’s Encrypt 證書需續訂)。
  • 證書未過期:繼續排查其他原因。
(2) 檢查系統時間

系統時間不正確會導致證書有效期校驗失敗,需同步客戶端和服務器時間。

2. 系統時間同步(重點細化)
(1) 查看當前時間
# 查看系統時間
date# 查看硬件時鐘時間(BIOS 時間)
sudo hwclock --show
(2) 手動設置系統時間(臨時方案)

僅用于緊急修復,長期建議使用 NTP 服務

# 設置系統時間為 2024-01-01 12:00:00(示例)
sudo date -s "2024-01-01 12:00:00"# 驗證系統時間是否已更新
date
(3) 同步系統時間到硬件時鐘

確保重啟后時間持久化

# 將系統時間寫入硬件時鐘
sudo hwclock --systohc# 驗證硬件時鐘時間
sudo hwclock --show
(4) 配置 NTP 服務(長期方案)
# Ubuntu/Debian
sudo apt install ntpdate -y
sudo ntpdate pool.ntp.org
sudo systemctl start systemd-timesyncd
sudo systemctl enable systemd-timesyncd# CentOS/RHEL
sudo yum install ntp -y
sudo ntpdate pool.ntp.org
sudo systemctl start chronyd
sudo systemctl enable chronyd
(3) 導入證書到 Java 信任庫

適用于自簽名證書或內部 CA 簽發的證書

(1) 導出服務器證書
openssl s_client -connect xxxx.zte.com.cn:443 -servername xxxx.zte.com.cn </dev/null | openssl x509 -out jenkins-cert.pem
(2) 查找 Java 信任庫路徑
# 默認路徑(根據實際安裝位置調整)
sudo find / -name "cacerts" 2>/dev/null
(3) 導入證書到信任庫
# 導入證書(默認密碼:changeit)
sudo keytool -import -alias jenkins-cert -keystore /path/to/java/lib/security/cacerts -file jenkins-cert.pem
  • 輸入 yes 確認信任證書。
(4) 重啟 Jenkins 節點
# 重啟 Jenkins 服務或節點進程
sudo systemctl restart jenkins
(4) 檢查證書鏈完整性

確保服務器配置了完整的證書鏈(包括中間證書)

openssl s_client -connect xxxx.zte.com.cn:443 -showcerts
  • 證書鏈缺失:在服務器(如 Nginx/Apache)配置中補充中間證書。

三、驗證故障是否解決
  1. 查看 Jenkins 節點日志
tail -f /var/log/jenkins/jenkins.log
  1. 手動觸發節點連接
    • 在 Jenkins Web 界面中,進入 節點管理目標節點啟動代理

四、注意事項
  1. 手動設置時間僅為臨時方案,長期需通過 NTP 服務同步時間,避免時間漂移。
  2. 自簽名證書需定期更新,并在 Java 信任庫中同步更新。
  3. 生產環境禁用臨時證書驗證方案(如跳過 SSL 校驗),避免安全風險。

五、總結流程圖
1. 證書有效性驗證失敗├─ 檢查證書是否過期 → 是:更新證書 → 結束├─ 檢查系統時間 → 不正確:同步時間(手動或 NTP) → 重新驗證├─ 導入證書到 Java 信任庫 → 重新啟動節點 → 驗證連接└─ 檢查證書鏈完整性 → 補充中間證書 → 重新驗證

通過以上步驟,可系統化定位并解決 Jenkins 節點連接時的 SSL 證書驗證失敗問題。

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

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

相關文章

c++ --- priority_queue的使用以及簡單實現

C --- priority_queue前言一、priority_queue的使用二、priority_queue的簡單實現1.整體結構2.主要方法pushpoptopemptysize三、構造迭代器區間構造默認構造四、仿函數前言 priority_queue是C容器之一&#xff0c;意為優先級隊列&#xff0c;雖說叫做隊列&#xff0c;但是其底…

MySQL梳理三:查詢與優化

MySQL查詢優化完整指南&#xff1a;從理論到實踐 本文從MySQL查詢的基礎機制出發&#xff0c;深入探討單表查詢訪問方法、聯表查詢策略、成本計算原理、基于規則的優化技術&#xff0c;最后通過實際案例展示慢SQL的診斷和優化過程。 目錄 一、單表查詢的訪問方法二、聯表查詢機…

從零開始的python學習(九)P129+P130+P131+P132+P133

本文章記錄觀看B站python教程學習筆記和實踐感悟&#xff0c;視頻鏈接&#xff1a;【花了2萬多買的Python教程全套&#xff0c;現在分享給大家&#xff0c;入門到精通(Python全棧開發教程)】 https://www.bilibili.com/video/BV1wD4y1o7AS/?p6&share_sourcecopy_web&v…

LCL濾波器及其電容電流前饋有源阻尼設計軟件【LCLAD_designer】

本文主要介紹針對阮新波著《LCL型并網逆變器的控制技術》書籍 第二章&#xff08;LCL濾波器設計&#xff09;及第五章&#xff08;LCL型并網逆變器的電容電流反饋有源阻尼設計&#xff09;開發的一款交互式軟件【LCL&AD_designer】&#xff0c;開發平臺MATLAB_R2022b/app d…

【Conda】配置Conda鏡像源

Conda 鏡像源配置指南 適用系統&#xff1a;Windows 10&#xff08;含 Miniconda / Anaconda&#xff09; & Linux&#xff08;Ubuntu / CentOS / Debian 等&#xff09;1. 為什么要設置鏡像源 在中國大陸直接訪問 repo.anaconda.com 經常遇到速度慢、連接超時、SSL 錯誤等…

八股取士--docker

基礎概念類 1. 什么是Docker&#xff1f;它解決了什么問題&#xff1f; 解析&#xff1a; Docker是一個開源的容器化平臺&#xff0c;用于開發、交付和運行應用程序。 主要解決的問題&#xff1a; 環境一致性&#xff1a;解決"在我機器上能跑"的問題資源利用率&#…

C++:STL中的棧和隊列的適配器deque

學習完string類、容器vector和容器list&#xff0c;再去學習其他容器的學習成本就非常低&#xff0c;容器的使用方法都大差不差&#xff0c;而棧和隊列的底層使用了適配器&#xff0c;去模擬實現就沒有那么麻煩&#xff0c;適配器也是一種容器&#xff0c;但是這種容器兼備棧和…

9類主流數據庫 - 幫你更好地進行數據庫選型!

作者&#xff1a;唐叔在學習 專欄&#xff1a;數據庫學習 標簽&#xff1a;數據庫選型、MySQL、Redis、MongoDB、大數據存儲、NoSQL、數據庫優化、數據架構、AI數據庫 大家好&#xff0c;我是你們的老朋友唐叔&#xff01;今天咱們來聊聊程序員吃飯的家伙之一 —— 數據庫。在這…

推送本地項目到Gitee遠程倉庫

文章目錄前言前面已加學習了下載gitee軟件&#xff0c;網址在上一篇文章。在gitee創建賬號與倉庫。現在來學習如何講本地項目推送到Gitee遠程倉庫一、流程總結前言 前面已加學習了下載gitee軟件&#xff0c;網址在上一篇文章。在gitee創建賬號與倉庫。現在來學習如何講本地項目…

CMake 命令行參數完全指南(5)

?**40. --version**? ?解釋?&#xff1a;顯示CMake版本 ?示例?&#xff1a; cmake --version # 輸出&#xff1a;cmake version 3.25.2?**41. --warn-uninitialized**? ?解釋?&#xff1a;警告未初始化的變量 ?適用場景?&#xff1a;檢測腳本錯誤 ?示例?&#xf…

基于Python實現生產者—消費者分布式消息隊列:構建高可用異步通信系統

深入剖析分布式消息隊列的核心原理與Python實現&#xff0c;附完整架構設計和代碼實現引言&#xff1a;分布式系統的通信基石在微服務架構和云原生應用普及的今天&#xff0c;服務間的異步通信成為系統設計的核心挑戰。當單體應用拆分為數十個微服務后&#xff0c;服務間通信呈…

【大模型核心技術】Agent 理論與實戰

一、基本概念 LLM 特性&#xff1a;擅長理解和生成文本&#xff0c;但采用 “一次性” 響應模式&#xff0c;本質上是無記憶的生成模型。Agent 本質&#xff1a;包含 LLM 的系統應用&#xff0c;具備自主規劃、工具調用和環境反饋能力&#xff0c;是將 LLM 從 “聊天機器人” 升…

Maven - 依賴的生命周期詳解

作者&#xff1a;唐叔在學習 專欄&#xff1a;唐叔的Java實踐 標簽&#xff1a;Maven依賴管理、Java項目構建、依賴傳遞性、Spring Boot依賴、Maven最佳實踐、項目構建工具、依賴沖突解決、POM文件詳解 文章目錄一、開篇二、Maven依賴生命周期2.1 依賴聲明階段&#xff1a;POM文…

從零打造大語言模型--處理文本數據

從零打造大語言模型 第 1 章&#xff1a;處理文本數據 章節導讀 在把文本投喂進 Transformer 之前&#xff0c;需要兩步&#xff1a;① 將字符流切分成離散 Token&#xff1b;② 把 Token 映射成連續向量。 1.1 理解詞嵌入&#xff08;Word Embedding&#xff09; 嵌入向量 一…

【Spring】Bean的生命周期,部分源碼解釋

文章目錄Bean 的生命周期執行流程代碼演示執行結果源碼閱讀AbstractAutowireCapableBeanFactorydoCreateBeaninitializeBeanBean 的生命周期 生命周期指的是一個對象從誕生到銷毀的整個生命過程&#xff0c;我們把這個過程就叫做一個對象的聲明周期 Bean 的聲明周期分為以下 …

[spring-cloud: 服務發現]-源碼解析

DiscoveryClient DiscoveryClient 接口定義了常見的服務發現操作&#xff0c;如獲取服務實例、獲取所有服務ID、驗證客戶端可用性等&#xff0c;通常用于 Eureka 或 Consul 等服務發現框架。 public interface DiscoveryClient extends Ordered {/*** Default order of the dis…

QML 基礎語法與對象模型

QML (Qt Meta-Object Language) 是一種聲明式語言&#xff0c;專為創建流暢的用戶界面和應用程序邏輯而設計。作為 Qt 框架的一部分&#xff0c;QML 提供了簡潔、直觀的語法來描述 UI 組件及其交互方式。本文將深入解析 QML 的基礎語法和對象模型。 一、QML 基礎語法 1. 基本對…

HTTPS的概念和工作過程

一.HTTPS是什么HTTPS也是一個應用層協議&#xff0c;是在HTTP協議的基礎上引入了一個加密層&#xff08;SSL&#xff09;HTTP協議內容都是按照文本的方式明文傳輸的&#xff0c;這就導致傳輸過程中可能出現被篡改的情況最著名的就是十多年前網絡剛發展的時期&#xff0c;出現“…

Unity —— Android 應用構建與發布?

文章目錄1 ?Gradle模板??&#xff1a;了解Gradle模板的作用及使用方法&#xff0c;以增強對構建流程的控制。?2 ?Gradle模板變量??&#xff1a;參考文檔——自定義Gradle模板文件中可用的變量列表。2.1 修改Unity應用的Gradle工程文件2.1.1 通過Gradle模板文件2.1.2 導出…

【iOS】strong和copy工作流程探尋、OC屬性關鍵字復習

文章目錄前言strong和copy的區別為什么要用copy&#xff1f;什么時候用什么修飾&#xff1f;strong&#xff08;ARC自動管理&#xff09;strong修飾變量的底層流程圖底層代碼核心實現小結copy底層流程圖對比與strong的關鍵不同之處內部調用關系&#xff08;偽代碼&#xff09;小…