I certificati SSL Self-Signed sono certificati autofirmati che vengono utilizzati prevalentemente in ambiente di sviluppo sulla nostra macchina locale o il nostro server remoto, quando non abbiamo a disposizione un certificato rilasciato da un'autorità di certificazione esterna.
Questi certificati autofirmati vengono raramente impiegati per l'utilizzo in produzione proprio perchè non garantiscono un livello di attendibilità adeguato, non essendo verificati da una Certification Authority.
Se invece ti interessa ottenere un certificato SSL gratuito rilasciato da un'autorità di certificazione esterna puoi seguire la nostra guida su Come mettere in sicurezza Apache con Let's Encrypt e Ubuntu 18.04.
Per prima cosa dovrai connetterti al tuo server tramite una connessione SSH. Se non l’hai ancora fatto, ti consigliamo di seguire la nostra guida per connetterti in sicurezza con il protocollo SSH. In caso di server locale puoi passare al punto successivo e aprire il terminale del tuo server.
Creare una Chiave Privata
Innanzitutto dovrai creare una chiave privata che servirà a creare il tuo certificato pubblico.
Per creare una chiave privata dovrai utilizzare il client OpenSSL:
$ sudo openssl genrsa -aes128 -out privata.key 2048
N.B. Con questo comando specifichi la creazione di una chiave privata con una lunghezza di 2048 bit che verrà salvata nel file privata.key.
Generating RSA private key, 2048 bit long modulus
....+++
...................+++
e is 65537 (0x010001)
Enter pass phrase for privata.key:
Verifying - Enter pass phrase for privata.key:
Ti verrà chiesto di proteggere la chiave con una password.
Creare una Richiesta di Firma del Certificato (CSR)
Dopo aver generato la tua chiave privata, dovrai creare una richiesta di firma del certificato (CSR) che servirà a specificare i dettagli che saranno inclusi nel certificato.
$ sudo openssl req -new -days 365 -key privata.key -out richiesta.csr
OpenSSL ti chiederà di specificare le informazioni del certificato che dovrai completare in questo modo:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]: IT
State or Province Name (full name) [Some-State]: Lazio
Locality Name (eg, city) []: Roma
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Mia Società
Organizational Unit Name (eg, section) []: Sicurezza
Common Name (e.g. server FQDN or YOUR name) []: prova.it
Email Address []: [email protected]
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: An optional company name []:
Ti verrà chiesto di inserire una password per la richiesta di firma.
Sarà creato il file richiesta.csr che conterrà tutte le informazioni inserite utili alla generazione del certificato.
Generare il Certificato SSL
A questo punto puoi procedere con la generazione del certificato:
$ sudo openssl x509 -in richiesta.csr -out certificato.crt -req -signkey privata.key -days 365
Dove:
-
al parametro -in specificherai la richiesta di firma del certificato
-
al parametro -out specificherai il nome del file che conterrà il certificato
-
al parametro -signkey specificherai la tua chiave privata
-
al parametro -days specificherai il numero di giorni di validità del certificato che andrai a creare
Inserisci la password relativa al file privata.key precedentemente generato.
Se la procedura di creazione è stata eseguita con successo, sarà stampata a video la scritta:
seguita dai dettagli del certificato specificati in precedenza.
Infine avremo ottenuto il file certificato.crt che potremo usare in molteplici ambiti, come ad esempio per proteggere la connessione verso un web server.