Gostaria de criar um certificado com ponto de distribuição de CRL, que contenha vários URLs (apontando para a mesma CRL, conforme RFC 5280):
Quando o OpenSSL analisa esse certificado, ele mostra algo assim:
X509v3 CRL Distribution Points:
Full Name:
URI:http://addr1
URI:http://addr2
...
Como criar esse certificado sozinho, de preferência usando o openssl?
Responder1
Para definir uma SEQUÊNCIA de GeneralNames você precisa definir os crlDistributionPoints em sua configuração OpenSSL usando o formato completo:
crlDistributionPoints = cdp1
...
[cdp1]
fullname = URI:http://example.com/myca.crl,URI:http://example.org/my.crl
O que aparece como:
X509v3 CRL Distribution Points:
Full Name:
URI:http://example.com/myca.crl
URI:http://example.org/my.crl
Um exemplo completo começaria criando um arquivo de configuração (por exemplo 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
Use a configuração para gerar uma solicitação de assinatura de certificado (CSR):
openssl req -newkey rsa:2048 -keyout example.key -nodes -config example.cnf -out example.csr
Observe que o procedimento acima cria uma chave RSA de 2.048 bits sem proteção por senha. Remova -nodes
se precisar proteger com senha a chave privada.
Faça com que uma CA assine o CSR gerado acima.