Openvpn

在驗證證書時,如何讓 OpenVPN 使用我的 CA 的 CRL 分發點?

  • June 5, 2017

我有一個現有的 PKI,我正在嘗試將 OpenVPN 伺服器集成到其中。我已將CRL 分發點包含在我的鏈中的每個 CA 證書中,並將 CRL 發佈在可從我的 OpenVPN 伺服器訪問的位置。

問題是 OpenVPN 伺服器似乎完全忽略了CRL 分發點擴展,而是支持自己的--crl-verify選項。如果我撤銷使用者的證書並發布新的 CRL,OpenVPN 將很樂意繼續讓該客戶端連接。我不明白為什麼 OpenVPN 不閱讀這些擴展,因為它們正是為此目的而添加的。

我只能想到 2 種替代方法來檢查我的 CRL:

  1. 我可以有一個將 CRL 複製到 OpenVPN 伺服器並使用該--crl-verify選項的 cronjob。但是由於我有一系列 CA,如何將所有 CRL 放入一個文件中?如果我使用的文件夾模式--crl-verify,是不是鏈中的每個CA都有自己的序列號方案有問題?

2)我試圖避免呼叫任何外部腳本,而只使用內置的東西,假設我手動做的越多,我就越有可能引入安全漏洞。我錯了嗎?編寫我自己的腳本來檢查我的 CRL 是否正確?

有什麼方法可以讓 OpenVPN 檢查證書鏈中包含的CRL 分發點,最好使用 OpenVPN 本身內置的機制?

編輯:很高興知道在客戶端是否也有任何方法可以做到這一點(即,讓客戶端檢查 OpenVPN 伺服器證書的有效性)。如果--crl-verify採用 URL 會簡單得多。

我相信你是正確的,OpenVPN 沒有這個功能。

至於為什麼,除了普遍認為 OpenVPN 更普遍地設置為專用 PKI的相當簡單的 easy-rsa之外,我沒有其他答案。

--crl-verify ...對於多個 CA 的 CRL似乎不會很好。

但是,如果您使用--capath dir而不是--ca file配置您的 CA,則該capath選項需要該目錄中的 CA 證書和 CRL。如果您定期將 CRL 導出到 OpenVPN 伺服器,我相信這將是一個可行的選擇。

另一種選擇,我同意你應該小心它是如何實現的,那就是掛鉤腳本。

您可以將--tls-verify cmd鉤子與--tls-export-cert directory環境peer_cert變數結合使用。

這將允許您的自定義腳本以及手頭的對等證書對 TLS 握手是否成功擁有最終決定權。

(有關詳細資訊,請參閱手冊中的上述配置選項。)

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