Я хотел бы создать сертификат с точкой распространения CRL, которая содержит несколько URL-адресов (указывающих на один и тот же CRL, согласно RFC 5280):
Когда OpenSSL анализирует такой сертификат, он выводит что-то вроде этого:
X509v3 CRL Distribution Points:
Full Name:
URI:http://addr1
URI:http://addr2
...
Как создать такой сертификат самостоятельно, желательно с помощью openssl?
решение1
Чтобы определить ПОСЛЕДОВАТЕЛЬНОСТЬ GeneralNames, вам необходимо определить crlDistributionPoints в вашей конфигурации OpenSSL, используя полный формат:
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, сгенерированный выше.