我如何成為我自己的憑證授權單位 (CA) 並為我的客戶端電腦產生 ssh 金鑰

我如何成為我自己的憑證授權單位 (CA) 並為我的客戶端電腦產生 ssh 金鑰

我看過很多關於如何成為自己的憑證授權單位 (CA) 的教學。我看到的教學是關於如何產生 ssl 金鑰而不是 ssh 金鑰,所以我想知道如何產生像 Ubuntu Server 14.04 LTS 中的 ssh 金鑰?我想這樣做的原因是我可以更好地管理 ssh 金鑰,並允許我在他們離開公司時撤銷它們,這樣他們就無法再訪問該伺服器了。

答案1

你不能。 SSH 不會查看 CRL 或類似的內容來查看金鑰是否仍然有效。如果您希望能夠輕鬆刪除離開商店的人員對伺服器的存取權限,我可以想到兩個選擇:

  1. 不要直接管理金鑰,而是透過像 puppet 這樣的東西來管理它們(這直接支援在檔案中新增和刪除單一金鑰authorized_keys)。這樣,您只需在一個位置新增或刪除 ssh 金鑰,並且 puppet 可確保在所有主機上啟動更改
  2. 完全停用PubKeyAuthentication,切換到具有中央身份驗證系統的其他身份驗證(例如,Kerberos 確實允許無密碼身份驗證並具有中央身份驗證資料庫,但對於外行人來說設定起來有些複雜)。

答案2

OpenSSH 自 5.4 版起就有了自己的實際憑證。它們在結構上比 X509 憑證更簡單,但具有許多相似的功能。

您建立常規 ssh 金鑰對並用作 CA。最好是一個主機 CA 和一個使用者 CA。然後您可以使用 ssh-keygen 與此 CA 簽署公鑰。例如

ssh-keygen -s /path/to/ca_key -I key_id -z serial \
-n principal1,principal2 -V +53w /path/to/user_key.pub

此命令將建立一個名為 user_key-cert.pub 的文件,該文件現在是您的憑證。此憑證的有效期為 53 週,可用於在信任簽署金鑰的 CA 的任何主機上以主體 1 和主體 2 身分登入。

要告訴 sshd 要信任這個 CA,只要像這樣引用 sshd_config 中的 ca_key.pub

TrustedUserCAKeys /etc/ssh/ca_key.pub

還有幾種撤銷 ssh 憑證的方法(您的實際問題),這些方法在 openssh 的手冊中提到。但 sshd_config 中的基本選項是 RevokedKeys。為此,您可以使用文字檔案或二進位 KRL。

有關更多信息,我編寫了一些有關 SSH CA 的指南 https://framkant.org/2016/10/setting-up-a-ssh-certificate-authority-ca/

對於更細粒度和可擴展的存取控制,請查看: https://framkant.org/2017/07/scalable-access-control-using-openssh-certificates/

相關內容