Come installare un certificato SSL da un’autorità di certificazione commerciale

Introduzione

Questo tutorial ti mostrerà come ottenere e installare un certificato SSL da un’Authority (CA) di fiducia e commerciale. I certificati SSL consentono ai server web di crittografare il loro traffico e offrono anche un meccanismo per convalidare le identità dei server ai loro visitatori. I siti web che utilizzano SSL sono accessibili tramite il protocollo https://.

Prima della metà degli anni 2010, molti siti web più piccoli non utilizzavano sempre SSL o HTTPS. Da allora, le aspettative di sicurezza sono aumentate e il progetto Let’s Encrypt è stato creato per fornire certificati SSL gratuiti e affidabili su larga scala, consentendo a quasi tutti di utilizzare HTTPS come necessario.

Tuttavia, ci sono alcune limitazioni nei certificati di Let’s Encrypt. Scadono ogni 3 mesi, richiedendo tipicamente di avere uno script di rinnovo automatico funzionante e possono essere scomodi da utilizzare in ambienti in cui ciò non è possibile. Let’s Encrypt non fornisce inoltre certificati di convalida estesa che convalidano la proprietà legale della tua presenza web, né Certificati Wildcard che corrispondono automaticamente a ogni possibile sottodominio del tuo sito web (come negozio.esempio.com) senza doverli registrare manualmente.

Per la maggior parte degli utenti, queste non saranno limitazioni significative. Let’s Encrypt è un’opzione popolare per molti siti web personali e commerciali. Tuttavia, se hai particolari requisiti di software aziendale o un’operazione commerciale molto grande, dovresti considerare l’acquisto di un certificato da un CA commerciale.

Questo tutorial spiega come selezionare e implementare un certificato SSL da un’autorità certificata attendibile. Dopo aver acquisito il tuo certificato SSL, questo tutorial coprirà l’installazione su server web Nginx e Apache.

Prerequisiti

Ci sono diversi prerequisiti per tentare di ottenere un certificato SSL da un CA commerciale:

  • Un nome di dominio registrato. Questo tutorial utilizzerà esempio.com in tutto. Puoi acquistare un nome di dominio da Namecheap, ottenerne uno gratuitamente con Freenom, o utilizzare il registrar di domini che preferisci.

  • Accesso a uno degli indirizzi email nel record WHOIS del tuo dominio o a un indirizzo email di tipo “admin” presso il dominio stesso. Le autorità di certificazione che rilasciano certificati SSL di solito convalidano il controllo del dominio inviando una email di convalida a uno degli indirizzi nel record WHOIS del dominio o a un indirizzo email admin generico presso il dominio stesso. Per ottenere un certificato di convalida estesa, sarà anche necessario fornire all’autorità di certificazione documenti per stabilire l’identità legale del proprietario del sito web, tra le altre cose.

  • Configurazione dei record DNS per il tuo server. Se stai utilizzando DigitalOcean, consulta la nostra documentazione DNS per dettagli su come aggiungerli.

Questa guida fornirà istruzioni di configurazione per un server Ubuntu 22.04, seguendo il tutorial Configurazione iniziale del server per Ubuntu 22.04, comprensivo di un utente non-root abilitato a sudo e un firewall. La maggior parte delle moderne distribuzioni Linux funzionerà in modo simile.

È inoltre necessario avere un server web come Nginx o Apache installato, seguendo il tutorial Come Installare Nginx su Ubuntu 22.04 o Come Installare il Server Web Apache su Ubuntu 22.04. Assicurati di avere un blocco del server (o host virtuale Apache) per il tuo dominio.

Passo 1 – Scelta dell’Autorità di Certificazione

Se non sei sicuro su quale Autorità di Certificazione utilizzare, ci sono alcuni fattori da considerare.

Membri del Programma di Certificazione Radice

Il punto più cruciale è che il CA che scegli fai parte dei programmi di certificazione radice dei sistemi operativi e browser web più comunemente utilizzati, ovvero è un CA “affidabile”, e il suo certificato radice è fidato dai browser comuni e da altri software. Se il certificato SSL del tuo sito web è firmato da un CA fidato, la sua identità è considerata valida dal software che si fida del CA.

La maggior parte dei CA commerciali che incontrerai faranno parte dei programmi di certificazione radice comuni, ma non fa male verificare prima di effettuare l’acquisto del certificato. Ad esempio, Apple pubblica la sua lista di certificati radice SSL affidabili.

