wake-up-neo.net

Name des Antragstellers ist im Zertifikat nicht vorhanden

Ich habe eine CSR erstellt, die die Namen der Feldbetreffnamen enthält:

openssl req -out mycsr.pem -new -key mykey.pem -days 365

Wenn ich das inspiziere, sieht es erwartungsgemäß aus, wenn ein neues Feld vorhanden ist:

X509v3 Subject Alternative Name:
    DNS: my.alt.dns

Wenn ich jedoch ein Zertifikat signiere, wird dieses Feld aus irgendeinem Grund weggelassen.

Ich generiere es mit dem folgenden Befehl:

openssl ca -out mycert.pem -infiles mycsr.pem

Kann es sein, dass mein CA-Zertifikat denselben Alt-Namen enthalten muss, damit es aufgenommen werden kann?

12
jimmy

Sie können verwenden:

copy_extensions = copy 

unter Ihrem CA_default-Abschnitt in Ihrem openssl.cnf.

aber nur, wenn Sie sicher sind, dass Sie den Erweiterungen in der CSR vertrauen können, wie in diesem Thread angegeben: http://openssl.6102.n7.nabble.com/subjectAltName-removed-from-CSR-when-signing -td26928.html

Siehe auch: Wie kann ich mit SubjectAltName mit OpenSSL ein selbstsigniertes Zertifikat erstellen?

13
Hans Z.

Für alle, die den systemweiten openssl.conf nicht bearbeiten möchten, gibt es eine native CLI-Option für das Öffnen von Ss, mit der die SANs aus einem .crt zum .csr hinzugefügt werden können. Sie müssen nur die CLS-Parameter -extfile und -extensions von openssl verwenden.

Hier ist ein Beispiel:

openssl x509 -req -days 3650 -in alice.csr -signkey aliceprivate.key -out alice.crt -extfile alice-csr.conf -extensions v3_req

Dies erfordert eine alice-csr.conf -Datei, die wie folgt aussieht (geben Sie die entsprechenden Daten ein) und wurde verwendet, um den .csr mit dem Befehl openssl req -new -key aliceprivate.key -out alice.csr -config alice-csr.conf zu generieren:

[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req
Prompt = no

[req_distinguished_name]
C = DE
ST = Thuringia
L = Erfurt
O = Alice Corp
OU = Team Foo
CN = server-alice

[v3_req]
keyUsage = keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = server-alice
DNS.2 = localhost

Beachten Sie, dass die Option -extensions v3_req dem Abschnitt [v3_req] in der Datei alice-csr.conf entspricht, in dem Sie die alternativen Antragstellernamen (Domains) definieren, die die Domains angeben, für die Sie Ihr Zertifikat ausstellen möchten.

Da ich immer verständliche Beispiele schätze, bei denen jeder Schritt reproduziert werden konnte, erstellte ich ein Beispielprojekt mit Spring Boot-Mikrodienstleistungen: https://github.com/jonashackt/spring-boot-rest-clientcertificates-docker-compose

1
jonashackt