Crea certificato SSL in modo non interattivo [chiuso]


28

Voglio creare in modo silenzioso, non interattivo, un certificato SSL. Cioè, senza essere richiesto per alcun dato.

Il modo normale in cui creo il certificato sarebbe:

openssl req -x509 -nodes -days 7300 -newkey rsa:2048 \
    -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem 

Ho provato quanto segue:

openssl genrsa -out server.key 2048
touch openssl.cnf

cat >> openssl.cnf <<EOF
[ req ]
prompt = no
distinguished_name = req_distinguished_name

[ req_distinguished_name ]
C = GB
ST = Test State
L = Test Locality
O = Org Name
OU = Org Unit Name
CN = Common Name
emailAddress = test@email.com
EOF

openssl req -x509 -config openssl.cnf -nodes -days 7300 \
    -signkey server.key -out /etc/ssl/private/pure-ftpd.pem 

Ma ricevo ancora una richiesta di dati.


1
Potete fornire una spiegazione o un output di ciò che sta accadendo invece del risultato desiderato?
Patrick,

Ricevo l'aiuto come output- Qui c'è qualcosa di sbagliato nei parametri:openssl req -x509 -config openssl.cnf -nodes -days 7300 -signkey server.key -out /etc/ssl/private/pure-ftpd.pem
TheNiceGuy

È meglio fornire l'output di errori quando si verificano problemi. Immagino che il tuo problema sia dovuto a -signkey. Questa non è openssl requn'opzione valida sul mio sistema. Il messaggio di errore avrà questo come prima riga:unknown option -signkey
Patrick

Bene, quella chiave dovrebbe dire a SSL di usare la chiave fornita come so?
TheNiceGuy

Il tuo "modo normale di creare il certificato" non richiede alcun dato. Non vuoi che produca qualcosa? Quindi utilizzare 2> /dev/null.
Wingedsubmariner

Risposte:


51

Ciò che ti manca è includere l'oggetto del certificato nella -subjbandiera. Preferisco questo alla creazione di un file di configurazione perché è più facile da integrare in un flusso di lavoro e non richiede la pulizia successiva.

Tasto one step e generazione csr:

openssl req -new -newkey rsa:4096 -nodes \
    -keyout www.example.com.key -out www.example.com.csr \
    -subj "/C=US/ST=Denial/L=Springfield/O=Dis/CN=www.example.com"

Generazione di certificati senza password autofirmati in un solo passaggio:

openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 \
    -subj "/C=US/ST=Denial/L=Springfield/O=Dis/CN=www.example.com" \
    -keyout www.example.com.key  -out www.example.com.cert

Nessuno di questi comandi richiederà alcun dato.

Vedi la mia risposta a questa domanda quasi identica su Super User.


Bene, questa è una bella soluzione. Rende i codici molto più piccoli. Grazie: D
TheNiceGuy il

1
Non ho modificato il suo file di configurazione originale, poiché pensavo che potesse rappresentare un certificato più complicato. Alcune configurazioni che non possono essere rappresentate con un -subjparametro, in particolare quando si entra nelle estensioni v3 e nei parametri subjectAltName.
robbat2,

1
Puoi anche usare -batch(modalità non interattiva)
Eran H.

Si noti che il primo comando sembra richiedere l'esistenza della chiave prima che possa essere eseguita laddove il secondo comando crea la chiave e la certificazione automaticamente poiché si -subjtratta di un CSR in-line valido di base.
dragon788,

@ dragon788 Grazie per averlo sottolineato. L'ho riparato.
Bahamat,

1

Il comando che stai cercando è:

openssl req -new -x509 -config openssl.cnf -nodes -days 7300 -key server.key -out /etc/ssl/private/pure-ftpd.pem

Modifiche rispetto alla tua versione:

  • -new è richiesto per generare qualcosa
  • -key usato al posto di -signkey
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.