Richieste di firma OpenSSL con estensioni


8

Ho impostato una piccola CA autofirmata per il mio ambiente di sviluppo. Vorrei creare molti certificati server diversi con proprietà diverse. Il mio approccio è creare una sezione di estensioni specifica per ciascun server. Ho un grosso openssl.cnf che contiene sezioni come questa:

[ server0_http ]

nsCertType                      = server
nsComment                       = "HTTP server0"
basicConstraints=CA:FALSE
extendedKeyUsage=serverAuth
subjectAltName=@server0_http_altnames

[ server0_http_altnames ]
URI.1 = https://server.domain.tld
URI.2 = http://server.domain.tld
IP.1  = 1.2.3.4
DNS.1 = server.doamin.tld

Quindi quando creo il mio csr usando openssluso i parametri -config myCustomOpenssl.cnf -reqexts server0_http. Quando guardo la mia richiesta usando openssl req -text -noout -in myrequest.csrtutto sembra perfetto.

Tuttavia, dopo aver firmato la richiesta, le sezioni "Utilizzo chiave estesa X509v3" e "Nome alternativo soggetto X509v3" scompaiono. Per porre rimedio a questo problema, ho inserito anche -extfile myCustomOpenssl.cnf -reqexts server0_httpi parametri per la chiamata di firma openssl.

È questo il comportamento previsto? Ho sempre pensato che il solo file csr dovesse essere sufficiente per creare un certificato come richiesto, cioè con tutte le sue sezioni. Il modo in cui funziona il mio sistema in questo momento è che ottengo un certificato con sezioni mancanti. Per ottenere il certificato come lo desidero, devo fornire il file csr e la sezione corrispondente dal file di configurazione openssl che ho usato per creare la richiesta. Questo non è un problema per la mia piccola configurazione, ma diventa piuttosto disordinato se divento una CA più grande. Dovrebbe essere così o sto usando openssl in modo errato?

Risposte:


7

Trovato! Quello che ho descritto è il normale comportamento atteso di openssl. Per impostazione predefinita, le estensioni personalizzate non vengono copiate nel certificato.

Per rendere openssl copiare le estensioni richieste nel certificato, è necessario specificare copy_extensions = copyper la firma. Nelle installazioni vanilla ciò significa che questa riga deve essere aggiunta alla sezione default_CAin openssl.cnf.

In openssl.cnfquello fornito con (almeno) Centos la linea è già inclusa come commento e porta l'avvertimento "usare con cautela". I richiedenti possono abusare di questo per farti emettere un certificato CA, se non stai attento.

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.