Introduzione

Questo articolo spiega come creare un certificato SSL autofirmato usando lo strumento openssl.

Che cos'è un certificato SSL autofirmato?

Un certificato SSL autofirmato (Self-Signed SSL) è un certificato firmato dalla persona che lo ha creato anziché da un'autorità di certificazione attendibile. I certificati autofirmati possono avere lo stesso livello di crittografia del certificato SSL affidabile firmato da CA.

Se si utilizza un certificato autofirmato, il browser Web mostrerà un avviso al visitatore che il certificato del sito Web non può essere verificato.

I certificati autofirmati sono utilizzati principalmente a scopo di test o uso interno. Non utilizzare un certificato autofirmato nei sistemi di produzione esposti a Internet.

Se desideri creare un certificato autofirmato su un server in remoto continua a leggere, altrimenti salta il primo paragrafo "Connessione al Server" e leggi il successivo.

Connessione al Server

Per accedere al server, è necessario conoscere l'indirizzo IP. Avrai anche bisogno dell'username e della password per l'autenticazione. Per connettersi al server come utente root digitare il seguente comando:

ssh [email protected]_DEL_SERVER

Successivamente sarà necessario inserire la password dell'utente root.

Se non utilizzate l'utente root potete connettervi con un'altro nome utente utilizzando lo stesso comando, quindi modificare root con il vostro nome_utente:

ssh [email protected]_DEL_SERVER

Successivamente vi verrà chiesto di inserire la password del vostro utente.

La porta standard per connettersi tramite ssh è la 22, se il vostro server utilizza una porta diversa, sarà necessario specificarla utilizzando il parametro -p, quindi digitare il seguente comando:

ssh [email protected]_DEL_SERVER -p PORTA

Prerequisiti

Il toolkit openssl è necessario per generare un certificato autofirmato.

Per verificare se il pacchetto openssl è installato sul tuo sistema Linux, apri il tuo terminale, digita openssl version e premi Invio. Se il pacchetto è installato, il sistema stamperà la versione OpenSSL, altrimenti vedrai qualcosa di simile openssl command not found.

Se il pacchetto openssl non è installato sul tuo sistema, puoi installarlo eseguendo il seguente comando:

Ubuntu e Debian

sudo apt install openssl

Centos e Fedora

sudo yum install openssl

Creare un certificato SSL autofirmato

Per creare un nuovo Self-Signed SSL, utilizzare il comando openssl req:

openssl req -newkey rsa:4096 \
            -x509 \
            -sha256 \
            -days 3650 \
            -nodes \
            -out example.crt \
            -keyout example.key

Analizziamo il comando e comprendiamo cosa significa ogni opzione:

  • -newkey rsa:4096 - Crea una nuova richiesta di certificato e chiave RSA a 4096 bit. Quello predefinito è 2048 bit.
  • -x509 - Crea un certificato X.509.
  • -sha256 - Utilizzare SHA a 265 bit (Secure Hash Algorithm).
  • -days 3650- Il numero di giorni per cui certificare il certificato. 3650 è di 10 anni. Puoi usare qualsiasi numero intero positivo.
  • -nodes - Crea una chiave senza passphrase.
  • -out example.crt - Specifica il nome file in cui scrivere il certificato appena creato. È possibile specificare qualsiasi nome di file.
  • -keyout example.key - Specifica il nome file in cui scrivere la chiave privata appena creata. È possibile specificare qualsiasi nome di file.

Per ulteriori informazioni sulle opzioni del comando openssl req, visitare la pagina della documentazione di OpenSSL req.

Una volta premuto Invio, il comando genererà la chiave privata e ti farà una serie di domande che utilizzerà per generare il certificato.

Generating a RSA private key
......................................................................++++
........++++
writing new private key to 'example.key'
-----
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.
-----

Immettere le informazioni richieste e premere Invio.

Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:Alabama
Locality Name (eg, city) []:Montgomery
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Noviello
Organizational Unit Name (eg, section) []:Marketing
Common Name (e.g. server FQDN or YOUR name) []:noviello.it
Email Address []:[email protected]

Il certificato e la chiave privata verranno creati nella posizione specificata. Utilizzare il comando ls per verificare che i file siano stati creati:

ls
example.crt example.key

Questo è tutto! Hai generato un nuovo certificato SSL autofirmato.

È sempre una buona idea eseguire il backup del nuovo certificato e della chiave per l'archiviazione esterna.

Creare un certificato SSL autofirmato senza richiesta

Se si desidera generare un certificato SSL autofirmato senza che venga richiesta alcuna domanda, utilizzare l'opzione -subj e specificare tutte le informazioni sull'oggetto:

openssl req -newkey rsa:4096 \
            -x509 \
            -sha256 \
            -days 3650 \
            -nodes \
            -out example.crt \
            -keyout example.key \
            -subj "/C=SI/ST=Ljubljana/L=Ljubljana/O=Security/OU=IT Department/CN=www.example.com"
Generating a RSA private key
......................................................................++++
........++++
writing new private key to 'example.key'
-----

I campi, indicati nella riga -subj sono elencati di seguito:

  • C= - Nome del paese. L'abbreviazione ISO di due lettere.
  • ST= - Nome dello stato o della provincia.
  • L= - Nome località. Il nome della città in cui ti trovi.
  • O= - Il nome completo della tua organizzazione.
  • OU= - Unità organizzativa.
  • CN= - Il nome di dominio completo.

Conclusione

In questa guida, ti abbiamo mostrato come generare un certificato SSL autofirmato usando lo strumento openssl. Ora che hai il certificato, puoi configurare l'applicazione per usarlo.