czy jest możliwe, aby openssl pomijała podpowiedzi kraju / nazwy zwyczajowej?


82

Czy istnieje sposób, aby openssl pomijała monity, takie jak

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

Podczas tworzenia certyfikatów w

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

biorąc pod uwagę fakt, że te parametry są podane w openssl.cnfpliku

na przykład

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
Możesz przekazać te rzeczy jako parametry w linii poleceń. Nie pamiętam składni.
indywid.11.11

1
dzięki, to działa! -subj '/C=US/ST=Oregon/L=Portland/CN=www.madboa.com'jest droga
Tzury Bar Yochay

Odpowiedzi:



35

Innym rozwiązaniem jest użycie w pliku konfiguracyjnym promptdyrektywy.
Zobacz OpenSsl: format pliku konfiguracyjnego

prompt

jeśli ustawione na wartość, nowyłącza monitowanie o pola certyfikatów i po prostu pobiera wartości bezpośrednio z pliku konfiguracyjnego. Zmienia również oczekiwany format sekcji distinguished_namei attributes.

Istnieją dwa oddzielne formaty dla sekcji distinguished namei attribute.

Jeśli opcja podpowiedzi jest ustawiona na, nosekcje te składają się tylko z nazw pól i wartości : na przykład

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

Pozwala to programom zewnętrznym (np. Opartym na GUI) wygenerować plik szablonu ze wszystkimi nazwami pól i wartościami i po prostu przekazać go do req.

Alternatywnie, jeśli opcja zachęty jest nieobecna lub nie jest ustawiona na nie, plik zawiera informacje podpowiadające pola. Składa się z wierszy postaci:

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

2
To powinna być akceptowana odpowiedź. Jeśli istnieje już plik konfiguracyjny, nie ma sensu dostarczać opcji / CN / O / C jako polecenia ponownie.
Aditya Vikas Devarapalli

1
@AdityaVikasDevarapalli 8 lat po napisaniu tej odpowiedzi zgadzam się. Ale jestem stronniczy.
VonC,

15

Wygeneruj plik konfiguracyjny iw sekcji [req] możesz umieścić prompt = no.

Na przykład:

[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

Następnie po prostu wykonaj np

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

4

Podejście mieszane nie jest obsługiwane

Może być intuicyjna myśl, że możliwe jest podejście mieszane, w którym możesz pomyśleć o umieszczeniu niektórych pól statycznych w pliku openssl.cnf i określeniu niektórych (CN) za pomocą -subjopcji. Jednak to nie działa.

Przetestowałem scenariusz, w którym ja

  • umieść C, ST, L, O i OU w sekcji openssl.cnf req_distinguished_namei
  • biegł openssl reqz -subj=/CN=www.mydom.com.

openssl skarżyła się, że brakuje obowiązkowego pola Nazwa kraju, a wygenerowany certyfikat miał tylko CN w temacie. Wygląda na to, że -subjopcja całkowicie zastępuje temat i nie pozwala na aktualizację pojedynczego pola.

To sprawia, że ​​wszystkie poniższe trzy podejścia do dostarczania pól tematycznych są wykluczające się wzajemnie:

  • Monity
  • plik konfiguracyjny
  • -subj opcja

Dzięki za potwierdzenie tego. To naprawdę powinno zostać oznaczone jako błąd. Po uruchomieniu -subjjest ignorowany, nawet jeśli został określony po -config.
Otheus

1

-batchOpcjonalny parametr powoduje, że openssl reqpolecenie nie wiersza dla każdego z pól informacyjnych. Używam go w ten sposób bez pliku konfiguracyjnego do automatyzacji certyfikatów z podpisem własnym.

Jest wymieniony w pomocy:

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

Wydaje mi się, że tak naprawdę nie jest bez pliku konfiguracyjnego: jeśli nie jest określony, jest pobierany z domyślnej lokalizacji i kończy się niepowodzeniem, jeśli nie został tam zainstalowany.
maf-soft
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.