Creare certificati SSL

Vediamo di seguito i passi per generare un certificato SSL autofirmato, o self-signed, cioè un certificato generato dal suo stesso autore, e non da un’autorità competente in questo.

Generare l’autorità di certificazione

Generare la chiave privata

openssl genrsa -aes256 -out /etc/pki/CA/private/cakey.pem 4096

Generare il certificato

openssl req -new -x509 -days 3650 -key /etc/pki/CA/private/cakey.pem -extensions v3_ca -out /etc/pki/CA/cacert.pem

Creare i file che serviranno a tener traccia dei certificati generati

$ touch /etc/pki/CA/index.txt
$ echo '01' > /etc/pki/CA/serial

In base alle impostasioni di /etc/pki/tls/openssl.cnf i passaggi successivi per la generazione del certificato dovrebbero prendere l’autorità appena creata come CA di riferimento.

Per aggiungere l’autorità creata come fidata ca aggiunto il certificato appena generato nella cartella seguente e lanciato il comando di aggiornamento certificati

ln -s /etc/pki/CA/cacert.pem /etc/pki/ca-trust/source/anchors/cacert.pem
update-ca-trust extract

Infine è possibile controllare che tutti funzioni a dovere lanciando il comando

openssl s_client -showcerts -connect 127.0.0.1:443

Generare la chiave privata RSA

Il toolkit OpenSSL viene usato per generare le chiavi private RSA e CSR (Certificate Signing Request)

Il primo passo è quello di creare la chiave privata RSA. Questa è una chiave RSA a 2048 bit che viene crittografata utilizzando Triple-DES e memorizzata in un formato PEM in modo che sia leggibile come testo ASCII. A tal fine, ecco il comando che può essere utilizzato:

openssl genrsa -des3 -out /etc/pki/tls/private/localhost.key.pass 2048

Generare la CSR (Certificate Signing Request)

Dopo la generazione della chiave privata, deve essere creata la CSR. Essa verrà utilizzata in due modi. In primo luogo, verrà inviata a un’autorità di certificazione, come Verisign o Thawte, che verificherà l’identità del richiedente e rilascerà un certificato firmato. In secondo luogo, bisognerà poi auto-firmare la chiave RSI; vedremo questo step più tardi.

Durante la generazione del CSR, verranno richieste diverse informazioni, come il Common Name, o Nome Host. E ‘importante che questo campo si compili correttamente con il nome completo del dominio del server da proteggere col protocollo SSL. Se il sito da proteggere sarà https://public.tecn.it, immettere quindi public.tecn.it in questo prompt.

Per generare la CSR si potrà adoperare il seguente comando:

openssl req -new -key /etc/pki/tls/private/localhost.key.pass -out /etc/pki/tls/localhost.csr

ed ecco che appariranno alcuni dati come questi:

Nome Paese (2 codice in lettere) [IT] : IT
Stato o Nome Provincia (nome completo) [Italia] : Italia
Nome Località (es, città) [Italia] : Pesaro
Nome Organizzazione (es, società) [Mia Società] : Tecn
Nome unità organizzativa (ad esempio, sezione) [] : Tecn Italia
Nome Web (es, il tuo nome o il tuo server hostname) [] : public.tecn.it
Indirizzo Mail [] : info@tecn.it
Si prega di inserire i seguenti attributi extra
da inviare con la richiesta di certificato
Password corrispondente []:
Un nome della società opzionale []:

Un metodo alternativo per generare la CSR che includa più domini è il seguente

openssl req -new -key /etc/pki/tls/private/localhost.key.pass -subj '/C=IT/ST=Italia/L=Paese/O=Nome/OU=Nome OU/CN=www.example.com/emailAddress=info@example.com/subjectAltName=DNS.1=endpoint.com,DNS.2=domain.example.com,DNS.3=*.endpoint.com' -out /etc/pki/tls/localhost.csr
openssl req -new -key /etc/pki/tls/private/localhost.key.pass -subj '/C=IT/ST=Italia/L=Paese/O=Nome/OU=Nome OU/CN=*.example.com/emailAddress=info@example.com/' -out /etc/pki/tls/localhost.csr

Rimuovere la passphrase dalla key

Una conseguenza della pass generata dalla chiave privata è che Apache chiederà la passphrase ogni volta che viene avviato il server web. Ovviamente questo non è necessariamente conveniente in quanto non sarà sempre presente qualcuno per digitare la passphrase, come ad esempio dopo un riavvio o un crash. mod_ssl include la possibilità di usare un programma esterno al posto del built-in passphrase di dialogo; tuttavia, nemmeno questa potrebbe essere l’opzione più sicura. La crittografia Triple-DES può anche essere rimossa dalla chiave, eliminando così la necessità di digitare una passphrase. Con la chiave privata non più criptata, è fondamentale che questo file sia leggibile solo dall’utente root. In caso di compromissione del sistema in cui un terzo ottiene la chiave privata in chiaro, il corrispondente certificato dovrà essere revocato.

Il comando seguente può essere utilizzato per rimuovere la passphrase dalla chiave:

openssl rsa -in /etc/pki/tls/private/localhost.key.pass -out /etc/pki/tls/private/localhost.key

In questo modo il nuovo file appena creato server.key non avrà più la pass su di esso.

Generare il certificato autofirmato

A questo punto sarà necessario generare un certificato self-signed (autofirmato) se non avrete intenzione di avere il vostro certificato firmato da una CA (Certificate Authority), o se si desidera testare la nuova implementazione SSL mentre la CA firma il certificato. Questo certificato sarà temporaneo e genererà un avviso nel browser del client, dovuto al fatto che l’autorità della firma del certificato è sconosciuta e non attendibilie.

Per generare un certificato autofirmato con la durata di 365 giorni, eseguire il seguente comando:

openssl x509 -req -days 365 -in /etc/pki/tls/localhost.csr -signkey /etc/pki/tls/private/localhost.key -out /etc/pki/tls/certs/localhost.crt

con una risposta del server simile a questa:

Firma ok
Soggetto = / C = CH / ST = Italia / L = Pesaro / O = Tecn IT / OU = Tecn
Italia / NC = public.tecn.it / Email = info@tecn.it
Come chiave privata

Generare il certificato firmato dall’autorità creata

Possono esserci due modalità, tramite il comando ca e il comando x509

openssl ca -days 365 -in /etc/pki/tls/localhost.csr -out /etc/pki/tls/certs/localhost.crt
openssl x509 -req -days 1500 -in /etc/pki/tls/localhost.csr -CA /etc/pki/CA/cacert.pem -CAkey /etc/pki/CA/private/cakey.pem -CAcreateserial -out /etc/pki/tls/certs/localhost.crt

Installare la chiave privata e il certificato SSL su Apache

<Virtualhost _default_:443>
SSLEngine on
SSLCertificateFile /usr/local/apache/conf/ssl.crt/server.crt
SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/server.key
SetEnvIf User-Agent “.*MSIE.*” nokeepalive ssl-unclean-shutdown
CustomLog logs/ssl_request_log \
“%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \”%r\” %b”
Aggiungi ai preferiti : permalink.

I commenti sono chiusi.