Tipi di Certificati

Assicurati di scegliere un CA che offra il tipo di certificato di cui hai bisogno. Molti CA offrono varianti di questi tipi di certificati con una varietà di nomi e strutture di prezzo. Ecco una breve descrizione di ciascun tipo:

  • Singolo Dominio: Usato per un singolo dominio, ad esempio esempio.com. Nota che sottodomini aggiuntivi, come www.esempio.com, non sono inclusi
  • Wildcard: Usato per un dominio e tutti i suoi sottodomini. Ad esempio, un certificato wildcard per *.esempio.com può essere utilizzato anche per www.esempio.com e negozio.esempio.com
  • Multi-Dominio: Conosciuti come certificati SAN o UC, questi possono essere utilizzati con più domini e sottodomini aggiunti al campo del Nome Alternativo del Soggetto. Ad esempio, un singolo certificato multi-dominio potrebbe essere utilizzato con example.com, www.example.com e example.net

In aggiunta ai tipi di certificati sopra menzionati, ci sono diversi livelli di convalida che le Autorità di Certificazione (CA) offrono:

  • Convalida del Dominio (DV): I certificati DV vengono emessi dopo che la CA convalida che il richiedente possiede o controlla il dominio in questione
  • Convalida dell’Organizzazione (OV): I certificati OV possono essere emessi solo dopo che la CA convalida l’identità legale del richiedente
  • Convalida Estesa (EV): I certificati EV possono essere emessi solo dopo che la CA convalida l’identità legale, tra le altre cose, del richiedente, secondo un rigoroso insieme di linee guida. Lo scopo di questo tipo di certificato è fornire un’ulteriore garanzia sulla legittimità dell’identità della tua organizzazione ai visitatori del tuo sito. I certificati EV possono essere per singolo o multi-dominio, ma non wildcard

Funzionalità Aggiuntive

Molte CA offrono una vasta gamma di “bonus” per differenziarsi dagli altri fornitori di certificati SSL. Alcune di queste caratteristiche possono permetterti di risparmiare denaro, quindi è importante valutare le tue esigenze rispetto alle offerte prima di effettuare un acquisto. Esempi di funzionalità da cercare includono rilascio gratuito di certificati, o un certificato a prezzo unico per un singolo dominio che funziona sia per “www.” che per il nome di dominio di base, ad esempio “www.example.com” con un SAN di “example.com”.

Passaggio 2 – Generazione di una CSR e una chiave privata

Dopo aver sistemato i requisiti preliminari e sapere il tipo di certificato di cui hai bisogno, è il momento di generare una richiesta di firma del certificato (CSR) e una chiave privata.

Se prevedi di utilizzare Apache HTTP o Nginx come server web, puoi utilizzare il comando “openssl” per generare la tua chiave privata e la CSR sul tuo server web. In questo tutorial, puoi mantenere tutti i file pertinenti nella tua directory home, ma sentiti libero di archiviarli in qualsiasi posizione sicura sul tuo server:

Per generare una chiave privata chiamata “example.com.key” e una CSR chiamata “example.com.csr”, esegui questo comando (sostituisci “example.com” con il nome del tuo dominio):

  1. openssl req -newkey rsa:2048 -nodes -keyout example.com.key -out example.com.csr

A questo punto, ti verranno richieste diverse linee di informazioni che saranno incluse nella tua richiesta di certificato. La parte più importante è il campo Common Name, che dovrebbe corrispondere al nome con cui desideri utilizzare il tuo certificato, ad esempio example.com, www.example.com, o (per una richiesta di certificato wildcard) *.example.com. Se prevedi di ottenere un certificato OV o EV, assicurati che tutti gli altri campi riflettano accuratamente i dettagli della tua organizzazione o azienda. Fornire una “password di sfida” non è necessario.

Per esempio:

Output
Country Name (2 letter code) [AU]:US State or Province Name (full name) [Some-State]:New York Locality Name (eg, city) []:New York Organization Name (eg, company) [Internet Widgits Pty Ltd]:My Company Organizational Unit Name (eg, section) []: Common Name (e.g. server FQDN or YOUR name) []:example.com Email Address []:[email protected] Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:

Questo genererà un file .key e un file .csr. Il file .key è la tua chiave privata e deve essere conservato in sicurezza. Il file .csr è quello che invierai alla CA per richiedere il tuo certificato SSL.

  1. ls example.com*
Output
example.com.csr example.com.key

