延長 OpenVPN 憑證的有效期限

延長 OpenVPN 憑證的有效期限

我有一個 openvpn 伺服器,客戶端使用 ssl 憑證進行驗證。每當用戶端憑證過期時,必須頒發新憑證並將其傳送給客戶端。

我發現 openvpn 的 easyrsa 有一個更新命令但 AFAIK 並沒有真正更新:Easyrsa「renew」是一個誤導性名稱 · 問題 #345 · OpenVPN/easy-rsa

所以問題是:技術上是否可以延長 ssl 憑證的有效性,無論它是否過期,以避免向客戶端使用者傳送新檔案?

答案1

這是一個非常好的問題:-)。

Technically : yes (at the end the client could use expired one to connect)
Easily : no

原則上不可能,因為 CA 簽署具有特定有效期的憑證要求,因此無法延期。您可以做什麼來建立新證書,棘手的部分可能是在頒發過程中和檢查有效性的過程中。

首先,公平地說,以下內容在技術上與一般證書相關,並且我沒有使用 openvpn 對其進行測試 - 如果它無法通過,則總體答案是否定的:-(。

在 openVPN 設定中,有 3 個與憑證相關的參數 - ca、key 和 cert。

  • key :資料簽章的私鑰。可用於解密由證書

  • cert :公鑰(源自鑰匙)來確認密鑰簽署的資料的有效性。它可用於加密金鑰的資料。這將在安全連線協商期間提供給「另一端」。 / 這種情況適用於遠端已知有效憑證的情況,因此發送憑證可能是可選的,並且可以忽略過期的憑證/

  • ca :用於檢查安全連線協商時提供的憑證的有效性。

一旦客戶端憑證過期,情況就是這樣證書已經過時了。原則上金鑰不會過期,且 CA 不應過期(在這種情況下,這是完全不同的用例;-))。憑證包含有效期限,它是由 CA 以 x.509 結構簽署的「信封」的一部分。

透過產生新憑證來產生新金鑰是一種很好的做法,但沒有什麼強制執行此步驟,因此從技術上講,使用與實際過期憑證相同的金鑰建立 CSR(憑證簽署請求)不是問題。如果您有可用的舊 CSR,您可以直接將其用於新憑證。一旦此 CSR 與 CA 簽署,新憑證就會從「舊」金鑰衍生出來。

棘手的部分是您需要(其中之一):

  • 將此新證書交付給目前使用者以取代證書

  • 了解伺服器有關此憑證的信息,以便可以使用它來代替客戶端提供的過期憑證(這是此用例的理論部分;-))

我所知道的是,您可以將更多 CA 憑證組合在一起加州檔案連結到伺服器上的配置中沒有問題(PEM 格式)。從技術上講,“用戶”證書和“ca”證書在參數上有所不同,說明它是否可以用作 CA。因此從技術上講,您可以將 CA 憑證與新產生的憑證合併到一個文件中...

一旦該檔案就位(最有可能需要重新啟動 openvpn 伺服器),您可以嘗試建立新連線。一旦擁有金鑰的客戶端嘗試連接,伺服器可能會根據與伺服器上的客戶端憑證配對的雜湊來「識別」金鑰,並忽略客戶端提供的憑證(這必須經過測試) )。從技術上講(從證書作為技術的角度來看)它可以工作,但我沒有嘗試使用 openVPN。由於 openVPN 使用外部程式庫來處理 SSL 內容,因此它可能是可行的方法;-)。

在客戶端,需要 CA 來證明伺服器端(未過期)、用於簽署和解密通訊的金鑰(未過期),並且本地操作並不真正需要自己的證書,因此過期的證書並不是真正的問題。伺服器的憑證是在 SSL 協商期間取得的,並使用本機 CA 憑證進行檢查,因此所需的一切都可用(本機金鑰、遠端憑證)。

這種方法的缺點是,您會稍微失去 CA 作為客戶端憑證驗證的單一憑證的好處(您需要將其列在 CA 憑證旁邊的伺服器端),但另一方面,優點是可以續訂憑證.. .

如果您想嘗試,請隨時提供回饋...

祝你好運!


規劃時的另一種方法可以是頒發長有效期證書,並利用 CRL(證書重新定位清單)撤銷在此期間無效的證書。但這不是這個問題的範圍......

相關內容