Otrzymuję następujący błąd 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
W moim rozumieniu jest to, że jest to „Temat”, że nie może znaleźć ... ale ja jestem określając, że:
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"
Jedyną sugestią tego podręcznika jest to, że plik konfiguracyjny nie istnieje; Mogę cat "$OPTIONS_FILE"
, więc na pewno tam jest, a błąd nie jest poprzedzony błędem, który zauważa instrukcja, którą by to poprzedziło, więc jestem pewien, że openssl
widzi plik konfiguracyjny.
Mój plik konfiguracyjny zawiera następujące elementy:
[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
… Co jest dosłownie przykładem w dokumentacji .
Co ja tu robię źle?
*.*.example.com
jest nieprawidłowy. (Możesz mieć tylko 1*
, i tylko w lewym skrajnym elemencie). Nie dotyczy to problemu, ale nie ślepo.Odpowiedzi:
Niemal, jak mogę stwierdzić ,
-config
przesłania jakąś konfigurację wewnętrzną; jeśli zobaczysz sekcję „PRZYKŁADY” dla strony podręcznika dla openssl req , pokazuje przykład pliku konfiguracyjnego zdistinguished_name
nim zawartego . Przy przeczuciu dodałem następujące ustawienia do mojej konfiguracji:Tak więc moja cała konfiguracja wyglądała mniej więcej tak
(Zauważ, że tutaj
${DOMAIN}
nie jest dosłowne; powinieneś zastąpić go swoją nazwą domeny DNS; Tworzę ten plik wbash
skrypciecat >"$OPTIONS_FILE" <<EOF
, po którym następuje powyższe, a następnieEOF
)openssl req … -subj <my subject> -config <that file> …
następnie wziąłem mój temat z wiersza poleceń. Dla zainteresowanych całe polecenie wyglądało następująco:W tym temacie rozumiem, że SHA-1 jest przestarzałe¹ dla certyfikatów X.509, stąd
-sha256
(która jest nieudokumentowaną flagą…) i podmiotAltName staje się wymagany², stąd potrzeba konfiguracji. Jedyną dodatkową gotge, którą znam, aby wygenerować CSR najlepszych praktyk w powyższym przypadku, to to, że powinieneś używać klucza RSA o wielkości co najmniej 2048 bitów (jeśli używasz RSA, którym jestem); Państwo musi określić rozmiar doopenssl genrsa
polecenia jako bieżąca domyślna jest niepewna.¹ Choć nie piszę tego w chwili pisania tego, ludzie czują, że to tylko kwestia czasu. Zobacz „Stopniowe
zachodzenie SHA1” ²Użycie CN dla nazwy domeny nie jest już zalecane; Nie jestem pewien, kiedy / czy przeglądarki planują to wycofać. „Zrezygnuj z włączania i sprawdzania ciągów, które wyglądają jak nazwy domenowe w nazwie pospolitej podmiotu.”, RFC 6125
Uwaga: Nie jestem pewien co do „poprawnej” wartości
keyUsage
.źródło
*.*.example.com
jest niepoprawna (nie możesz mieć wielu*
s); c / p-ers strzeżcie się.req_distinguished_name
nie jest akceptowana przez openssl 1.1.0f, więc musiszcountryName_default
tam przynajmniej być (patrz Opensl.conf Walkthru ).Miałem ten sam problem i znalazłem odpowiedź tutaj:
https://www.citrix.com/blogs/2015/04/10/how-to-create-a-csr-for-a-san-certificate-on-netscaler/
Plik konfiguracyjny wygląda następująco:
I wtedy:
źródło
req_distinguished_name
Sekcja może być puste. To, co robi, to określić szablon etykiet wymaganych nazw pól, które mogą zostać zastąpione przez-subj= /C=xx/ST=xx/L=xx/O=xx/OU=xx/CN=xx
itp., Ale nie przypisywać tych wartości pól.Dla mnie ten błąd wydaje się być spowodowany niepoprawnym utworzeniem ścieżki podczas uruchamiania polecenia w systemie Windows Server 2012,
C:\OpenSSL-Win32\bin
które generują błąd nieblokujący przed zapytaniem o podanie phare:
Oczywiście ścieżka jest nieprawidłowa z powodu niewłaściwego ukośnika, więc plik konfiguracyjny musi zostać jawnie dołączony w wierszu poleceń:
źródło
Ten podobny błąd:
(Ubuntu 17.04) oznaczało „musisz dodać
-subj "/C=US/ST=California/L=San Francis co/O=ACME, Inc./CN=*.*.$DOMAIN/"
do wiersza poleceń „FWIW.
źródło
Innym możliwym problemem mogą być specjalne (niewidoczne) znaki UTF-8. Sprawdź swój plik za pomocą
źródło