Dovrai copiare e incollare il tuo CSR quando invii la tua richiesta di certificato alla tua CA. Per stampare il contenuto del tuo CSR, usa cat:

cat example.com.csr

Ora sei pronto per acquistare un certificato da una CA.

Passaggio 3 – Acquisto e Ottenimento di un Certificato

Ci sono molti fornitori commerciali di CA e puoi confrontare e confrontare le opzioni più appropriate per la tua configurazione. Ad esempio, Namecheap funge da rivenditore di certificati SSL e ha cambiato i fornitori di CA upstream in passato per fornire il miglior valore. Attualmente, offrono certificati da Comodo CA. Ecco un esempio delle loro offerte al dicembre 2022:

Dopo aver fatto una selezione, dovrai caricare il CSR che hai generato nel passaggio precedente. Il tuo fornitore di CA probabilmente avrà anche un passaggio di “Approvazione”, che invierà una richiesta di convalida via email a un indirizzo nel record WHOIS del tuo dominio o a un indirizzo di tipo amministratore del dominio per il quale stai ottenendo un certificato.

Dopo aver approvato il certificato, questo verrà inviato via email all’amministratore nominato. Copialo e salvato sul tuo server nella stessa posizione in cui hai generato la tua chiave privata e il CSR. Nomina il certificato con il nome di dominio e un’estensione .crt, ad esempio esempio.com.crt, e nomina il certificato intermedio intermediate.crt.

Il certificato è ora pronto per essere installato sul tuo server web, ma prima potresti dover apportare alcune modifiche al tuo firewall.

Passaggio 4 – Aggiornamento del tuo Firewall per consentire HTTPS

Se hai il firewall ufw abilitato come consigliato dalla nostra guida alla configurazione di Ubuntu 22.04, dovrai modificare le impostazioni per consentire il traffico HTTPS. Nginx e Apache registrano entrambi alcuni profili con ufw durante l’installazione.

Puoi vedere l’impostazione attuale digitando:

  1. sudo ufw status

Se ricevi un output contenente solo Nginx HTTP o Apache, è consentito solo il traffico HTTP al server web:

Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx HTTP ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx HTTP (v6) ALLOW Anywhere (v6)

Per consentire anche il traffico HTTPS, consenti il profilo Nginx Full o Apache Full e elimina l’autorizzazione al profilo HTTP ridondante:

  1. sudo ufw allow 'Nginx Full'
  2. sudo ufw delete allow 'Nginx HTTP'

Ciò dovrebbe produrre un risultato simile a questo:

  1. sudo ufw status
Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx Full ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx Full (v6) ALLOW Anywhere (v6)

Nel passaggio finale, installerai il certificato.

Passaggio 5 – Installazione di un Certificato Sul Tuo Server

Dopo aver ottenuto il tuo certificato dall’AC di tua scelta, devi installarlo sul tuo server web. Questo comporta l’aggiunta di alcune righe relative a SSL alla configurazione del software del tuo server web.

Questo tutorial coprirà la configurazione di Nginx e Apache su Ubuntu 22.04, ma la maggior parte delle moderne distribuzioni Linux funzionerà in modo simile. Questo tutorial fa anche queste supposizioni:

  • La chiave privata, il certificato SSL e, se applicabile, i certificati intermedi dell’AC si trovano in una directory home, a /home/sammy
  • La chiave privata si chiama example.com.key
  • Il certificato SSL è chiamato example.com.crt
  • I certificati intermedi CA restituiti dal tuo fornitore sono contenuti in un file chiamato intermediate.crt

Nota: In un ambiente di produzione, questi file dovrebbero essere memorizzati in un luogo accessibile solo al processo del server web (di solito root), e la chiave privata dovrebbe essere mantenuta al sicuro. Ad esempio, Let’s Encrypt memorizza i certificati che genera in /etc/letsencrypt. Gli esempi di produzione varieranno a seconda della complessità delle configurazioni multi-server.

Nginx

Questi sono i passaggi per distribuire manualmente un certificato SSL su Nginx.

Se il tuo CA ha restituito solo un certificato intermedio, devi creare un singolo file di certificato “concatenato” che contenga il tuo certificato e i certificati intermedi del CA.

Supponendo che il file del tuo certificato si chiami example.com.crt, puoi usare il comando cat per unire i file insieme e creare un file combinato chiamato example.com.chained.crt:

  1. cat example.com.crt intermediate.crt > example.com.chained.crt

