Ich erhalte den folgenden Fehler von openssl req
:
unable to find 'distinguished_name' in config
problems making Certificate Request
41035:error:0E06D06C:configuration file routines:NCONF_get_string:no value:/SourceCache/OpenSSL098/OpenSSL098-52.30.1/src/crypto/conf/conf_lib.c:329:group=req name=distinguished_name
Mein Verständnis ist , dass dies die „Subject“ ist , dass es nicht ... aber nicht finden, ich bin angeben , dass:
openssl req -new \
-key "$PRIVATE_KEY" \
-sha256 \
-config "$OPTIONS_FILE" \
-subj "/C=US/ST=California/L=San Francisco/O=ACME, Inc./CN=*.*.$DOMAIN/" \
-out "$CSR_FILENAME"
Der einzige Vorschlag des Handbuchs ist, dass die Konfigurationsdatei nicht existiert. Ich kann cat "$OPTIONS_FILE"
, also ist es definitiv da, und dem Fehler geht nicht der Fehler voraus, sondern die manuelle Notiz, der er vorausgehen würde, wenn dies der Fall wäre. Ich bin mir also ziemlich sicher, openssl
dass die Konfigurationsdatei angezeigt wird.
Meine Konfigurationsdatei enthält Folgendes:
[req]
req_extensions = v3_req
[ v3_req ]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = *.*.example.com
... was im wahrsten Sinne des Wortes das Beispiel in den Dokumenten ist .
Was mache ich hier falsch?
*.*.example.com
ist ungültig. (Sie können nur 1*
und nur in der Komponente ganz links haben.) Dies bezieht sich nicht auf das Problem hier, aber nicht blind c / p.Antworten:
Fast wie ich sehen kann ,
-config
überschreibt es eine Art interne Konfiguration; Wenn Sie den Abschnitt "BEISPIELE" für die Manpage für openssl req sehen , zeigt er ein Beispiel einer Konfigurationsdatei mitdistinguished_name
darin. Aus gutem Grund habe ich meiner Konfiguration Folgendes hinzugefügt:Somit sah meine gesamte Konfiguration ungefähr so aus
(Beachten Sie, dass dies
${DOMAIN}
kein wörtliches Wort ist. Sie sollten es durch Ihren DNS-Domänennamen ersetzen. Ich erstelle diese Datei in einembash
Skript mitcat >"$OPTIONS_FILE" <<EOF
, gefolgt von dem oben Gesagten, gefolgt von.EOF
)openssl req … -subj <my subject> -config <that file> …
dann nahm mein Thema von der Kommandozeile. Für die Interessenten sah der gesamte Befehl folgendermaßen aus:Meines Wissens nach ist SHA-1 für X.509-Zertifikate veraltet¹, daher
-sha256
(was ein undokumentiertes Flag ist…), und subjectAltName wird erforderlich², weshalb die Konfiguration erforderlich ist. Die einzige zusätzliche Information, die mir bekannt ist, um eine Best-Practice-CSR für das oben Genannte zu generieren, ist, dass Sie eine RSA-Schlüsselgröße von mindestens 2048 Bit verwenden sollten (wenn Sie RSA verwenden, was ich bin). Sie müssen die Größe desopenssl genrsa
Befehls angeben, da der aktuelle Standardwert unsicher ist.¹Während ich nicht kaputt bin, fühlen die Leute, dass es nur eine Frage der Zeit ist. Siehe "Allmähliche Sonneneinstrahlung von SHA1".
²Die Verwendung von CN für den Domainnamen wird nicht mehr empfohlen. Ich bin mir nicht sicher, wann / ob Browser dies ablehnen. "Entfernen Sie sich vom Einschließen und Überprüfen von Zeichenfolgen, die wie Domänennamen im allgemeinen Namen des Betreffs aussehen.", RFC 6125
Hinweis: Der "richtige" Wert von ist mir weniger sicher
keyUsage
.quelle
*.*.example.com
nicht gültig ist (Sie können nicht mehrere*
s haben). c / p -ers aufgepasst.req_distinguished_name
wird von openssl 1.1.0f nicht akzeptiert, Sie müssen also mindestenscountryName_default
dort sein (siehe Openssl.conf Walkthru ).Ich hatte das gleiche Problem und fand die Antwort hier:
https://www.citrix.com/blogs/2015/04/10/how-to-create-a-csr-for-a-san-certificate-on-netscaler/
Die Konfigurationsdatei sieht folgendermaßen aus:
Und dann:
quelle
req_distinguished_name
Abschnitt kann leer gelassen werden. Was es tut, ist, die Vorlage der Beschriftungen der erforderlichen Feldnamen anzugeben, die durch-subj= /C=xx/ST=xx/L=xx/O=xx/OU=xx/CN=xx
usw. überschrieben werden können . Es ist jedoch nicht, diese Feldwerte zuzuweisen.Für mich scheint dieser Fehler durch falsche Pfaderstellung beim Ausführen des Befehls in Windows Server 2012 verursacht worden zu sein.
C:\OpenSSL-Win32\bin
die einen nicht blockierenden Fehler ausgeben, bevor sie nach einem Bestanden fragen:
Offensichtlich ist der Pfad wegen des falschen Schrägstrichs ungültig, daher muss die Konfigurationsdatei explizit an die Befehlszeile angehängt werden:
quelle
Dieser ähnliche Fehler:
(Ubuntu 17.04) bedeutete "Sie müssen hinzufügen
-subj "/C=US/ST=California/L=San Francis co/O=ACME, Inc./CN=*.*.$DOMAIN/"
in die Kommandozeile "FWIW.
quelle