openssl “config içinde 'ayırt edici_adı' bulunamıyor”


40

Aşağıdaki hatayı alıyorum 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

Benim anlayış bu o ... Ancak, ben bulamıyorum "Konu" olmasıdır am belirten:

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"

El kitabının tek önerisi, config dosyasının bulunmadığı; Yapabiliyorum cat "$OPTIONS_FILE", bu yüzden kesinlikle orada ve hatadan önce hata gelmiyordu. Kılavuzda, eğer öyleyse, bundan önce geleceği notları alır, bu yüzden opensslconfig dosyasını gördüğünden eminim .

Config dosyam şunları içeriyor:

[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 

… Ki bu tam olarak dokümanlardaki örnek .

Neyi yanlış yapıyorum burada?


1
Küçük not: burada belirtilen subjectAltName,, *.*.example.comgeçersiz. (Yalnızca 1 *ve yalnızca en soldaki bileşene sahip olabilirsiniz.) Bu, buradaki sorunla ilgili değildir, ancak körce c / p yapmayın.
Thanatos

Yanıtlar:


30

Söyleyebileceğim civarında , -configiç yapılandırma çeşit kıldı; openssl req için man sayfasının "ÖRNEKLER" bölümünü görürseniz, içinde bir config dosyası örneği gösterir distinguished_name. Bir önsezimde, config için aşağıdakileri ekledim:

[req]
…
distinguished_name = req_distinguished_name

[req_distinguished_name]
# empty.

Böylece, tüm config benim gibi bir şey görünüyordu

[req]
req_extensions = v3_req
distinguished_name = req_distinguished_name

[req_distinguished_name]

[v3_req]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = digitalSignature, keyEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = *.*.${DOMAIN}

(Burada, ${DOMAIN}kelimenin tam anlamıyla olmadığına dikkat edin; onu DNS etki alanı adınızla değiştirmelisiniz; bu dosyayı bir bashkomut dosyasında cat >"$OPTIONS_FILE" <<EOF, ardından yukarıdakiler ve ardından yazarım EOF)

openssl req … -subj <my subject> -config <that file> …sonra konuyu komut satırından aldı. İlgilenenler için, komutun tamamı şöyle göründü:

openssl req -new \
    -key "$PRIVATE_KEY" \
    -sha256 \
    -config "$OPTIONS_FILE" \
    -subj "/C=US/ST=California/L=San Francisco/O=My Company, Inc./CN=*.*.$DOMAIN/" \
    -out "$CSR_FILENAME"

Bu kayıttan itibaren, benim anlayışım, SHA-1'in X.509 cerleri için, dolayısıyla -sha256(belgelendirilmemiş bir bayrak…), ve konuAltName için uygun olmadığına ve dolayısıyla config'a gerek duyulduğuna ² hale geliyor. Yukarıda en iyi uygulamalara sahip bir KSS oluşturmak için bildiğim tek ek getcha, en az 2048 bitlik bir RSA anahtar boyutu kullanmanız gerektiğidir (eğer benim olduğum RSA kullanıyorsanız); Eğer gerekir için boyutu belirtmek openssl genrsageçerli varsayılan olarak güvenli komuta.

This Bunu yazdığım sırada kırılmadığı halde insanlar bunun sadece bir zaman meselesi olduğunu düşünüyorlar. Bkz. "Kademeli olarak gün
batımını takip eden SHA1" ² Alan adı için CN kullanımı artık önerilmez; Tarayıcıların bunu kullanımdan kaldırmayı planlayıp planlamadığından emin değilim. "Konunun Ortak Adında etki alanı adlarına benzeyen dizeleri dahil etmekten ve kontrol etmekten uzak durun.", RFC 6125
Not: değerinin "doğru" değeri konusunda daha az emin değilim keyUsage.


2
Soru hakkındaki notuma bakın; Bu cevaptaki yapılandırma geçersiz, bunun *.*.example.comiçin geçerli değil (birden fazla *s elde edilemez ); c / p-ers dikkat edin.
Thanatos

Boş bölüm req_distinguished_nameopenssl 1.1.0f tarafından kabul edilmez, bu yüzden en azından countryName_defaultorada bulunmanız gerekir ( openssl.conf Walkthru'ya bakın ).
AntonK

12

Aynı problemi yaşadım ve cevabı burada buldum:

https://www.citrix.com/blogs/2015/04/10/how-to-create-a-csr-for-a-san-certificate-on-netscaler/

Yapılandırma dosyası şuna benzer:

[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req
prompt = no
[req_distinguished_name]
C = US
ST = VA
L = SomeCity
O = MyCompany
OU = MyDivision
CN = www.company.com
[v3_req]
keyUsage = keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = www.company.com
DNS.2 = company.com
DNS.3 = www.company.net 
DNS.4 = company.net 

Ve sonra:

openssl req -new -key private.key -sha256 -nodes -config openssl.conf -out certificate.csr

1
Bu da işe yarayacak; Konuyu komut satırında belirtiyordum (kullanım durumum için daha kolaydı); Bu sadece config dosyasına taşır. Dahası, OpenSSL ile ilgili sorum, konunun gerçekte belirtildiği zaman bulunamadığından şikayetçi oldu.
Thanatos

Bu çözümün işe yarayıp yaramadığından emin değilim - Windows’da sürekli olarak “config içinde ayırt edici_adı bulunamıyor” bildiriliyor.
hagubear,

1
req_distinguished_nameBölüm sol boş olabilir. Yaptığı şey, üzerine yazılabilecek, gerekli alan adlarının etiket şablonunu belirlemektir, -subj= /C=xx/ST=xx/L=xx/O=xx/OU=xx/CN=xxancak bu alan değerlerini atamak değildir.
Devy

5

Benim için bu hata, Windows Server 2012'de komutu çalıştırırken hatalı yol oluşturma işleminden kaynaklanıyor gibi görünüyor. C:\OpenSSL-Win32\bin

openssl req -new -sha256 -key private.pem -out example.csr

pass phare sormadan önce engelleyici olmayan bir hata veren çıktı:

C: \ Program Files (x86) \ Common Files \ SSL / openssl.cnf dosyasını okuyamıyor, Bir dosya veya dizin yok

Açıkça, yanlış eğiklikten dolayı yol geçersiz, bu nedenle config dosyasının komut satırına açıkça eklenmesi gerekiyor:

openssl req -new -sha256 -key private.pem -config openssl.cfg -out example.csr

Bu benim için çalıştı, güzel ve temiz. Çok teşekkürler!
Sossenbinder

Bu hiç şüphesiz sizin probleminizi çözse de, OpenSSL ile yapmak zorunda kalmanın dışında asıl soru ile ilgili değildir. (Bu ayrı bir soru / cevap olarak daha iyi olabilir.)
Thanatos

Bu sorun "
configsl

1

Bu benzer hata:

$ openssl req -x509 -newkey rsa: 4096 -keyout _key.pem -out cert.pem -days 365 -node Sertifika isteğinize dahil edilecek bilgileri girmeniz istenecek. Girmek üzere olduğunuz şey, Seçkin Adı veya DN adı verilen şeydir. Oldukça az alan var ama biraz boş bırakabilirsiniz Bazı alanlar için varsayılan bir değer olacak, '.' Girerseniz, alan boş bırakılacak. ----- Ülke Adı (2 harf kodu) [AU]: Sertifika İsteği yapma sorunları

(Ubuntu 17.04) "eklemeniz gereken" anlamına geliyordu

-subj "/C=US/ST=California/L=San Francis co/O=ACME, Inc./CN=*.*.$DOMAIN/"

komut satırına "FWIW.


0

Başka bir olası konu özel (görünmez) UTF-8 karakterleri olabilir. Kullanarak dosyanızı kontrol edin

cat -v $OPTIONS_FILE
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.