Wie gebe ich subjectAltName in der openssl-CLI an?

9

Ich generiere ein selbstsigniertes SSL-Zertifikat:

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

Ich möchte auch zum Zeitpunkt der Erstellung einen subjectAltName angeben , kann jedoch in der openssl-Manpage keine Informationen dazu finden.

Travis J Webb
quelle
2
Es gibt keinen Befehlszeilenschalter. Sie müssen es in eine Konfigurationsdatei schreiben und dann diese Konfigurationsdatei verwenden.
Steffen Ullrich

Antworten:

4

Versuchen Sie, den subjectAltName in eine temporäre Datei (ich werde sie hostextfile nennen ) wie zu schreiben

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

und im Befehl openssl über die Option "-extfile" darauf verlinken, zum Beispiel:

openssl ca -days 730 -in hostreq.pem -out -hostcert.pem -extfile hostextfile
Viktor
quelle
1
Ich glaube das ist richtig. X509v3 Betreff Alternativer Name: DNS: kb.example.com, DNS: helpdesk.example.com
quadruplebucky
Ich habe diese Beschreibung verwendet.
Viktor
3

Der opensslBefehl bietet keine Möglichkeit, Erweiterungen wie subjectAltName einzuschließen, ohne zuvor eine Konfigurationsdatei zu schreiben. Ich habe ein einfaches Dienstprogramm geschrieben, das alles automatisch erledigt. Es ist auf github verfügbar: https://github.com/rtts/certify

Anwendungsbeispiel:

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

Dadurch wird eine Datei mit dem Namen erstellt example.com.crt, die ein Zertifikat mit den alternativen Betreffnamen von example.com, www.example.com und mail.example.com enthält.

Hedgie
quelle
0

Erstellen Sie ein selbstsigniertes Zertifikat mit 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
quelle
0

Ich habe hier Informationen verwendet, diese jedoch auf die Informationen ausgedünnt, die zur Befriedigung des Browsers erforderlich sind.

Optionsdatei für x509 v3-Erweiterungen:

echo "subjectAltName = @alt_names

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

Externe Schlüsseldatei:

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

CA-Signaturanforderung: (Angenommen, Sie haben den CA-Schlüssel und das Zertifikat)

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

Unterzeichnen Sie die Anforderung zum Erstellen des Zertifikats und geben Sie die x509-Erweiterungsdaten an:

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
quelle