如何在 Debian 中撤銷 OpenVPN 客戶端證書
我使用這些
easy-rsa/2.0
程序為 OpenVPN 建構伺服器和客戶端證書。我將客戶端的內容與ca.crt
. 都好。我現在需要從被盜的筆記型電腦上吊銷客戶端證書。裡面有
/usr/share/doc/openvpn/examples/easy-rsa/2.0
一個撤銷腳本。我已經成功執行它,它顯示“數據庫已更新”。它在範例/文件文件夾的子目錄中創建了一些文件。我已將創建的複製
crl.pem
到/etc/openvpn/crl.pem
並添加crl-verify /etc/openvpn/crl.pem
到server.conf
.有什麼方法可以驗證我做了正確的事情並且它確實會阻止訪問?
另外,我不清楚這個“數據庫”儲存在哪里或它指的是什麼?有沒有辦法檢查這個數據庫?
在easy-rsa 目錄中有一個’revoke-full’ 文件。當您使用使用者/密鑰作為參數執行此腳本時,easy-rsa/keys 目錄中的 index.txt 文件將被更新。
您會在使用者的左側第一列中看到一個“R”(表示已撤銷)。
在我的伺服器上,我沒有 easy-rsa 腳本,但是您可以在沒有 easy-rsa 的情況下手動使用
openssl
.很多資訊都取自這個有用的資源,但是如果你的 OpenVPN 伺服器像我的一樣設置,證書頒發機構與 OpenVPN 伺服器設置一起配置,客戶端證書在伺服器上生成(我使用 Ansible + Sovereign 來設置多個使用者的證書)。
# as root in /etc/openvpn openssl ca -config openssl-server-certificate.cnf -revoke /path/to/client.crt
這將吊銷證書並更新數據庫,但您仍需要確保 OpenVPN 正在檢查證書吊銷列表,因此編輯
server.conf
並檢查以crl-verify
. 如果找不到,請添加:crl-verify /usr/share/openvpn/openssl-server.crl
(您可以使用任何您想要的路徑,但大多數 OpenVPN 伺服器都配置為執行,
nobody:nobody
因此您需要一些全球可執行的路徑 - 不是/etc/openvpn
)最後告訴 OpenSSL 重新生成吊銷列表
openssl ca -config openssl-server-certificate.cnf -gencrl -out /usr/share/openvpn/openssl-server.crl
(或您的撤銷列表所在的任何地方)。重新啟動 OpenVPN 服務,它應該拉入對配置的更改並在驗證連接請求時使用 CRL - 如果證書被吊銷,則連接將被丟棄。