使用 OpenSSL 吊銷 Kubernetes(k8s)的 kubeconfig 里的用戶證書

一.用 OpenSSL 依據已有的自簽名 CA 注銷簽發的證書的步驟

1. 準備工作 你得有自簽名 CA 的私鑰(通常是 .key 文件)、CA 證書(通常是 .crt 文件)以及證書吊銷列表(CRL)文件。若還沒有 CRL 文件,就需要創建一個。

2. 創建初始 CRL 文件

要是還沒有 CRL 文件,就用以下命令創建一個:

openssl ca -gencrl -keyfile ca.key -cert ca.crt -out crl.pem
  • ca.key:這是自簽名 CA 的私鑰文件。
  • ca.crt:這是自簽名 CA 的證書文件。
  • crl.pem:這是生成的證書吊銷列表文件

?3.吊銷證書

你要吊銷某個證書時,得知道該證書的序列號。可以用以下命令查看證書序列號:

?

openssl x509 -noout -serial -in certificate.crtopenssl ca -revoke certificate.crt -keyfile ca.key -cert ca.crt
  • certificate.crt:你要吊銷的證書文件。
  • ca.key:自簽名 CA 的私鑰文件。
  • ca.crt:自簽名 CA 的證書文件。

? ?4.更新 CRL 文件

openssl ca -gencrl -keyfile ca.key -cert ca.crt -out crl.pem
  • ca.key:自簽名 CA 的私鑰文件。
  • ca.crt:自簽名 CA 的證書文件。
  • crl.pem:更新后的證書吊銷列表文件。

二.要使用 OpenSSL 吊銷 Kubernetes(k8s)的 kubeconfig 里的用戶證書

?1. 確定相關文件和信息

CA 私鑰:一般存儲在 Kubernetes 集群的控制平面節點上,通常路徑為 /etc/kubernetes/pki/ca.key。 ? CA 證書:同樣位于控制平面節點,路徑通常是 /etc/kubernetes/pki/ca.crt。 ? 用戶證書:能從 kubeconfig 文件里提取。kubeconfig 文件一般在 ~/.kube/config,你可以用下面的命令提取用戶證書:

kubectl config view --raw -o jsonpath='{.users[?(@.name=="<USER_NAME>")].user.client-certificate-data}' | base64 -d > user.crt

這里的?<USER_NAME>?要替換成 kubeconfig 里實際的用戶名.

2. 查看證書序列號

使用 OpenSSL 查看要吊銷的用戶證書的序列號:

openssl x509 -noout -serial -in user.crt

此命令會輸出證書的序列號,后續吊銷證書時會用到。

3. 檢查并創建 CRL 文件

如果還沒有證書吊銷列表(CRL)文件,就需要創建一個。若已有,可跳過此步驟。

openssl ca -gencrl -keyfile /etc/kubernetes/pki/ca.key -cert /etc/kubernetes/pki/ca.crt -out crl.pem

這里的?crl.pem?就是生成的 CRL 文件。

4. 吊銷證書

利用 OpenSSL 的?ca?命令吊銷用戶證書:

openssl ca -revoke user.crt -keyfile /etc/kubernetes/pki/ca.key -cert /etc/kubernetes/pki/ca.crt

運行此命令后,用戶證書就會被標記為已吊銷.

5. 更新 CRL 文件

吊銷證書后,需要更新 CRL 文件以包含新吊銷的證書:

openssl ca -gencrl -keyfile /etc/kubernetes/pki/ca.key -cert /etc/kubernetes/pki/ca.crt -out crl.pem

?6.查看 CRL 的基本信息

openssl crl -noout -text -in crl.pem

?openssl crl:這是 OpenSSL 用于處理 CRL 的命令。

? -noout:表示不輸出 CRL 的二進制內容。 ? -text:將 CRL 的內容以文本形式輸出。 ? -in crl.pem:指定要查看的 CRL 文件,這里假設 CRL 文件名為 crl.pem,你可根據實際情況替換

查看 CRL 的詳細吊銷條目

openssl crl -noout -revoked -in crl.pem

?-revoked:此選項用于只輸出 CRL 中的吊銷條目信息

