Pessoalmente, eu adiciono os nomes alternativos na geração CSR, então eu sei que funciona (há um pequeno byplay nos arquivos conf padrão tanto para geração quanto para assinatura).
Para alterar depois, até onde eu me lembro, os Alt Names são extensões, e parece que você pode substituir ou adicionar as extensões que deseja enquanto faz a assinatura. Eu vou descaradamente copiar:
From: Patrick Patterson @carillonis.com
Newsgroups: mailing.openssl.users
Subject: Re: Sign CSR after modifying data in CSR possible?
Date: Tue, 5 Jan 2010 15:14:05 -0500
Message-ID: <mailpost.1262722567.7762451.82829.mailing.openssl.users@FreeBSD.cs.nctu.edu.tw>
quando você está usando o comando openssl CA (por incrível que pareça: openssl ca), você pode fornecer várias opções, incluindo qual valor de Subject usar (o argumento -subj
) e quais extensões usar (via -extfile
e -extensions
argumentos).
para que você possa definir quais extensões deseja e qual Assunto deseja (fazendo com que ambos os valores no CSR sejam completamente ignorados) por um comando como:
openssl ca -config /etc/myca/openssl.cnf \
-extfile /etc/myca/openssl-exts.cnf \
-extension sig-medium \
-subj "/C=CA/O=Example Company/OU=Engineering/CN=John Doe" \
-in req.csr \
-out john-doe.pem
Onde:
/etc/myca/openssl-exts.cnf contém:
[ sig-medium ]
basicConstraints = CA:FALSE
keyUsage = critical, digitalSignature
extendedKeyUsage = emailProtection, anyExtendedKeyUsage
nsComment = "Do Not trust - PURE TEST purposes only"
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer
subjectAltName = @testsan
authorityInfoAccess = @aia_points
crlDistributionPoints = @crl_dist_points
[ testsan ]
email = [email protected]
DNS = www.example.com
dirName = test_dir
URI = http://www.example.com/
IP = 172.16.0.1
otherName.0 = 1.3.6.1.4.1.311.20.2.3;UTF8:[email protected]
otherName.1 = 1.3.6.1.5.5.7.8.7;IA5STRING:_mail.example.com
otherName.2 = 1.3.6.1.5.5.7.8.5;UTF8:[email protected]
[aia_points]
caIssuers;URI.0=http://www.example.com/caops/Signing-CA.p7c
caIssuers;URI.1=ldap://dir.example.com/<DN of Signing
CA>?cACertificate;binary?base?objectclass=pkiCA
[crl_dist_points]
URI.0=http://www.example.com/caops/test-signca1-crl.crl
URI.1=ldap://dir.example.com/<DN of Signing
CA>?certificateRevocationList;binary?base?objectclass=pkiCA