Como especifico subjectAltName no openssl cli?

9

Estou gerando um certificado SSL autoassinado:

$ openssl req -x509 -newkey rsa:2048 -subj 'CN=example.com'

Gostaria de especificar um subjectAltName também no momento da criação, mas não consigo encontrar informações na página de manual do openssl sobre como fazer isso.

Travis J Webb
fonte
2
Não há opção de linha de comando. Você precisa gravá-lo em um arquivo de configuração e depois usá-lo.
Steffen Ullrich

Respostas:

4

Tente escrever o subjectAltName em um arquivo temporário (que eu chamo de hostextfile ) como

basicConstraints=CA:FALSE
extendedKeyUsage=serverAuth
subjectAltName=email:[email protected],RID:1.2.3.4

e vincule-o no comando openssl através da opção "-extfile", por exemplo:

openssl ca -days 730 -in hostreq.pem -out -hostcert.pem -extfile hostextfile
Viktor
fonte
1
Eu acredito que isso está correto. Nome alternativo do assunto X509v3: DNS: kb.example.com, DNS: helpdesk.example.com
quadruplebucky
Eu usei essa descrição.
18140 Viktor
3

O opensslcomando não fornece uma maneira de incluir extensões como o subjectAltName sem antes gravar um arquivo de configuração. Eu escrevi um utilitário simples que faz tudo automaticamente. Está disponível no github: https://github.com/rtts/certify

Exemplo de uso:

./certify example.com www.example.com mail.example.com

Isso criará um arquivo nomeado example.com.crtque contém um certificado com os Nomes alternativos de assunto de example.com, www.example.com e mail.example.com.

hedgie
fonte
0

Criar certificado autoassinado com SubjectAltName

cd /etc/ssl

cat > my.conf <<- "EOF"
[req]
default_bits = 2048
prompt = no
default_md = sha256
req_extensions = req_ext
distinguished_name = dn

[ dn ]
C=UA
ST=Dnepropetrovskaya
L=Kamyanske
O=DMK
OU=OASUP
emailAddress=webmaster@localhost
CN = www.dmkd.dp.ua

[ req_ext ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names

[ alt_names ]
DNS.0 = www.dmkd.dp.ua
DNS.1 = dmkd.dp.ua

EOF

# Create key
openssl genrsa -des3 -out server.key.secure 2048
# Disable secret phrase for key
openssl rsa -in server.key.secure -out server.insecure.key
# Create request certificate file with params from file my.conf
openssl req -new -key server.insecure.key -out server.csr -config my.conf
# Create certificate with params from file my.conf
openssl x509 -req -days 365 -in server.csr -signkey server.insecure.key -out server.crt -extensions req_ext -extfile my.conf
# Check request file and certificate for SubjectAltName precense
openssl req -text -noout -in server.csr
openssl x509 -in server.crt -text -noout
venoel
fonte
0

Usei as informações aqui, mas reduzi-as apenas às informações necessárias para satisfazer o navegador.

arquivo de opção de extensões x509 v3:

echo "subjectAltName = @alt_names

[alt_names]
DNS.1 = www.example.com" > v3.ext

Arquivo de Chaves Externo:

openssl genrsa -out www.example.com.key 2048

Solicitação de assinatura da CA: (assume que você possui a chave e o certificado da CA)

openssl req -new -key www.example.com.key -subj "/CN=www.example.com" -out www.example.com.csr

Assine a solicitação para criar o certificado e inclua os dados da extensão x509:

openssl x509 -req -in www.example.com.csr -CA ca.example.com.crt -CAkey ca.example.com.key -CAcreateserial -out www.example.com.crt -days 500 -sha256 -extfile v3.ext
barrypicker
fonte