OpenSSL: Boş bir konu DN'si olan bir sertifika nasıl oluşturulur?


14

Yalnızca konu alternatif adı özniteliğinde / uzantısında tanımlayıcı bilgileri içeren bir PKCS # 10 sertifika isteği / X.509 sertifikası oluşturmak mümkün müdür? X.509 4.1.2.6 Konuya göre , topicAltName kritik olduğu sürece, konusu CA olmayan bir sertifika için konu boş olabilir.

Ancak bu config dosyasını boş bir ayırt edici_adı bölümü ile kullandığımda:

# request.config
[ req ]
distinguished_name = req_distinguished_name
req_extensions = v3_req
prompt = no

[ req_distinguished_name ]

[ v3_req ]
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName=critical,email:certtest@example.com

ve komutlar

openssl genrsa 1024 > key.pem
openssl req -new -key key.pem -out req.pem -config request.config

OpenSSL şikayet ediyor:

error, no objects specified in config file
problems making Certificate Request

Yanıtlar:


11

Bu benim için çalıştı:

test-no-cn.cnf dosyası

[req] 
default_bits       = 4096
encrypt_key        = no
default_md         = sha256
distinguished_name = req_distinguished_name
req_extensions = v3_req

[ req_distinguished_name ]

[ v3_req ]
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName=critical,email:certtest@example.com,URI:http://example.com/,IP:192.168.7.1,dirName:dir_sect

[dir_sect]
C=DK
O=My Example Organization
OU=My Example Unit
CN=My Example Name

CSR'yi oluşturma

openssl req -new -newkey rsa:4096 -nodes -config test-no-cn.cnf -subj "/" -outform pem -out test-no-cn.csr -keyout test-no-cn.key

CSR'yi imzalayın

openssl x509 -req -days 365 -in test-no-cn.csr -signkey test-no-cn.key -out test-no-cn.crt -outform der -extensions v3_req -extfile test-no-cn.cnf

Ortaya çıkan sertifikayı görüntüle

openssl x509 -inform der -in test-no-cn.crt -noout -text

8

Ayrıca bu "hiçbir nesne belirtilmedi" hatasıyla karşılaştım. Çeşitli alanlar için aşağıdaki gibi bir bilgi istemi görüntüleniyordu:

US []:

Ve ben sadece enter tuşuna basıyordum çünkü zaten bu değerleri .cnf dosyasında ayarlamıştım. Tüm değerleri tekrar yazmam gerekiyordu ve sonra işe yaradı.


Ben de aynısını yapmak zorundaydım. Yapılandırma dosyasına değerler koymaya rağmen, yine de yine tüm DN bileşenleri için beni uyarmıştı. Onları tekrarlamak zorunda kaldım, ama en azından çalıştı.
Nate W.

3
Bunun nedeni, yapılandırma dosyasının gerçekte varsayılan değerler içermemesidir. C = USC için "bilgi istemi" nin varsayılan değer değil "ABD" olduğu anlamına gelir. Bunun yerine, dosya C = Countryve içermelidir C_default = US.
jordanbtucker

5
Oh, ve bu sadece prompt = yes [or blank]. Eğer prompt = noo zaman C = USanlamına geleceğini "ABD" varsayılan değerdir.
jordanbtucker

3

Sorun prompt = noorijinal yapılandırmadadır. Bu openssl req, config dosyasındaki konu girişlerini belirtmeyi planladığınızı varsayar ve req.c dosyasında bir ön kontrol yapar .

Bir geçici çözüm vardır: Kaldır prompt = noeklemek yerine, ve -subj /sizin için openssl reqkomut satırında. Hem CSR hem de kendinden imzalı bir sertifika üreten örnek bir komut dosyası:

cat > openssl.cnf <<EOF
[ req ]
distinguished_name = req_distinguished_name
req_extensions = v3_req

[ req_distinguished_name ]

[ v3_req ]
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName=critical,email:certtest@example.com
EOF
openssl req -newkey rsa:2048 -config openssl.cnf -nodes -new -subj "/" \
  -out req.csr
openssl req -newkey rsa:2048 -config openssl.cnf -nodes -new -subj "/" \
  -x509 -out cert.crt

2

Openssl yapılandırma dosyasındaki ilke bölümlerinde "commonName = isteğe bağlı" seçeneğini deneyin.


1

Görünüşe göre klavyenizden '"ayırt edici_adı" grubundan herhangi bir tek değer giriyorsunuz ve iyi çalışıyor ... Yani diğer değerleri girmeniz gerekmez ve varsayılanlarını (openssl.conf dosyasında belirtildiği gibi) kullanabilirsiniz.

[ req ]
...
distinguished_name = req_distinguished_name
prompt = no
...

Should work fine.
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.