Nell’attuale panorama della sicurezza informatica, la gestione dei certificati è un requisito imprescindibile per garantire l’integrità e l’autenticità dei servizi. Per proteggere più domini o sottodomini con un unico certificato, è necessario generare certificati che integrino dei SAN (Subject Alternative Names).
Vediamo come poter generare un CSR (Certificate Signing Request) in modo semplice.
Utilizzo di un file di configurazione
Per garantire la correttezza dei dati e la tracciabilità delle operazioni, è preferibile l’utilizzo di un file di configurazione dedicato rispetto all’inserimento dei dati via linea di comando. Questo approccio riduce drasticamente il rischio di errori nella compilazione dei campi DN (Distinguished Name).
La parte fondamentale del file è la sezione req_ext, necessaria per mappare correttamente i domini aggiuntivi
[ req ]
default_bits = 2048
prompt = no
encrypt_key = no
default_md = sha256
distinguished_name = dn
req_extensions = req_ext
[ dn ]
CN = server1.dominio.local
O = Societa Spa
OU = Societa
L = Citta
ST = Italy
C = IT
emailAddress = certificati@dominio.local
[ req_ext ]
subjectAltName = @alt_names
[alt_names]
DNS.1 = server1.dominio.local
DNS.2 = server2.dominio.local
DNS.3 = server3.dominio.localNel file è necessario personalizzare i campi nella sezione DN con particolare attenzione al campo CN che rappresenta il nome FQDN del servizio per cui stiamo creando il certificato.
Questo nome va riportato nella sezione alt_names alla prima riga (DNS.1) e nelle righe successive si posso aggiungere eventuali alias o sottodomini.
Salvato il file di configurazione, ad esempio RequestCSR.conf, possiamo utilizzare openssl per generare la chiave privata RSA (non cifrata per consentire l’automazione dei servizi) e il file CSR da sottoporre alla Certification Authority (CA) interna o pubblica
openssl req -new -out server1.dominio.local.csr -newkey rsa:2048 -nodes -keyout server1.dominio.local.key -config RequestCSR.confVerranno generati due file:
- server1.dominio.local.csr : la richiesta da inviare alla CA
- server1.dominio.local.key : la chiave privata (da conservare con la massima sicurezza)
Verificare il file CSR
Prima di inviare la richiesta è utile verificare che i SAN siano presenti
openssl req -noout -text -in server1.dominio.local.csr | grep -A 1 "Subject Alternative Name"
X509v3 Subject Alternative Name:
DNS:server1.dominio.local, DNS:server2.dominio.local, DNS:server3.dominio.localSe, come nell’esempio, vengono visualizzati i DNS il file CSR è corretto.
Con il comando
openssl req -noout -text -in server1.dominio.local.csrviene visualizzato l’intero contenuto del CSR. Un Certificate Signing Request è un file di testo in formato PEM che contiene:
- la chiave pubblica (RSA o EC)
- informazioni di identità del soggetto (CN, O, OU, L, ST, C) e SAN
- una firma fatta con la chiave privata per dimostrare la proprietà
Conclusione
L’utilizzo del file di configurazione rende la gestione dei certificati semplice e scalabile.
Nota: i browser moderni (come Chrome e Firefox) ignorano spesso il Common Name a favore dei SAN, quindi questa procedura è essenziale per la gestione dei certificati.
