Nieinteraktywne tworzenie żądań certyfikatów SSL


15

Czy istnieje sposób tworzenia żądań certyfikatów SSL poprzez określenie wszystkich wymaganych parametrów w poleceniu początkowym? Piszę panel sterowania serwera WWW oparty na interfejsie CLI i chciałbym uniknąć użycia funkcji expect podczas wykonywania, openssljeśli to możliwe.

Jest to typowy sposób utworzenia żądania certyfikatu:

$ openssl req -new -newkey rsa:2048 -nodes -sha256 -keyout foobar.com.key -out foobar.com.csr
Generating a 2048 bit RSA private key
.................................................+++
........................................+++
writing new private key to 'foobar.com.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:New Sweden
Locality Name (eg, city) []:Stockholm
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Scandanavian Ventures, Inc.
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:foobar.com
Email Address []:gustav@foobar.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:FooBar

Mam nadzieję zobaczyć coś takiego: (niedziałający przykład)

$ openssl req -new -newkey rsa:2048 -nodes -sha256 -keyout foobar.com.key -out foobar.com.csr \
-Country US \
-State "New Sweden" \
-Locality Stockholm \
-Organization "Scandanavian Ventures, Inc." \
-CommonName  foobar.com \
-EmailAddress gustav@foobar.com \
-Company FooBar

Dobra strona podręcznika nie miała nic do powiedzenia na ten temat, ani nie mogłam nic znaleźć w Google. Czy generowanie żądania certyfikatu SSL musi być procesem interaktywnym, czy jest jakiś sposób na określenie wszystkich parametrów w jednym poleceniu?

Jest to uruchomiona dystrybucja Linuksa pochodząca z Debiana openssl 1.0.1.



@ceejayoz: Bardzo miło, dziękuję. א) Gdzie są openssludokumentowane te flagi? ב) Po co go znalazłeś? Dziękuję Ci!
— dotancohen,

1
Poszukałem „Skrypt generowania CSR”. -subjParametr udokumentowane (nie większych szczegółach) w openssl.org/docs/apps/req.html .
— ceejayoz

Możliwe jest również utworzenie pliku konfiguracyjnego, zwykle nazywanego openssl.cnf.
— sebix,

Odpowiedzi:


16

brakuje ci dwóch części:

wiersz tematu, który można nazwać jako

-subj "/C=US/ST=New Sweden/L=Stockholm /O=.../OU=.../CN=.../emailAddress=..."
  • zastąpienie ... o wartości, X=będący kodem X509 ( O rganisation / O rganisation U nit / etc ...)

wartość hasła, którą można nazwać jako

-passout pass:client11
-passin  pass:client11
  • które dają hasło wyjściowe / wejściowe

wygląda moje wezwanie do nowego klucza

openssl genrsa -aes256 -out lib/client1.key -passout pass:client11 1024
openssl rsa -in lib/client1.key -passin pass:client11 -out lib/client1-nokey.key

openssl req -new -key lib/client1.key -subj req -new \
    -passin pass:client11 -out lib/client1.csr \
    -subj "/C=US/ST=New Sweden/L=Stockholm/O=.../OU=.../CN=.../emailAddress=..."

(teraz to widzę, są dwa -new...)


2

Sprawdź -batchopcję zgodnie z opisem w oficjalnych dokumentach .


2
Dziękuję Ci. Widzę, że istnieje opcja wsadowa, ale wydaje się, że nie ma wyjaśnienia, jak z niej korzystać.
— dotancohen,

Dlaczego ta odpowiedź została odrzucona? Czy partia nie jest możliwym rozwiązaniem problemu? Od nazwy brzmi, jakby to mogło być.
— dotancohen,

Jest to zdecydowanie jedyny sposób na zrobienie tego z opcją -batch, dlaczego przegłosowałem, że nie mam pojęcia. Stwierdzenie „Dobra strona podręcznika nie ma nic do powiedzenia w tej sprawie” jest fałszywe z powodu opcji „-batch”.
— wysuń

Poproszono mnie o wzmiankę o partii, ponieważ chociaż nie użyłem jej w rozwiązaniu, może się przydać w przyszłości.
— dotancohen,

-1

Dołączam do mojego zwykłego polecenia openssl:

openssl req -x509 -nodes -days 7300 -newkey rsa: 2048 -keyout /etc/ssl/private/key.pem -out /etc/ssl/private/cert.pem

Ta linia:

-subj "/C=PE/ST=Lima/L=Lima/O=Acme Inc. /OU=IT Department/CN=acme.com"

Opis:

  • Nazwa kraju (dwuliterowy kod) [AU]: PE
  • Nazwa stanu lub prowincji (pełna nazwa) [Some-State]: Lima
  • Nazwa miejscowości (np. Miasto) []: Lima
  • Nazwa organizacji (np. Firma) [Internet Widgits Pty Ltd]: Acme Inc.
  • Nazwa jednostki organizacyjnej (np. Sekcja) []: Dział IT
  • Nazwa zwyczajowa (np. Nazwa FQDN serwera lub TWOJA nazwa) []: acme.com

Użyj „/” jak separatora.


1
Wygląda na to, że zaakceptowana odpowiedź zawiera już tę informację. W przeciwnym razie dziękuję.
— dotancohen
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.