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 []:[email protected]

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 [email protected] \
-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.

dotancohen
źródło
@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...)

Archemar
źródło
2

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

wyrzucać
źródło
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.

JorgeM
źródło
1
Wygląda na to, że zaakceptowana odpowiedź zawiera już tę informację. W przeciwnym razie dziękuję.
dotancohen