Openssl

帶有 CRL DP 的自簽名證書?這甚至可能嗎?

  • December 15, 2018

我習慣於通過以下方式創建供本地使用的自簽名證書:

openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 365 -out  certificate.pem
openssl pkcs12 -inkey key.pem -in certificate.pem -export -out certificate.p12

今天,經過長時間的會議,我被要求創建一個標準的自簽名證書,其中包含一個沒有根 ca 的 CLR 分發點。我總是使用基於 CA 的 CRL DP 創建證書。創建沒有 CA 的自簽名證書後如何生成 CRL?這甚至可能嗎?

簽署證書時,請使用該extfile選項,您應在其中指定包含以下內容的文件:

crlDistributionPoints=URI:http://example.com/crl.pem

為此,不要直接使用 openssl 創建證書,而是創建一個 csr(使用-new帶有 的選項openssl req)和密鑰,然後按照此範例生成證書(如果需要,使用您自己的文件名和參數):

openssl x509 -req -in cert.csr -out cert.pem -signkey key.pem -extfile crlfile.ext

您可以通過以下方式驗證最終結果:

openssl x509 -in cert.pem -noout -text

作為旁注,這對於提高安全性沒有意義。這樣的 CRL 需要使用與證書相同的密鑰進行簽名,以便如果密鑰被洩露,則可以創建一個新的、乾淨的 crl,並認為來自相同的洩露密鑰是有效的。

要使用 openssl 創建 CRL,您應該使用其 CA 函式,如此所述。不同之處在於 CA 密鑰將是您的證書密鑰,而撤銷的證書將是證書本身。正如您所看到的,這不應該以這種方式工作,即使您最終獲得了一個帶有 CDP 的自簽名證書,以及一個“有效”的 crl,實際上,它通過撤銷簽署它的證書使其自身無效。

引用自:https://unix.stackexchange.com/questions/403191