Debian

如何在 Debian 中撤銷 OpenVPN 客戶端證書

  • September 29, 2021

我使用這些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.pemserver.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 - 如果證書被吊銷,則連接將被丟棄。

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