News Ticker

CSR riproducibili e completi con il file cnf di OpenSSL

Nel linguaggio SSL il file CSR, acronimo di Certificate Signing Request, é un file contenente le informazioni che andranno nel certificato SSL (CRT) rilasciato da una Certification Authority (CA) e firmato con la chiave adatta.

crypto

Solitamente, per crearlo, si utilizza il seguente comando di OpenSSL per creare questa richiesta:

openssl req -new -out server.csr

Questo sistema é iterattivo e ha due grossi limiti: non richiede tutti i campi disponibili nello standard SSL e nel momento in cui un dato cambia dobbiamo ricrearlo ex-novo dovremo rifarlo inserendo i dati a mano, inserendo un elemento di errore su una cosa molto delicata.

Per sopperire a questi problemi possiamo ricorrere ai file di configurazione CNF. Sono file di testo come questo:

# OpenSSL configuration to generate a new key with signing requst for a x509v3 
# multidomain certificate
#
# openssl req -config myhostname.cnf -new -key myhostname.key -out myhostname.csr
#

[ req ]
default_bits       = 4096
default_md         = sha512
default_keyfile    = myhostname.key
prompt             = no
encrypt_key        = no

# base request
distinguished_name = req_distinguished_name

# extensions
req_extensions     = v3_req

# distinguished_name
[ req_distinguished_name ]
countryName            = "IT"                     # C=
stateOrProvinceName    = "Milano"                 # ST=
localityName           = "Milano"                 # L=
postalCode             = "20151"                  # L/postalcode=
streetAddress          = "Via Stallman, 42"       # L/street=
organizationName       = "Linux"                  # O=
organizationalUnitName = "Linux"                  # OU=
emailAddress           = "ssl@example.com"        # CN/emailAddress=
commonName             = "www.example.com"          # CN=
1.commonName           = "www1.example.com"
2.commonName           = "www2.example.com"
3.commonName           = "mail.example.com"



# req_extensions
[ v3_req ]
# The subject alternative name extension allows various literal values to be 
# included in the configuration file
# http://www.openssl.org/docs/apps/x509v3_config.html
subjectAltName  = DNS:www.example.com,DNS:www2.example.com # multidomain certificate

Notate i campi per indirizzo e cap e i common name per i certificati multidominio, informazioni non richieste dal comando precedente.

Per creare il CSR diamo il seguente comando:

 openssl req -config myhostname.cnf -new -out myhostname.csr

Quando dovremo ricreare il csr modificato, mantenendo la stessa chiave, daremo il comando inserito nei commenti:

 openssl req -config myhostname.cnf -new -key myhostname.key -out myhostname.csr

A questo punto potremo salvare tutti i nostri file di configurazione pronti ad essere modificati ed adattati alle nostre esigenze.