Comment spécifier subjectAltName dans la cli openssl?

9

Je génère un certificat SSL auto-signé:

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

Je voudrais également spécifier un subjectAltName au moment de la création, mais je ne trouve pas d'informations dans la page de manuel openssl sur la façon de procéder.

Travis J Webb
la source
2
Il n'y a pas de commutateur de ligne de commande. Vous devez l'écrire dans un fichier de configuration, puis utiliser ce fichier de configuration.
Steffen Ullrich

Réponses:

4

Essayez d'écrire le subjectAltName dans un fichier temporaire (je vais le nommer hostextfile ) comme

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

et liez-le dans la commande openssl via l'option "-extfile", par exemple:

openssl ca -days 730 -in hostreq.pem -out -hostcert.pem -extfile hostextfile
Viktor
la source
1
Je pense que c'est exact. X509v3 Autre nom du sujet: DNS: kb.example.com, DNS: helpdesk.example.com
quadruplebucky
J'ai utilisé cette description.
Viktor
3

La opensslcommande ne fournit pas un moyen d'inclure des extensions comme subjectAltName sans écrire d'abord un fichier de configuration. J'ai écrit un utilitaire simple qui fait tout automatiquement. Il est disponible sur github: https://github.com/rtts/certify

Exemple d'utilisation:

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

Cela va créer un fichier nommé example.com.crtqui contient un certificat avec les noms alternatifs de sujet de example.com, www.example.com et mail.example.com.

hedgie
la source
0

Créer un certificat auto-signé avec 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
la source
0

J'ai utilisé des informations ici, mais je les ai diluées pour obtenir uniquement les informations nécessaires pour satisfaire le navigateur ..

Fichier d'options d'extensions x509 v3:

echo "subjectAltName = @alt_names

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

Fichier clé externe:

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

Demande de signature CA: (suppose que vous avez la clé CA et le certificat)

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

Signez la demande de création du certificat et incluez les données d'extension 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
la source