ülke / genel isim istemlerini atlayarak opensl yapmak mümkün mü?


82

Openssl'yi aşağıdaki gibi istemleri atlayarak yapmanın bir yolu var mı?

Country Name (2 letter code) [US]:
Organization Name (eg, company) [My Company Name LTD.]:
Common Name (eg, YOUR name) [something]:

İle sertifika oluştururken

openssl req -config openssl.cnf -new -x509 ...

bu parametrelerin openssl.cnfdosyada sağlandığı göz önüne alındığında

Örneğin

countryName         = Country Name (2 letter code)
countryName_default     = US
countryName_min     = 2
countryName_max     = 2
0.organizationName      = Organization Name (eg, company)
0.organizationName_default  = My Company Name LTD.
commonName          = Common Name (eg, YOUR name)
commonName_max      = 64
commonName_default      = ${ENV::CN}

3
Bunları komut satırında parametre olarak iletebilirsiniz. Sözdizimini hatırlamıyorum.
indiv

1
teşekkürler, bu işe yarıyor! -subj '/C=US/ST=Oregon/L=Portland/CN=www.madboa.com'gitmenin yolu
Tzury Bar Yochay

Yanıtlar:


129

@indiv'e teşekkürler

bu rehbere göre -subjgidilecek yoldur, örneğin

-subj '/CN=www.mydom.com/O=My Company Name LTD./C=US'

gerçekten de bu şekilde hiçbir yapılandırma dosyasına gerek yoktur
Pat

35

Başka bir çözüm, yapılandırma dosyanızda promptyönergeyi kullanmaktır.
Bkz. OpenSsl: Yapılandırma dosyası biçimi

prompt

değere ayarlanırsa nobu, sertifika alanlarının sorulmasını devre dışı bırakır ve yalnızca yapılandırma dosyasından değerleri doğrudan alır. Ayrıca distinguished_nameve attributesbölümlerinin beklenen biçimini de değiştirir .

distinguished nameVe attributebölümleri için iki ayrı format vardır .

Bilgi istemi seçeneği olarak ayarlanmışsa, nobu bölümler yalnızca alan adlarından ve değerlerinden oluşur : örneğin,

 CN=My Name
 OU=My Organization
 emailAddress=someone@somewhere.org

Bu, harici programların (örn. GUI tabanlı) tüm alan adları ve değerleri ile bir şablon dosyası oluşturmasına ve bunu sadece ona iletmesine izin verir req.

Alternatif olarak, komut istemi seçeneği yoksa veya hayır olarak ayarlanmamışsa, dosya alan bilgi istemini içerir. Formun satırlarından oluşur:

 fieldName="prompt"
 fieldName_default="default field value"
 fieldName_min= 2
 fieldName_max= 4

2
Kabul edilen cevap bu olmalıdır. Halihazırda bir yapılandırma dosyası varsa, / CN / O / C seçeneklerinin yeniden komut olmasının hiçbir anlamı yoktur.
Aditya Vikas Devarapalli

1
@AdityaVikasDevarapalli 8 yıl bu cevabı yazdıktan sonra katılıyorum. Ama önyargılıyım.
VonC

15

Bir yapılandırma dosyası oluşturun ve [req] bölümüne istem = no yazabilirsiniz.

Örneğin:

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

[req_distinguished_name]
C = US
ST = California
L = Los Angeles
O = Our Company Llc
#OU = Org Unit Name
CN = Our Company Llc
#emailAddress = info@example.com

[v3_req]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = example.com
DNS.2 = www.example.com

O zaman sadece örn.

openssl req -new -sha256 -config THATFILE.conf -key example.com.key -out example.com.csr

4

Karma bir yaklaşım desteklenmiyor

Openssl.cnf'ye bazı statik alanlar koymayı ve -subjseçenek aracılığıyla bazılarını (CN) belirtmeyi düşünebileceğiniz karma bir yaklaşımın mümkün olduğunu düşünmek sezgisel olabilir . Ancak bu işe yaramıyor.

Bir senaryoyu test ettim

  • openssl.cnf bölümüne C, ST, L, O ve OU’yu koyun req_distinguished_nameve
  • ran openssl reqile -subj=/CN=www.mydom.com.

openssl, zorunlu Ülke Adı alanının eksik olduğundan ve oluşturulan sertifikanın konu satırında sadece CN bulunduğundan şikayet etti. Görünüşe göre -subjseçenek konu satırını tamamen geçersiz kılıyor ve tek bir alanın güncellenmesine izin vermiyor.

Bu, konu alanlarının sağlanması için aşağıdaki üç yaklaşımın tümünü birbirine özel kılar:

  • İstemler
  • yapılandırma dosyası
  • -subj seçenek

Bunu onayladığınız için teşekkürler. Bu gerçekten bir hata olarak işaretlenmelidir. Çalıştırdığımda, -subjsonra belirtilse bile göz ardı edilir -config.
Otheus

1

-batchİsteğe bağlı parametre neden openssl reqbilgi alanlarının herhangi biri için istemi değil komutu. Kendinden imzalı sertifikaların otomasyonu için bir yapılandırma dosyası olmadan bu şekilde kullanıyorum.

Yardımda listelenmiştir:

openssl help req
...
...
-batch              Do not ask anything during request generation

Sanırım gerçekten bir yapılandırma dosyası olmadan değil: belirtilmezse, varsayılan bir konumdan alınır ve orada kurulmamışsa başarısız olur.
maf-soft
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.