Informazioni di base per configurare correttamente i file dei certificati SSL.

Riceviamo regolarmente domande relative a messaggi di errore riguardanti problemi con i certificati SSL, in genere relativi al fatto che il certificato non è considerato attendibile.

Nella maggior parte dei casi, la causa principale è che il file del certificato contiene solo il certificato del server.

Protezione del certificato

Quando ricevete i file del certificato, vi verrà fornito un file di certificato pubblico.

Se avete generato la vostra CSR (Certificate Signing Request), avete già il file della chiave privata; altrimenti, il fornitore del certificato ti fornirà anche la chiave privata.

La chiave privata inizia con “—–BEGIN PRIVATE KEY—–” e termina con “—–END PRIVATE KEY—–”.

Questo file, così come qualsiasi altro file che possa contenere questa chiave privata, non deve MAI essere condiviso con nessuno né caricato da nessuna parte. Deve essere configurato ESCLUSIVAMENTE sul server che deve proteggere.

Nessuno strumento o sistema legittimo richiederà mai informazioni relative alla chiave privata.

Come funziona

Quando un client tenta di stabilire una sessione SSL con un server, il certificato del server deve essere verificato attraverso una catena di fiducia. Dal server, il client riceve il certificato pubblico (spesso chiamato certificato foglia) e un pacchetto di certificati intermedi. Il client ora:

  • Guarda il certificato foglia e verifica che sia stato firmato da un certificato intermedio che si trova più in alto nella catena
  • Il secondo certificato, a sua volta, sarà firmato da un’altra autorità di certificazione che si trova più in alto nella catena…
  • fino a raggiungere un certificato firmato da un’autorità root.
  • Il client cerca il certificato dell’autorità root nel proprio archivio interno; questi certificati root sono memorizzati all’interno di Windows, macOs, iOS e Android
  • Se il client trova il certificato root nel proprio archivio, la catena è considerata valida
  • Il client invia una piccola porzione di dati crittografati al server. Se il server è in grado di decrittografare i dati, ciò dimostra che il server possiede effettivamente la chiave privata e il certificato Leaf.

Perché i certificati possono apparire come non attendibili

Il server presenta il certificato Leaf, ma i client non conoscono tutti i certificati intermedi. Senza il certificato intermedio, il client non sarà in grado di verificare la catena e la connessione sarà “non attendibile”.

Risoluzione

Il server deve presentare i certificati intermedi insieme al certificato Leaf. Per ottenere questo risultato, è necessario assicurarsi che il file del certificato distribuito sul server contenga non solo il certificato Leaf, ma anche i certificati intermedi.

È necessario modificare il file PEM del certificato utilizzando un editor di testo e assicurarsi che il formato finale sia simile al seguente:

—-INIZIO CERTIFICATO—–
[Certificato del dominio/server (foglia) ]
—–END CERTIFICATE—–
—–BEGIN CERTIFICATE—–
[Certificato CA intermedio]
—–END CERTIFICATE—–

Il file del certificato potrebbe richiedere certificati intermedi aggiuntivi per completare la catena.

Autorizzazioni dei file su Linux

Assicuratevi che i vostri file di certificato abbiano i permessi corretti dopo averli salvati nella posizione corretta:

sudo chown phonesystem:phonesystem /var/lib/3cxpbx/Bin/nginx/conf/Instance1/*.pem
sudo chmod 640 /var/lib/3cxpbx/Bin/nginx/conf/Instance1/*.pem

Dove sono i certificati intermedi?

Il vostro fornitore di certificati dovrebbe fornirti tutti i certificati intermedi necessari e, in effetti, la maggior parte di essi ti fornisce file che dovresti poter semplicemente “inserire” nel vostro sistema.

Se per qualche motivo dovete ricrearli, esistono diversi strumenti online che vi consentono di farlo; un esempio è https://whatsmychaincert.com/#generate.

Assicuratevi di non caricare mai il vostro file di chiave privata.

Nota sull’inclusione del certificato root

La maggior parte degli amministratori di sistema aggiunge il certificato root alla fine di un file PEM del certificato per comodità, ma tenete presente i seguenti punti:

  • In genere non è necessario; l’archivio del client (in genere dal sistema operativo) lo avrà già preinstallato.
  • Se il client non dispone già del certificato root, non dovrebbe fidarsi del server, anche se invia un certificato root.
  • Se il server invia il certificato root per ogni handshake SSL, aggiunge tra 1 Kb e 2 Kb a ogni nuovo handshake di connessione, senza alcun vantaggio funzionale.

Partecipate alla discussione

Unitevi alla discussione nel nostro forum. Seguiteci su X e LinkedIn per rimanere aggiornati sulle ultime novità e sulle nuove funzionalità.