Usando nano o il tuo editor di testo preferito, apri il file del blocco server Nginx predefinito per la modifica:

  1. sudo nano /etc/nginx/sites-enabled/default

Trova la direttiva listen e modificala in listen 443 ssl:

/etc/nginx/sites-enabled/default
…
server {
    listen 443 ssl;
…

Successivo, trova la direttiva server_name all’interno dello stesso blocco del server, e assicurati che il suo valore corrisponda al nome comune del tuo certificato. Aggiungi anche le direttive ssl_certificate e ssl_certificate_key per specificare i percorsi dei tuoi file di certificato e chiave privata:

/etc/nginx/sites-enabled/default
…
    server_name example.com;
    ssl_certificate /home/sammy/example.com.chained.crt;
    ssl_certificate_key /home/sammy/example.com.key;
…

Per consentire solo i protocolli e le cifrature SSL più sicuri, aggiungi le seguenti linee al file:

/etc/nginx/sites-enabled/default
…
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
…

Infine, per reindirizzare le richieste HTTP a HTTPS per impostazione predefinita, puoi aggiungere un blocco del server aggiuntivo in cima al file:

/etc/nginx/sites-enabled/default
server {
    listen 80;
    server_name example.com;
    rewrite ^/(.*) https://example.com/$1 permanent;
}
…

Salva e chiudi il file. Se stai usando nano, premi Ctrl+X, poi quando richiesto, Y e poi Invio.

Prima di riavviare Nginx, puoi convalidare la tua configurazione usando nginx -t:

  1. sudo nginx -t

Se non ci sono problemi, riavvia Nginx per abilitare SSL su HTTPS:

  1. sudo systemctl restart nginx

Prova accedendo al tuo sito tramite HTTPS, ad esempio https://example.com. Vuoi anche provare a connetterti tramite HTTP, ad esempio http://example.com, per assicurarti che il reindirizzamento funzioni correttamente.

Apache

Questi sono i passaggi per distribuire manualmente un certificato SSL su Apache.

Usando nano o il tuo editor di testo preferito, apri il file di configurazione predefinito del tuo virtual host Apache per modificarlo:

  1. sudo nano /etc/apache2/sites-available/000-default.conf

Trova l’ingresso <VirtualHost *:80> e modificalo in modo che il tuo server web ascolti sulla porta 443:

/etc/apache2/sites-available/000-default.conf
…
<VirtualHost *:443>
…

Successivo, aggiungi la direttiva ServerName, se non esiste già:

/etc/apache2/sites-available/000-default.conf
…
ServerName example.com

Quindi aggiungi le seguenti righe per specificare i percorsi del tuo certificato e della chiave:

/etc/apache2/sites-available/000-default.conf
…
SSLEngine on
SSLCertificateFile /home/sammy/example.com.crt
SSLCertificateKeyFile /home/sammy/example.com.key
SSLCACertificateFile /home/sammy/intermediate.crt

A questo punto, il tuo server è configurato per ascoltare solo su HTTPS (porta 443), quindi le richieste HTTP (porta 80) non verranno servite. Per reindirizzare le richieste HTTP su HTTPS, aggiungi quanto segue all’inizio del file (sostituisci il nome in entrambi i luoghi):

/etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
   ServerName example.com
   Redirect permanent / https://example.com/
</VirtualHost>
…

Salva e chiudi il file. Se stai usando nano, premi Ctrl+X, poi quando richiesto, Y e quindi Invio.

Abilita il modulo SSL di Apache eseguendo questo comando:

  1. sudo a2enmod ssl

Ora, riavvia Apache per caricare la nuova configurazione e abilitare TLS/SSL su HTTPS.

  1. sudo systemctl restart apache2

Provalo accedendo al tuo sito tramite HTTPS, ad esempio https://example.com. Vuoi anche provare a connetterti tramite HTTP, ad esempio http://example.com, per assicurarti che il reindirizzamento funzioni correttamente.

Conclusione

In questo tutorial, hai imparato quando potresti aver bisogno di acquistare un certificato SSL da una CA commerciale e come confrontare le opzioni disponibili. Hai anche imparato come configurare Nginx o Apache per il supporto HTTPS e come adattare le loro configurazioni per l’ambiente di produzione.

Successivamente, potresti voler leggere su altri casi d’uso di SSL, come ad esempio quando si lavora con bilanciatori di carico.

Source:
https://www.digitalocean.com/community/tutorials/how-to-install-an-ssl-certificate-from-a-commercial-certificate-authority