Creazione non interattiva di richieste di certificati SSL


15

Esiste un modo per creare richieste di certificati SSL specificando tutti i parametri richiesti nel comando iniziale? Sto scrivendo un pannello di controllo del server Web basato sulla CLI e, se possibile, vorrei evitare l'uso di aspettarsi durante l'esecuzione openssl.

Questo è un modo tipico per creare una richiesta di certificato:

$ 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

Spero di vedere qualcosa del genere: (esempio poco funzionale)

$ 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

La bella pagina man non aveva nulla da dire in proposito, né sono riuscito a trovare nulla tramite Google. La generazione di richieste di certificati SSL deve essere un processo interattivo o esiste un modo per specificare tutti i parametri in un singolo comando?

Questo è su una distribuzione Linux derivata da Debian in esecuzione openssl 1.0.1.



@ceejayoz: Molto bello, grazie. א) Dove sono openssldocumentate quelle bandiere? ב) Cosa hai cercato su Google per trovarlo? Grazie!
dotancohen,

1
Ho cercato su google "CSR generate script". Il -subjparametro è documentato (non in modo molto dettagliato) su openssl.org/docs/apps/req.html .
Ceejayoz,

È anche possibile creare un file di configurazione, in genere chiamato openssl.cnf.
Sebix,

Risposte:


16

ti mancano due parti:

la riga dell'oggetto, che può essere chiamata come

-subj "/C=US/ST=New Sweden/L=Stockholm /O=.../OU=.../CN=.../emailAddress=..."
  • sostituendo ... con valore, X=essendo codice X509 ( O rganisation / O rganisation U nit / etc ...)

il valore della password, che può essere chiamato come

-passout pass:client11
-passin  pass:client11
  • che danno una password di output / input

la mia richiesta di una nuova chiave sembra

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=..."

(ora che lo vedo, ce ne sono due -new...)


2

Controlla l' -batchopzione come descritto nei documenti ufficiali .


2
Grazie. Vedo che esiste l'opzione batch, ma non sembra esserci alcuna spiegazione su come usarlo.
dotancohen,

Perché questa risposta è stata sottoposta a downgrade? Il batch non è una possibile soluzione al problema? Dal nome, sembra che potrebbe essere.
dotancohen,

È sicuramente l'unico modo per farlo con l'opzione -batch, perché downvoted non ne ho idea. L'affermazione "La bella pagina man non aveva nulla da dire sull'argomento" è falsa, a causa dell'opzione "-batch".
espellere l'

È stato votato per menzionare il batch, anche se non l'ho usato nella soluzione, potrebbe tornare utile in futuro.
dotancohen,

-1

Aggiungo al mio normale comando openssl:

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

Questa linea:

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

Descrizione:

  • Nome paese (codice di 2 lettere) [AU]: PE
  • Nome Stato o Provincia (nome completo) [Some-State]: Lima
  • Nome località (ad es. Città) []: Lima
  • Nome dell'organizzazione (ad es. Società) [Internet Widgits Pty Ltd]: Acme Inc.
  • Nome unità organizzativa (ad es. Sezione) []: dipartimento IT
  • Nome comune (ad es. FQDN del server o nome TUO) []: acme.com

Usa "/" come un separatore.


1
Sembra che la risposta accettata includa già queste informazioni. Altrimenti, grazie.
dotancohen,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.