我想建立一個帶有 CRL 分發點的證書,其中包含多個 URL(根據 RFC 5280,指向同一個 CRL):
當 OpenSSL 解析此類憑證時,它會顯示如下內容:
X509v3 CRL Distribution Points:
Full Name:
URI:http://addr1
URI:http://addr2
...
如何自己建立這樣的證書,最好使用 openssl?
答案1
要定義 GeneralNames 的序列,您需要使用完整格式在 OpenSSL 設定中定義 crlDistributionPoints:
crlDistributionPoints = cdp1
...
[cdp1]
fullname = URI:http://example.com/myca.crl,URI:http://example.org/my.crl
顯示為:
X509v3 CRL Distribution Points:
Full Name:
URI:http://example.com/myca.crl
URI:http://example.org/my.crl
一個完整的範例將首先建立一個設定檔(例如example.cnf
):
[req]
prompt = no
distinguished_name = dn
[dn]
countryName = gb
organizationName = Example
commonName = Example Web Server
[ext]
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer
keyUsage = critical, digitalSignature, keyAgreement
extendedKeyUsage = serverAuth
crlDistributionPoints = cdp1
subjectAltName = @alt_names
[cdp1]
fullname = URI:http://example.com/myca.crl, URI:http://example.org/my.crl
[alt_names]
DNS.1 = www.example.com
DNS.2 = www.example.org
使用設定產生憑證簽章請求 (CSR):
openssl req -newkey rsa:2048 -keyout example.key -nodes -config example.cnf -out example.csr
請注意,上面建立了一個沒有密碼保護的 2048 位元 RSA 金鑰。-nodes
如果您需要密碼保護私鑰,請刪除。
讓 CA 對上面產生的 CSR 進行簽署。