Kann mir jemand mit der genauen Syntax helfen?
Es ist ein dreistufiger Prozess, bei dem die openssl.cnf
Datei geändert wird. Möglicherweise können Sie dies nur mit Befehlszeilenoptionen tun, aber ich mache es nicht so.
Finden Sie Ihre openssl.cnf
Datei. Es befindet sich wahrscheinlich in /usr/lib/ssl/openssl.cnf
:
$ find /usr/lib -name openssl.cnf
/usr/lib/openssl.cnf
/usr/lib/openssh/openssl.cnf
/usr/lib/ssl/openssl.cnf
Wird auf meinem Debian- System /usr/lib/ssl/openssl.cnf
vom eingebauten openssl
Programm verwendet. Auf neueren Debian-Systemen befindet es sich unter/etc/ssl/openssl.cnf
Sie können bestimmen, welche openssl.cnf
verwendet wird, indem Sie XXX
der Datei einen Fehler hinzufügen und prüfen, ob openssl
Drosseln vorhanden sind.
Ändern Sie zunächst die req
Parameter. Fügen Sie einen alternate_names
Abschnitt openssl.cnf
mit den Namen hinzu, die Sie verwenden möchten. Es sind keine alternate_names
Abschnitte vorhanden , daher spielt es keine Rolle, wo Sie sie hinzufügen.
[ alternate_names ]
DNS.1 = example.com
DNS.2 = www.example.com
DNS.3 = mail.example.com
DNS.4 = ftp.example.com
Fügen Sie als Nächstes dem vorhandenen [ v3_ca ]
Abschnitt Folgendes hinzu . Suchen Sie nach der genauen Zeichenfolge [ v3_ca ]
:
subjectAltName = @alternate_names
Sie können keyUsage
unter folgendem Folgendes ändern [ v3_ca ]
:
keyUsage = digitalSignature, keyEncipherment
digitalSignature
und keyEncipherment
sind Standardtarif für ein Serverzertifikat. Mach dir keine Sorgen nonRepudiation
. Es ist ein nutzloses Stück, das sich Leute aus der Informatik ausgedacht haben, die Anwälte werden wollten. Es bedeutet nichts in der Rechtswelt.
Am Ende laufen die IETF ( RFC 5280 ), Browser und Zertifizierungsstellen schnell und locker, sodass es wahrscheinlich keine Rolle spielt, welche Schlüsselverwendung Sie bereitstellen.
Zweitens ändern Sie die Signaturparameter. Finden Sie diese Zeile unter dem CA_default
Abschnitt:
# Extension copying option: use with caution.
# copy_extensions = copy
Und ändern Sie es in:
# Extension copying option: use with caution.
copy_extensions = copy
Dadurch wird sichergestellt, dass die SANs in das Zertifikat kopiert werden. Die anderen Möglichkeiten zum Kopieren der DNS-Namen sind fehlerhaft.
Drittens generieren Sie Ihr selbstsigniertes Zertifikat:
$ openssl genrsa -out private.key 3072
$ openssl req -new -x509 -key private.key -sha256 -out certificate.pem -days 730
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
...
Überprüfen Sie abschließend das Zertifikat:
$ openssl x509 -in certificate.pem -text -noout
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 9647297427330319047 (0x85e215e5869042c7)
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=US, ST=MD, L=Baltimore, O=Test CA, Limited, CN=Test CA/emailAddress=test@example.com
Validity
Not Before: Feb 1 05:23:05 2014 GMT
Not After : Feb 1 05:23:05 2016 GMT
Subject: C=US, ST=MD, L=Baltimore, O=Test CA, Limited, CN=Test CA/emailAddress=test@example.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (3072 bit)
Modulus:
00:e2:e9:0e:9a:b8:52:d4:91:cf:ed:33:53:8e:35:
...
d6:7d:ed:67:44:c3:65:38:5d:6c:94:e5:98:ab:8c:
72:1c:45:92:2c:88:a9:be:0b:f9
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Key Identifier:
34:66:39:7C:EC:8B:70:80:9E:6F:95:89:DB:B5:B9:B8:D8:F8:AF:A4
X509v3 Authority Key Identifier:
keyid:34:66:39:7C:EC:8B:70:80:9E:6F:95:89:DB:B5:B9:B8:D8:F8:AF:A4
X509v3 Basic Constraints: critical
CA:FALSE
X509v3 Key Usage:
Digital Signature, Non Repudiation, Key Encipherment, Certificate Sign
X509v3 Subject Alternative Name:
DNS:example.com, DNS:www.example.com, DNS:mail.example.com, DNS:ftp.example.com
Signature Algorithm: sha256WithRSAEncryption
3b:28:fc:e3:b5:43:5a:d2:a0:b8:01:9b:fa:26:47:8e:5c:b7:
...
71:21:b9:1f:fa:30:19:8b:be:d2:19:5a:84:6c:81:82:95:ef:
8b:0a:bd:65:03:d1