8. 在 Kubernetes 中使用 CRL

要讓 Kubernetes 集群使用更新后的 CRL 來驗證客戶端證書,需要在 API Server 的配置里添加 CRL 文件的路徑。

修改 API Server 配置

編輯 API Server 的靜態 Pod 配置文件,通常位于?/etc/kubernetes/manifests/kube-apiserver.yaml。在?spec.containers[].command?部分添加以下參數:

- --client-ca-file=/etc/kubernetes/pki/ca.crt
- --crl-file=/path/to/crl.pem
重啟 API Server

保存配置文件后,Kubernetes 會自動重啟 API Server 以應用新配置。

9.重新生成新的 CRL 且不包含已吊銷證書

要保證 OpenSSL 配置文件(通常是?/etc/pki/tls/openssl.cnf)的?dir?參數指向 CA 工作目錄

手動修改索引文件

OpenSSL 借助?index.txt?文件來記錄證書狀態。你可以手動編輯該文件,把要恢復的證書狀態從?R(已吊銷)改成?V(有效)。

vim /etc/pki/CA/index.txt

?找到要恢復的證書條目,將開頭的?R?改成?V,并刪除與吊銷相關的時間等信息。

重新生成 CRL
openssl ca -gencrl -keyfile ca.key -cert ca.crt -out new_crl.pem
  • ca.key?是 CA 私鑰文件。
  • ca.crt?是 CA 證書文件。
  • new_crl.pem?是新生成的 CRL 文件。

替換舊的 CRL 把新生成的 CRL 文件替換掉舊的 CRL 文件,這樣在驗證證書時就不會再把這些證書當作已吊銷。

10. 廢棄當前 CRL 并使用新的 CRL 管理

備份當前的?index.txt?文件,然后清空該文件:

sudo cp /etc/pki/CA/index.txt /etc/pki/CA/index.txt.bak
sudo truncate -s 0 /etc/pki/CA/index.txt
重置序列號和 CRL 編號

重置?serial?和?crlnumber?文件

echo "01" | sudo tee /etc/pki/CA/serial
echo "01" | sudo tee /etc/pki/CA/crlnumber

?生成新的 CRL

將新生成的 CRL 文件應用到證書驗證環境中

7. 在吊銷證書的過程中出現的問題

問題1:Using configuration from /etc/pki/tls/

? ? ? ? ? ? openssl.cnf /etc/pki/CA/index.txt: No such file or directory

問題2:Using configuration from /etc/pki/tls/

? ? ? ? ? openssl.cnf /etc/pki/CA/crlnumber: No such file or directory error while loading CRL number

解決方式

1)創建 CA 目錄

首先,確保 CA 工作目錄存在,通常是?/etc/pki/CA?:

mkdir -p /etc/pki/CA
2)創建索引文件

創建?index.txt?文件,該文件用于記錄證書的狀態信息,初始為空:

touch /etc/pki/CA/index.txt

3) 創建?crlnumber?文件

echo "01" | sudo tee /etc/pki/CA/crlnumber

4)創建序列號文件

創建?serial?文件,并為其設置一個初始的序列號,例如?01

echo "01" | sudo tee /etc/pki/CA/serial

5)??確認文件權限

要保證 OpenSSL 命令有足夠的權限來訪問和修改?/etc/pki/CA?目錄下的文件,你可以通過以下命令修改文件和目錄的權限:

sudo chmod -R 700 /etc/pki/CA

5)調整 OpenSSL 配置文件,可以不變

確保?/etc/pki/tls/openssl.cnf?配置文件中的相關設置無誤,尤其是?dir?參數,它應指向 CA 工作目錄。你可以通過以下命令編輯該文件。

在文件中找到?[ CA_default ]?部分,確認?dir?參數如下:

[ CA_default ]
dir             = /etc/pki/CA           # Where everything is kept

?

?

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

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

相關文章

循環卷積(Circular Convolutions)

最近看論文發現了一個叫循環卷積的東西&#xff0c;這里學習并記錄一下&#xff0c;方便以后查閱。 循環卷積&#xff08;Circular Convolutions&#xff09; 循環卷積&#xff08;Circular Convolutions&#xff09;1. 什么是循環卷積2. 數學定義關鍵點 3. 循環卷積與線性卷積…

