OpenSSL - Adicionar nome alternativo de assunto (SAN) ao assinar com CA

3

Como posso adicionar um nome alternativo de assunto ao assinar uma solicitação de certificado usando o OpenSSL (no Windows, se isso for importante)?

Gerei uma solicitação básica de assinatura de certificado (CSR) na interface do IIS. Agora, gostaria de adicionar vários nomes alternativos de assunto, assiná-lo com um certificado raiz existente e retornar o certificado para concluir a solicitação de assinatura.

Todo tutorial que eu encontrei envolve a geração de uma nova chave privada e um novo CSR, no entanto fiquei com a impressão de que a chave privada reside no computador solicitante (ao qual eu não necessariamente teria acesso). Eu só quero assinar o pedido ao adicionar os nomes alternativos. Sou relativamente novo nos tópicos do OpenSSL e CA, o que pode ser um mal-entendido da minha parte.

    
por mechgt 27.05.2016 / 20:12

1 resposta

7

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
    
por 27.05.2016 / 20:29