Security
使用無密碼 OpenVPN 客戶端密鑰的利弊
我正在為我的組織設置 OpenVPN 伺服器,並且正在閱讀客戶端密鑰的不同工作方式。我對這些客戶端密鑰和帳戶身份驗證背後的所有概念仍然有些陌生。
- 使用 ./build-key-pass 與 ./build-key 生成客戶端密鑰的真正好處是什麼?這是否類似於保護 SSH 密鑰的密碼?並非我們所有需要帳戶的員工都精通技術,那麼是否值得引入另一個設置步驟?
- 我現在看到在使用客戶端密鑰時可以選擇不需要典型的使用者名/密碼身份驗證。我的計劃是在伺服器上為每個客戶端做一個使用者添加。如果我不使用 user-pass auth 設置,那麼我將如何撤銷對特定客戶端的訪問權限?
- 如何安全地將這些客戶證書傳遞給需要帳戶的所有員工?我相信 client.key 文件應該是私有的,並且通過電子郵件發送文件似乎是不安全的。
要回應您的每個觀點:
1 - 您將 OpenVPN 密鑰的密碼保護類比為 SSH 密鑰的密碼保護是正確的。
2 - 不使用任何額外的身份驗證方法 OpenVPN 僅依靠伺服器驗證客戶端證書(理想情況下客戶端驗證伺服器證書)來驗證客戶端。這使得撤銷單個客戶端的訪問權限只需將客戶端的證書添加到證書撤銷列表 (CRL)(受 OpenVPN 1.5 及更高版本支持)或從客戶端刪除密鑰材料(或切換所有您的證書)其他客戶)。如果您不使用其他身份驗證方法,則需要有一個 CRL 以允許客戶端訪問撤銷。
請記住,保護密鑰的密碼對您完全沒有幫助:額外的身份驗證。該密碼只是“解鎖”客戶端設備上的密鑰——它並不能緩解客戶端上的使用者對伺服器電腦的附加身份驗證問題(以及訪問撤銷問題)。
3 - 您應該在客戶端自己生成私鑰/公鑰對,而不是通過網路傳輸它們。您可以在客戶端生成證書請求,將公鑰(在證書籤名請求中)發送到您的 CA 進行簽名,然後在客戶端上安裝簽名證書。這一切都可以編寫腳本,我相信有人已經這樣做了(我希望商業許可的 OpenVPN 產品可能內置了一些功能)。
我發現這個My Certificate Wizard項目就是為此目的而編寫的,但我會使用 OpenSSL 命令行工具在客戶端上編寫整個過程的腳本,以試圖使整個過程對使用者幾乎不可見。