OpenSSL-Signaturanforderungen mit Erweiterungen

OpenSSL-Signaturanforderungen mit Erweiterungen

Ich habe eine kleine selbstsignierte Zertifizierungsstelle für meine Entwicklungsumgebung eingerichtet. Ich möchte viele verschiedene Serverzertifikate mit unterschiedlichen Eigenschaften erstellen. Mein Ansatz besteht darin, für jeden Server einen eigenen Erweiterungsbereich zu erstellen. Ich habe eine große openssl.cnf, die Abschnitte wie diesen enthält:

[ server0_http ]

nsCertType                      = server
nsComment                       = "HTTP server0"
basicConstraints=CA:FALSE
extendedKeyUsage=serverAuth
subjectAltName=@server0_http_altnames

[ server0_http_altnames ]
URI.1 = https://server.domain.tld
URI.2 = http://server.domain.tld
IP.1  = 1.2.3.4
DNS.1 = server.doamin.tld

Wenn ich dann meine CSR erstelle, opensslverwende ich die Parameter -config myCustomOpenssl.cnf -reqexts server0_http. Wenn ich mir meine Anfrage ansehe, openssl req -text -noout -in myrequest.csrsieht alles perfekt aus.

Nachdem ich die Anfrage signiert habe, sind jedoch die Abschnitte „X509v3 Extended Key Usage“ und „X509v3 Subject Alternative Name“ verschwunden. Um dieses Problem zu beheben, habe ich auch -extfile myCustomOpenssl.cnf -reqexts server0_httpdie Parameter für den Signierungsaufruf an eingefügt openssl.

Ist das das erwartete Verhalten? Ich dachte immer, die CSR-Datei allein müsse ausreichen, um ein Zertifikat wie angefordert zu erstellen, also mit allen Abschnitten. So wie mein System derzeit funktioniert, erhalte ich ein Zertifikat mit fehlenden Abschnitten. Um das Zertifikat wie gewünscht zu erhalten, muss ich die CSR-Datei und den entsprechenden Abschnitt aus der OpenSSL-Konfigurationsdatei bereitstellen, die ich zum Erstellen der Anforderung verwendet habe. Für mein kleines Setup ist das kein Problem, aber wenn ich eine größere Zertifizierungsstelle werde, wird es ziemlich chaotisch. Soll das so sein oder verwende ich OpenSSL falsch?

Antwort1

Gefunden! Was ich beschrieben habe, ist das normale erwartete Verhalten von OpenSSL. Standardmäßig werden benutzerdefinierte Erweiterungen nicht in das Zertifikat kopiert.

Damit openssl die gewünschten Erweiterungen in das Zertifikat kopiert, das für die Signatur angegeben werden muss . In Vanilla-Installationen bedeutet dies, dass diese Zeile dem Abschnitt in copy_extensions = copyhinzugefügt werden muss .default_CAopenssl.cnf

In der openssl.cnfVersion, die (zumindest) mit Centos ausgeliefert wird, ist die Zeile bereits als Kommentar enthalten und trägt die Warnung „mit Vorsicht verwenden“. Wenn Sie nicht vorsichtig sind, können Antragsteller dies missbrauchen, um Sie dazu zu bringen, ein CA-Zertifikat auszustellen.

verwandte Informationen