基於CA簽名的使用者公鑰管理

2021-10-25 01:41:12 字數 3542 閱讀 3249

通過ca簽名使用者公鑰的證書統一管理方法。通過該方法可以實現基於角色通過ssh管理對伺服器的訪問。

為了安全便捷的管理和維護伺服器,禁止ssh密碼登陸,並用證書認證是比較好的選擇。其方法是使用者生成金鑰對,其私鑰嚴格保管不洩露,將公鑰新增到伺服器上使用者對應的authorized_keys檔案,然後就可以用證書方式進行登陸,在證書生成的時候,也可以對證書新增密碼,防止私鑰被盜用。

這種方式很方便,但是存在乙個問題,就是當伺服器比較多的時候,對伺服器上公鑰的管理就會比較麻煩,容易當人員發生變化時候,容易清理遺漏,從而導致安全隱患。本文我們介紹一種通過中心ca統一簽發證書管理ssh證書的方法。

概述

為了解決統一管理的問題,引入ca來統一管理ssh的認證。使用者仍然需要生成乙個公鑰和私鑰對證書。但是,認證不是通過將使用者公鑰新增伺服器來完成,使用證書頒發機構(ca)金鑰對使用者公鑰進行簽名。簽名過程僅生成了第三個證書檔案,使用者通過該簽發證書和自己原有的證書對就能完成登陸。

伺服器上,只需配置ssh對ca的公鑰認證,伺服器通過檢測使用者證書是否通過ca簽發,來完成認證過程。

具體做法

建立ca

使用者生成乙個證書頒發機構ca私鑰對,並保證私鑰的私鑰安全:

umask 77 # 修改掩碼,保證此後生成目錄和檔案的許可權

mkdir ~/cc-ca && cd ~/cc-ca 

ssh-keygen -c ca -f ca -b 4096

生成時候,給證書新增乙個密碼,以防止洩露。

配置ca公鑰認證

然後在伺服器上,指定允許由ca簽名的所有使用者訪問該伺服器:

將ca的公鑰上傳到伺服器上,例如在/etc/ssh/ca.pub

在/etc/ssh/sshd_config新增下面的行,配置ca簽發的證書的信任:

trustedusercakeys /etc/ssh/ca.pub
重啟sshd服務:

service sshd reload
ca簽發使用者證書使用者使用ssh-keygen生成證書,並且把公鑰發給ca中心,ca中心用私鑰對該證書新增簽名:

ssh-keygen -s ca -i user_id -v +12w -z 1 id_ecdsa.pub
命令列說明:

-s ca 想使用ca進行簽名

-i user_id -使用者id/使用者名稱

-v +12w -證書過期前的時間,該例子中證書有效期為12周

-z 1 設定證書的序列號,可以用證書的序列號來登出證書。

id_ecdsa.pub:需要簽名的使用者公鑰

生成證書id_ecdsa-cert.pub,該證書需要傳送給開發人員,使用者將其放入~/.ss**件夾。

新增角色

上面就可以完成了證書的ca簽名和統一認證。但是還有乙個問題,可能使用者也需要分類,不同的團隊和角色的,需要有不同的訪問許可權。實際上,可以在簽名過程中新增角色,用來指定允許伺服器的訪問許可權。新新增使用者時候,即可使他們可以訪問所有相關伺服器,而無需在這些伺服器上新增任何內容。

伺服器上配置角色資訊

建立用於配置訪問許可權的資料夾:

mkdir /etc/ssh/auth_principals
在該資料夾中,可以使用伺服器使用者名稱建立檔案,該使用者可以登入。例如,要授予對某些角色的root使用者訪問許可權,請新增檔案/etc/ssh/auth_principals/root。

在/etc/ssh/auth_principals/root檔案中,配置可以以root使用者身份登入的角色,每行乙個角色,比如

admin_dev

root_op

role1

在伺服器上sshd配置檔案/etc/ssh/sshd_config,新增對角色的認證:

authorizedprincipalsfile /etc/ssh/auth_principals/%u
service sshd reload
ca簽發帶角色的使用者證書可以使用一下命令列,簽發帶角色的證書:

ssh-keygen -s ca -i user_id -n role1,role2 -v +12w -z 2 id_ecdsa.pub
與以前命令列一樣,多增加了-n role1,role2標誌。

現在,該使用者可以登入到auth_principals檔案配置了role1或role2角色的伺服器。

登出證書

前面說了,可以對使用者證書進行登出。登出使用者需要用的使用者的序列號。建議同意維護乙個使用者序列號的列表,或建立資料庫。

登出證書檔案

通過下面的命令生成乙個登出證書檔案

ssh-keygen -k -f revoked-keys -u -s ca list-to-revoke
當已經有乙個revoked-keys列表並想要更新證書時候(-u標誌)。

在list-to-revoke檔案內容由使用者名稱(ids)或序列號(的-z生成期間標誌)是這樣的:

serial: 1

id: test.user

這將撤消對序列號為1的證書和所有id為test.user的證書的訪問許可權。

伺服器配置登出

為了使伺服器完成對撤銷金鑰配置,需要將生成的/更新的revoked keys檔案新增到/etc/ssh/revoked-keys並在/etc/ssh/sshd_config配置:

revokedkeys /etc/ssh/revoked-keys
注意:請確保該revoked-keys檔案為可訪問且可讀,否則會導致任何使用者都不能訪問。

總結

本文我們介紹了乙個通過ca簽名使用者公鑰的證書統一管理方法。通過該方法可以實現基於角色通過ssh管理對伺服器的訪問。只需要配置伺服器一次(允許哪些角色訪問伺服器)。對於每個使用者,只需要生成乙個簽名證書,就可以實現按角色登陸所有相關機器的方法。也可以方便登出使用者的證書,從而限制使用者的訪問。由於每個證書簽名都要有效性限制,即使未能及時登出使用者許可權,也可以在超過有效期後自動登出,從而保證了安全。linux就該這麼學

公鑰 私鑰 數字簽名 CA證書

簡單來說分為兩種,對稱加密和非對稱加密。對稱加密 加密和解密用的是同乙個秘鑰,在對稱加密演算法中常用的演算法有 des 3des tdea blowfish rc2 rc4 rc5 idea等。這類加密演算法的優點就是計算量小 加密速度快 加密效率高 但是缺點也很明顯,在傳輸資料前,雙方必須商定並儲...

數字簽名 CA認證 公鑰 私鑰簡單關係

數字簽名是資訊的傳送者才能產生的別人無法偽造的一段數字串,這段數字串同時也是對資訊的傳送者傳送資訊真實性的乙個有效證明。數字簽名技術是對非對稱加密技術與資訊摘要的綜合應用。通常的做法是 先對正文產生資訊摘要,之後使用傳送者a的私鑰對該資訊摘要進行加密,這就完成了簽名。想驗證使用者a數字證書的真偽,需...

加密演算法 公鑰 私鑰 數字簽名與CA

三 數字簽名 digital sign 四 ca certificate authority 證書頒發機構 四 消失的u盾 五 參考文章 秘鑰 可逆 逆演算法 一開始加解密過程,都是對稱加密演算法,對稱的意思是加密和解密是相反 對稱 的過程。我們假設a希望從b處通過加密得到一串資訊 b選擇一種加密規...