【計算機視覺】Car-Plate-Detection-OpenCV-TesseractOCR:車牌檢測與識別

Car-Plate-Detection-OpenCV-TesseractOCR&#xff1a;車牌檢測與識別技術深度解析 在計算機視覺領域&#xff0c;車牌檢測與識別&#xff08;License Plate Detection and Recognition, LPDR&#xff09;是一個極具實用價值的研究方向&#xff0c;廣泛應用于智能交通系統、安…

MATLAB制作柱狀圖與條圖:數據可視化的基礎利器

一、什么是柱狀圖與條圖&#xff1f; 柱狀圖和條圖都是用來表示分類數據的常見圖表形式&#xff0c;它們的核心目的是通過矩形的長度來比較各類別的數值大小。條圖其實就是“橫著的柱狀圖”&#xff0c;它們的本質是一樣的&#xff1a;用矩形的長度表示數值大小&#xff0c;不同…

[計算機科學#13]:算法

【核知坊】&#xff1a;釋放青春想象&#xff0c;碼動全新視野。 我們希望使用精簡的信息傳達知識的骨架&#xff0c;啟發創造者開啟創造之路&#xff01;&#xff01;&#xff01; 內容摘要&#xff1a; 算法是解決問題的系統化步驟&#xff0c;不同的問題…

HTTP傳輸大文件的方法、連接管理以及重定向

目錄 1. HTTP傳輸大文件的方法 1.1. 數據壓縮 1.2. 分塊傳輸 1.3. 范圍請求 1.4. 多段數據 2. HTTP的連接管理 2.1. 短連接 2.2. 長連接 2.3. 隊頭阻塞 3. HTTP的重定向和跳轉 3.1. 重定向的過程 3.2. 重定向狀態碼 3.3. 重定向的應用場景 3.4. 重定向的相關問題…

PostgreSQL 18 Beta 1發布,有哪些功能亮點?

PostgreSQL 全球開發組于 2025 年 5 月 8 日發布了第一個 PostgreSQL 18 Beta 版本&#xff0c;現已開放下載。雖然細節可能會有所改變&#xff0c;但是該版本包含了 PostgreSQL 18 最終正式版中所有新功能的預覽。 以下是 PostgreSQL 18 引入的部分關鍵功能亮點。 性能優化 …

vue dev-tools插件

背景 在項目上用到vue技術&#xff0c;在bilibili上學習vue&#xff0c;期間老師推薦使用vue dev-tools調試神器&#xff0c;所以過來安轉和使用了&#xff0c;用了感覺不錯&#xff0c;希望給大家帶來效率的提升。 定義 Vue DevTools 是一款旨在增強 Vue 開發者體驗的工具&am…

單片機-FLASH軟件模擬EEPROM,提升flash保存重要參數的使用壽命

目錄 1. FLASH和EEPROM讀寫數據的對比 ??2. FLASH模擬EEPROM的原理 ??3. FLASH模擬EEPROM的優點 ??4. 實戰項目工程代碼 1. FLASH和EEPROM讀寫數據的對比 1.1 擦除操作 EEPROM通常支持按單字節擦除和寫入&#xff0c;這一特性使其非常適合需要頻繁更新小量數據的應…

探索Stream流:高效數據處理的秘密武器

不可變集合 stream流 Stream流的使用步驟&#xff1a; 先得到一條Stream流&#xff08;流水線&#xff09;&#xff0c;并把數據放上去 使用中間方法對流水線上的數據進行操作 使用終結方法對流水線上的數據進行操作 Stream流的中間方法 注意1&#xff1a;中間方法&#xff0…

vue3筆記(自存)

1. Vue3簡介 2020年9月18日&#xff0c;Vue.js發布版3.0版本&#xff0c;代號&#xff1a;One Piece&#xff08;n 經歷了&#xff1a;4800次提交、40個RFC、600次PR、300貢獻者 官方發版地址&#xff1a;Release v3.0.0 One Piece vuejs/core 截止2023年10月&#xff0c;最…

實驗4 mySQL查詢和視圖

一、實驗目的 掌握SELECT語句的基本語法多表連接查詢GROUP BY的使用方法。ORDER BY的使用方法。 二、實驗步驟、內容、結果 實驗內容&#xff1a; 實驗4.1數據庫的查詢 目的與要求 (1)掌握SELECT語句的基本語法。 (2)掌握子查詢的表示。 (3)掌握連接查詢的表示。 (4)掌…

【bug】fused_bias_act_kernel.cu卡住沒反應

簡述 在推理人臉修復face restoration算法 GPEN的時候&#xff0c;發現有時候fused_bias_act_kernel.cu卡住沒反應。 解決 清理下緩存&#xff0c;讓程序自己再編譯下

.net/C#進程間通信技術方案總結

C# 應用進程間通信(IPC)技術方案 進程間通信(Inter-Process Communication, IPC)是不同進程之間交換數據和消息的機制。以下是C#中常用的IPC技術方案&#xff1a; 1. 命名管道(Named Pipes) 適用于本地機器上的進程通信&#xff0c;支持雙向通信。 ??服務端示例??&…

阿里云服務器數據庫故障排查指南?

阿里云服務器數據庫故障排查指南? 以下是針對阿里云服務器&#xff08;如ECS自建數據庫或阿里云RDS等托管數據庫&#xff09;的故障排查指南&#xff0c;涵蓋常見問題的定位與解決方案&#xff1a; 一、數據庫連接失敗 檢查網絡連通性 ECS自建數據庫 確認安全組規則放行數據庫…

深度學習 ———— 遷移學習

遷移學習原理 什么是遷移學習&#xff1f; 遷移學習利用在大規模數據集&#xff08;如ImageNet&#xff09;上預訓練的模型&#xff0c;改裝小數據集&#xff08;如CIFAR-10&#xff09;。優勢&#xff1a; 減少訓練時間&#xff1a;預訓練模型已學習通用特征&#xff08;如邊…

單調棧模版型題目(3)

單調棧型題目貢獻法 基本模版 這是數組a中的 首先我們要明白什么叫做貢獻&#xff0c;在一個數組b{1,3,5}中&#xff0c;連續包含1的連續子數組為{1}&#xff0c;{1,3}&#xff0c;{1,3,5}&#xff0c;一共有三個&#xff0c;這三個數一共能組成6個連續子數組&#xff0c;而其…

日常知識點之隨手問題整理(思考單播,組播,廣播哪個更省帶寬)

新入職的公司在某些場景下無腦使用組播技術&#xff0c;自己突然就意識到一個問題&#xff1a;單播&#xff0c;組播&#xff0c;廣播&#xff0c;哪個更省帶寬&#xff1f; 有所收獲&#xff0c;做點筆記&#xff0c;僅僅是個人理解~ 1&#xff1a;簡單理解 單播&#xff1…

R1-Omni

一、Omni概述 Omni 文本視頻音頻&#xff0c;全模態。 R1Omni 強化學習全模態。 二、Omni舉例-humanOmni humanOmni&#xff1a;以人體姿態和人物交互為中心的全模態模型。 visual projector有3個&#xff0c;分別負責人臉標簽、姿態檢測、人和物交互。有點像moe。text enc…

linux中的日志分割

1.問題背景&#xff0c;nginx日志過大不好刪除 [rootlocalhost cron.daily]# cd /lk/nginx/log/ [rootlocalhost log]# ll 總用量 2386188 -rw-r--r--. 1 root root 2078699697 5月 9 13:02 access.log -rw-r--r--. 1 root root 11138 5月 6 10:28 error.log [rootloc…

華為云Flexus+DeepSeek征文|從開通到應用:華為云DeepSeek-V3/R1商用服務深度體驗

前言 本文章主要講述在華為云ModelArts Studio上 開通DeepSeek-V3/R1商用服務的流程&#xff0c;以及開通過程中的經驗分享和使用感受幫我更多開發者&#xff0c;在華為云平臺快速完成 DeepSeek-V3/R1商用服務的開通以及使用入門注意&#xff1a;避免測試過程中出現部署失敗等問…