Openssl
帶有 CRL DP 的自簽名證書?這甚至可能嗎?
我習慣於通過以下方式創建供本地使用的自簽名證書:
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,實際上,它通過撤銷簽署它的證書使其自身無效。