Openvpn

使用 OpenVPN 選項獲取客戶端證書

  • February 28, 2021

我想為 OpenVPN 製作自定義證書,而不使用使用者名和密碼身份驗證選項,而是直接將身份驗證憑據放入客戶端證書中。這將用於跨多個節點的更靈活的身份驗證系統,而無需在每個節點上本地創建客戶端證書。

基本上,客戶端證書將保持不變,除了證書本身內部有一個令牌以及客戶端連接到節點時。該節點將使用令牌對客戶端進行身份驗證。在不使用使用者名和密碼的情況下實現此目的的最佳方法是什麼。

謝謝你。

這包含在OpenVPN 手冊中。

為每個使用者創建一個憑證文件,這是一個只有兩行的文本文件:

username
password

行分隔符必須是CRCRLF(例如標準的 Unix 或 Windows 分隔符)。我們稱這個文件為vpn.auth

然後,將以下行添加到客戶端配置中:

...
auth-user-pass vpn.auth
...

如果auth-user-pass已經存在,則需要為其添加一個參數——一個包含使用者名和密碼的文件名。

為此,您的 OpenVPN 必須使用 ENABLE_PASSWORD_SAVE 定義進行編譯(通常是這種情況)。OpenVPN 3.x(僅限客戶端的 OpenVPN 版本)也不支持它,因此不要使用該版本;使用 OpenVPN 社區版 2.5 或更高版本。

**依賴此作為唯一的身份驗證機製本質上是不安全的。**這應該僅作為一種附加機制來實現。它的目的不是用個人證書和私鑰替換主要的基於非對稱加密的身份驗證機制,而是要增強它。在規劃 OpenVPN 時,您必須將它使用個人密鑰和證書的事實視為理所當然,並實施您的 VPN 使用者管理,以便它執行所有必要的密鑰生成和簽名。如果您已經有一些腳本,則必須更新它們以包括為每個人生成密鑰!

引用自:https://serverfault.com/questions/1055232