Ich möchte ein Zertifikat mit CRL-Verteilungspunkt erstellen, das mehrere URLs enthält (die gemäß RFC 5280 auf dieselbe CRL verweisen):
Wenn OpenSSL ein solches Zertifikat analysiert, wird ungefähr Folgendes angezeigt:
X509v3 CRL Distribution Points:
Full Name:
URI:http://addr1
URI:http://addr2
...
Wie erstelle ich ein solches Zertifikat selbst, vorzugsweise mit OpenSSL?
Antwort1
Um eine SEQUENZ von GeneralNames zu definieren, müssen Sie die crlDistributionPoints in Ihrer OpenSSL-Konfiguration im vollständigen Format definieren:
crlDistributionPoints = cdp1
...
[cdp1]
fullname = URI:http://example.com/myca.crl,URI:http://example.org/my.crl
Es wird angezeigt als:
X509v3 CRL Distribution Points:
Full Name:
URI:http://example.com/myca.crl
URI:http://example.org/my.crl
Ein vollständiges Beispiel würde mit der Erstellung einer Konfigurationsdatei beginnen (z. B. 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
Verwenden Sie die Konfiguration, um eine Zertifikatsignieranforderung (CSR) zu generieren:
openssl req -newkey rsa:2048 -keyout example.key -nodes -config example.cnf -out example.csr
Beachten Sie, dass oben ein 2048-Bit-RSA-Schlüssel ohne Kennwortschutz erstellt wird. Entfernen Sie ihn, -nodes
wenn Sie den privaten Schlüssel mit einem Kennwort schützen müssen.
Lassen Sie die oben generierte CSR von einer Zertifizierungsstelle unterzeichnen.