Ich versuche, ein selbstsigniertes Zertifikat mit OpenSSL mit SubjectAltName zu generieren. Während ich die CSR für das Zertifikat generiere, muss ich vermutlich v3-Erweiterungen von OpenSSL x509 verwenden. Ich benutze :
openssl req -new -x509 -v3 -key private.key -out certificate.pem -days 730
Kann mir jemand mit der genauen Syntax helfen?
ssl
openssl
ssl-certificate
x509certificate
x509
Mohanjot
quelle
quelle
Antworten:
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
:Wird auf meinem Debian- System
/usr/lib/ssl/openssl.cnf
vom eingebautenopenssl
Programm verwendet. Auf neueren Debian-Systemen befindet es sich unter/etc/ssl/openssl.cnf
Sie können bestimmen, welche
openssl.cnf
verwendet wird, indem SieXXX
der Datei einen Fehler hinzufügen und prüfen, obopenssl
Drosseln vorhanden sind.Ändern Sie zunächst die
req
Parameter. Fügen Sie einenalternate_names
Abschnittopenssl.cnf
mit den Namen hinzu, die Sie verwenden möchten. Es sind keinealternate_names
Abschnitte vorhanden , daher spielt es keine Rolle, wo Sie sie hinzufügen.Fügen Sie als Nächstes dem vorhandenen
[ v3_ca ]
Abschnitt Folgendes hinzu . Suchen Sie nach der genauen Zeichenfolge[ v3_ca ]
:Sie können
keyUsage
unter folgendem Folgendes ändern[ v3_ca ]
:digitalSignature
undkeyEncipherment
sind Standardtarif für ein Serverzertifikat. Mach dir keine SorgennonRepudiation
. 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:Und ändern Sie es in:
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:
Überprüfen Sie abschließend das Zertifikat:
quelle
openssl genrsa -out cert.key 3072 -nodes
openssl req -new -x509 -key cert.key -sha256 -config openssl.cnf -out cert.crt -days 730 -subj "/C=US/ST=private/L=province/O=city/CN=hostname.example.com"
subjectAltName=$ENV::ALTNAME
(und setzen Sie die Umgebung var.ALTNAME=DNS:example.com,DNS:other.example.net
).IP
anstelle vonDNS
for verwenden,alternate_names
wenn Sie mit einer IP-Adresse arbeiten. Sie können die Konfigurationsdatei auch lokal kopieren und dann in der openssl-Befehlszeile mit angeben-config my_config.cnf
. Und Sie müssen möglicherweise auskommentierenreq_extensions = v3_req
.