Generare un certificato auto-firmato valido per Apache e Chrome
Nel nostro precedente articolo, abbiamo visto come generare un certificato auto-firmato per lo sviluppo di siti web su localhost, e come farlo in modo che il browser Google Chrome non restituisca il ben noto avviso “NET::ERR_CERT_AUTHORITY_INVALID” .
Purtroppo, per Chrome 58 e successivi vi attende un altro avviso. Questa volta è “NET::ERR_CERT_COMMON_NAME_INVALID” oppure “La connessione non è privata“, dal momento che (come potete leggere qui da Google) “la corrispondenza tra il nome del dominio e il certificato del sito viene eseguita solo utilizzando l’estensione subjectAlternativeName e non mediante l’estensione commonName“.
Pertanto, dobbiamo riemettere il nostro certificato auto-firmato per includere anche il subjectAlternativeName.
A questo scopo, utilizzeremo OpenSSL e vedremo come installare e configurare questo nuovo certificato in Apache.
Configurazione OpenSSL
La prima cosa da fare è installare OpenSSL. Al momento della redazione di questo articolo, ho scaricato OpenSSL v1.1.0g. Se siete su Windows, potete scaricare il pacchetto di installazione al seguente URL:
ma naturalmente potete utilizzare la stessa versione anche su Linux, in funzione della vostra distribuzione (CentOS, Debian, Ubuntu e così via).
Una volta installato OpenSSL, abbiamo bisogno di apportare qualche modifica al suo file di configurazione, per gestire il Subject Alternative Name (SAN).
Pertanto, assumendo che nullalo.local sia l’alias di dominio locale per il quale è necessario un certificato auto-firmato, modificate il file /bin/openssl.cfg e aggiungete la seguente sezione (ad es. alla fine del file o di un’altra sezione):
[SAN] subjectAltName=DNS:nullalo.local,DNS:www.nullalo.local
Qui abbiamo creato due nomi alternativi, nullalo.local e www.nullalo.local per mostrarvi la sintassi corretta per aggiungere più DNS (Domain Name System), ma se utilizzate un solo DNS (nessun ServerAlias in Apache), sarà sufficiente inserire solo la prima voce:
[SAN] subjectAltName=DNS:nullalo.local
Ora, tutto ciò che dovete fare è generare la chiave privata e il certificato utilizzando OpenSSL.
4 Commenti
Thanks a ton!!
This tutorial worked for me perfectly.
Davvero interessante 🙂 Grazie
Hi,
I install SELF-SIGNED CERTIFICATE on my site http://www.nspiel.de/ , and check on ssllabs.com it said: NOT TRUSTED.
What can I do now?
This procedure is for LOCAL certificates. For an online website, you have to use Let’s Encrypt or something similar, but in the meanwhile I see you already solved your issue 🙂