Proteggi la tua istanza LAMP di Lightsail con i certificati SSL Let's Encrypt - Amazon Lightsail

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Proteggi la tua istanza LAMP di Lightsail con i certificati SSL Let's Encrypt

Amazon Lightsail semplifica la protezione di siti Web e applicazioni con SSL/TLS utilizzando i sistemi di bilanciamento del carico Lightsail. Tuttavia, l'utilizzo di un sistema di bilanciamento del carico Lightsail potrebbe non essere generalmente la scelta giusta. Il tuo sito potrebbe non necessitare della scalabilità e della tolleranza ai guasti forniti dai sistemi di bilanciamento del carico oppure potresti voler ottimizzare i costi.

In quest'ultimo caso, potresti considerare l'utilizzo di Let's Encrypt per ottenere un certificato SSL gratuito. Se così fosse, non c'è alcun problema. Puoi integrare questi certificati con le istanze Lightsail. Questo tutorial mostra come richiedere un certificato jolly Let's Encrypt tramite Certbot e integrarlo con l'istanza LAMP.

Importante
  • La distribuzione Linux usata dalle istanze Bitnami è stata modificata da Ubuntu a Debian nel luglio 2020. A causa di questa modifica, alcune fasi descritte in questo tutorial variano a seconda della distribuzione Linux dell'istanza. Tutte le istanze del progetto Bitnami create dopo tale modifica usano la distribuzione Debian di Linux. Le istanze create precedentemente, continueranno a utilizzare la distribuzione Ubuntu di Linux. Per verificare la distribuzione dell'istanza, esegui il comando uname -a . La risposta mostrerà Ubuntu o Debian come distribuzione Linux dell'istanza.

  • Bitnami sta modificando la struttura dei file per la maggior parte degli stack. I percorsi dei file in questo tutorial possono variare a seconda che lo stack Bitnami utilizzi pacchetti di sistema Linux nativi (Approccio A) o se si tratti di un'installazione autonoma (Approach B). Per identificare il tipo di installazione Bitnami e quale approccio seguire, eseguire il seguente comando:

    test ! -f "/opt/bitnami/common/bin/openssl" && echo "Approach A: Using system packages." || echo "Approach B: Self-contained installation."

Indice

Fase 1: completamento dei prerequisiti

Completa i seguenti prerequisiti qualora non siano già stati soddisfatti:

Dopo aver completato i prerequisiti, procedi alla prossima sezione di questo tutorial.

Fase 2: installazione di Certbot sull'istanza

Certbot è un client utilizzato per richiedere un certificato Let's Encrypt e distribuirlo in un server Web. Let's Encrypt utilizza il protocollo ACME per il rilascio di certificati e Certbot è un client abilitato per ACME che interagisce con Let's Encrypt.

Per installare Certbot sulla tua istanza Lightsail
  1. Accedi alla console Lightsail.

  2. Nella home page di Lightsail, scegli l'icona di connessione rapida SSH per l'istanza a cui desideri connetterti.

    Connessione rapida SSH sulla home page di Lightsail.
  3. Dopo aver connesso la sessione SSH basata su browser Lightsail, inserisci il seguente comando per aggiornare i pacchetti sull'istanza:

    sudo apt-get update
    Aggiornamento dei pacchetti sull'istanza.
  4. Immetti il seguente comando per installare il pacchetto delle proprietà del software. Gli sviluppatori Certbot utilizzano un Personal Package Archive (PPA) per distribuire Certbot. Il pacchetto di proprietà del software rende più efficiente l'utilizzo di PPA.

    sudo apt-get install software-properties-common
    Nota

    Se si verifica un errore Could not get lock durante l'esecuzione del comando sudo apt-get install, attendi circa 15 minuti e riprova. Questo errore potrebbe essere causato da un processo cron che utilizza lo strumento di gestione del pacchetto Apt per l'installazione automatica di aggiornamenti.

  5. Immetti il seguente comando per aggiungere Certbot al repository apt locale:

    Nota

    La fase 5 si applica solo alle istanze che utilizzano la distribuzione Ubuntu di Linux. Salta questa fase se l'istanza usa la distribuzione Debian di Linux.

    sudo apt-add-repository ppa:certbot/certbot -y
  6. Immetti il seguente comando per aggiornare l'apt in modo da includere il nuovo repository:

    sudo apt-get update -y
  7. Immetti il seguente comando per installare Certbot:

    sudo apt-get install certbot -y

    Certbot è ora installato sulla tua istanza Lightsail.

  8. Tieni aperta la finestra del terminale SSH basato su browser, a cui accederai nuovamente in una fase successiva di questo tutorial. Passa alla prossima sezione di questo tutorial.

Fase 3: richiesta di un certificato jolly SSL Let's Encrypt

Inizia il processo di richiesta di un certificato da Let's Encrypt. Tramite Certbot, richiedi un certificato jolly, che ti consente di utilizzare un unico certificato per un dominio e i relativi sottodomini. Ad esempio, un singolo certificato jolly funziona per il dominio example.com di primo livello, per blog.example.com e per i sottodomini stuff.example.com.

Per richiedere un certificato jolly SSL Let's Encrypt
  1. Nella stessa finestra del terminale SSH basato su browser utilizzato nella fase 2 di questo tutorial, immetti i seguenti comandi per impostare una variabile di ambiente per il dominio. È ora possibile copiare e incollare in modo più efficiente i comandi per ottenere il certificato.

    DOMAIN=Domain
    WILDCARD=*.$DOMAIN

    Nel comando sostituire Domain con il nome di dominio registrato.

    Esempio:

    DOMAIN=example.com
    WILDCARD=*.$DOMAIN
  2. Immetti il seguente comando per confermare che le variabili restituiscono i valori corretti:

    echo $DOMAIN && echo $WILDCARD

    Viene visualizzato un risultato simile a quello seguente:

    Conferma delle variabili di ambiente del dominio.
  3. Immetti il seguente comando per avviare Certbot in modalità interattiva. Questo comando indica a Certbot di utilizzare un metodo di autorizzazione manuale con le richieste DNS di verifica della proprietà del dominio. Richiede un certificato jolly per il dominio di primo livello e per i relativi sottodomini.

    sudo certbot -d $DOMAIN -d $WILDCARD --manual --preferred-challenges dns certonly
  4. Quando richiesto, immetti l'indirizzo e-mail, che verrà utilizzato per le notifiche di rinnovo e di sicurezza.

  5. Leggi i termini del servizio Let's Encrypt. Al termine, premi A in caso di accettazione. In caso contrario, non è possibile ottenere un certificato Let's Encrypt.

  6. Rispondi di conseguenza alla richiesta di condivisione dell'indirizzo e-mail e all'avviso sulla registrazione dell'indirizzo IP.

  7. Let's Encrypt richiede ora di verificare la proprietà del dominio specificato. Ciò avviene attraverso l'aggiunta di registri TXT ai record DNS per il dominio. Viene fornito un set di valori di registro TXT come nell'esempio seguente:

    Nota

    Let's Encrypt può fornire uno o più registri TXT necessario per la verifica. In questo esempio, sono stati forniti due registri TXT da utilizzare per la verifica.

    Registri TXT per i certificati Let's Encrypt.
  8. Mantieni aperta la sessione SSH basata su browser Lightsail: tornerai ad essa più avanti in questo tutorial. Passa alla prossima sezione di questo tutorial.

Fase 4: Aggiunta di record TXT alla zona DNS del dominio

L'aggiunta di un registro TXT alla zona DNS del dominio verifica la proprietà del dominio. A scopo dimostrativo, utilizziamo la zona DNS di Lightsail. Tuttavia, la procedura potrebbe essere simile per altre zone DNS generalmente ospitate da registrar di dominio.

Nota

Per ulteriori informazioni su come creare una zona DNS Lightsail per il tuo dominio, consulta Creazione di una zona DNS per gestire i record DNS del tuo dominio in Lightsail.

Per aggiungere record TXT alla zona DNS del tuo dominio in Lightsail
  1. Nella home page di Lightsail, scegli la scheda Domains & DNS (Domini e DNS).

  2. Nella sezione DNS zones (zone DNS) della pagina, scegli la zona DNS per il dominio specificato nella richiesta di certificato Certbot.

  3. Nell'editor della zona DNS, scegli la scheda Record DNS.

  4. Scegli Aggiungi record.

  5. Nel menu a discesa Tipo di registro, scegli Registro TXT.

  6. Immetti i valori specificati dalla richiesta di certificato Let's Encrypt nei campi Nome record e Risponde con.

    Nota

    La console Lightsail precompila la parte di apice del dominio. Ad esempio, per aggiungere il sottodominio _acme-challenge.example.com è necessario semplicemente inserire _acme-challenge nella casella di testo, quindi Lightsail aggiunge automaticamente la parte .example.com durante il salvataggio del record.

  7. Selezionare Salva.

  8. Ripeti i passaggi da 4 a 7 per aggiungere il secondo set di registri TXT specificato dalla richiesta di certificato Let's Encrypt.

  9. Tieni aperta la finestra del browser della console Lightsail: tornerai ad essa più avanti in questo tutorial. Passa alla prossima sezione di questo tutorial.

Fase 5: conferma che i registri TXT sono propagati

Utilizzate l' MxToolbox utilità per confermare che i record TXT si siano propagati al DNS di Internet. La propagazione dei record DNS potrebbe richiedere del tempo, a seconda del provider di hosting DNS e del TTL (Time-To-Live) configurato per i record DNS. È importante completare questa operazione e confermare che i registri TXT sono propagati, prima di continuare con la richiesta del certificato Certbot. In caso contrario, la richiesta di certificato ha esito negativo.

Per confermare che i record TXT sono propagati nel DNS di Internet
  1. Apri una nuova finestra del browser e accedi a https://mxtoolbox.com/TXTLookup.aspx.

  2. Immetti il testo seguente nella casella di testo.

    _acme-challenge.Domain

    Sostituire Domain con il nome di dominio registrato.

    Esempio:

    _acme-challenge.example.com
    Ricerca dei record TXT MXTookbox.
  3. Scegli TXT Lookup (Ricerca TXT) per eseguire il controllo.

  4. Viene visualizzata una delle seguenti risposte:

    • Se i record TXT sono propagati nel DNS di Internet, è possibile visualizzare una risposta simile a quella mostrata nello screenshot seguente. Chiudi la finestra del browser e procedi alla prossima sezione di questo tutorial.

      Conferma che i registri TXT sono propagati.
    • Se i record TXT non sono propagati nel DNS di Internet, viene visualizzata la risposta DNS Record not found (Record DNS non trovato). Conferma di aver aggiunto i record DNS corretti alla zona DNS del dominio. Se sono stati aggiunti i registri corretti, attendi finché i record DNS del dominio non vengono propagati ed esegui nuovamente la ricerca TXT.

Fase 6: completamento della richiesta di certificato SSL Let's Encrypt

Torna alla sessione SSH basata su browser Lightsail per la tua istanza LAMP e completa la richiesta del certificato Let's Encrypt. Certbot salva i file di certificato SSL, chain e chiave in una directory specifica sull'istanza LAMP.

Per completare la richiesta di certificato SSL Let's Encrypt
  1. Nella sessione SSH basata su browser Lightsail per la tua istanza LAMP, premi Invio per continuare la richiesta del certificato SSL Let's Encrypt. In caso di esito positivo, viene visualizzata una risposta simile a quella mostrata nello screenshot seguente:

    Esito positivo della richiesta di certificato Let's Encrypt.

    Il messaggio conferma che i file di certificato, chain e chiave sono archiviati nella directory /etc/letsencrypt/live/Domain/. Domain (Dominio) sarà il tuo nome di dominio registrato, ad esempio /etc/letsencrypt/live/example.com/.

  2. Annota la data di scadenza specificata nel messaggio. Verrà utilizzata per rinnovare il certificato entro tale data.

    Data di rinnovo del certificato Let's Encrypt.
  3. Dopo aver installato il certificato di SSL Let's Encrypt, procedi alla prossima sezione di questo tutorial.

Crea collegamenti ai file del certificato SSL Let's Encrypt nella directory del server Apache sull'istanza LAMP. Inoltre, esegui il backup dei certificati esistenti, in caso siano necessari in un secondo momento.

Creare collegamenti ai file del certificato Let's Encrypt nella directory del server Apache
  1. Nella sessione SSH basata su browser Lightsail per la tua istanza LAMP, inserisci il seguente comando per interrompere i servizi dello stack LAMP sottostanti:

    sudo /opt/bitnami/ctlscript.sh stop

    Noterai una risposta simile alla seguente:

    Servizi dell'istanza interrotti.
  2. Immetti il seguente comando per impostare una variabile di ambiente per il dominio.

    DOMAIN=Domain

    Nel comando sostituire Domain con il nome di dominio registrato.

    Esempio:

    DOMAIN=example.com
  3. Immetti il seguente comando per confermare che le variabili restituiscono i valori corretti:

    echo $DOMAIN

    Viene visualizzato un risultato simile a quello seguente:

    Conferma della variabile di ambiente del dominio.
  4. Immetti i seguenti comandi singolarmente per rinominare i file del certificato esistenti come backup. Fai riferimento a Importante blocca all'inizio di questo tutorial per informazioni sulle diverse distribuzioni e strutture di file.

    • Per le distribuzioni Debian Linux

      Approccio A (installazioni Bitnami che utilizzano pacchetti di sistema):

      sudo mv /opt/bitnami/apache2/conf/bitnami/certs/server.crt /opt/bitnami/apache2/conf/bitnami/certs/server.crt.old
      sudo mv /opt/bitnami/apache2/conf/bitnami/certs/server.key /opt/bitnami/apache2/conf/bitnami/certs/server.key.old

      Approach B (installazioni Bitnami autonome):

      sudo mv /opt/bitnami/apache2/conf/server.crt /opt/bitnami/apache2/conf/server.crt.old
      sudo mv /opt/bitnami/apache2/conf/server.key /opt/bitnami/apache2/conf/server.key.old
    • Per le istanze meno recenti che usano la distribuzione Ubuntu di Linux:

      sudo mv /opt/bitnami/apache/conf/bitnami/certs/server.crt /opt/bitnami/apache/conf/bitnami/certs/server.crt.old
      sudo mv /opt/bitnami/apache/conf/bitnami/certs/server.key /opt/bitnami/apache/conf/bitnami/certs/server.key.old
  5. Immetti i seguenti comandi singolarmente per creare collegamenti ai file del certificato Let's Encrypt nella directory del server apache2. Fai riferimento a Importante blocca all'inizio di questo tutorial per informazioni sulle diverse distribuzioni e strutture di file.

    • Per le distribuzioni Debian Linux

      Approccio A (installazioni Bitnami che utilizzano pacchetti di sistema):

      sudo ln -sf /etc/letsencrypt/live/$DOMAIN/privkey.pem /opt/bitnami/apache2/conf/bitnami/certs/server.key
      sudo ln -sf /etc/letsencrypt/live/$DOMAIN/fullchain.pem /opt/bitnami/apache2/conf/bitnami/certs/server.crt

      Approach B (installazioni Bitnami autonome):

      sudo ln -sf /etc/letsencrypt/live/$DOMAIN/privkey.pem /opt/bitnami/apache2/conf/server.key
      sudo ln -sf /etc/letsencrypt/live/$DOMAIN/fullchain.pem /opt/bitnami/apache2/conf/server.crt
    • Per le istanze meno recenti che usano la distribuzione Ubuntu di Linux:

      sudo ln -s /etc/letsencrypt/live/$DOMAIN/privkey.pem /opt/bitnami/apache/conf/bitnami/certs/server.key
      sudo ln -s /etc/letsencrypt/live/$DOMAIN/fullchain.pem /opt/bitnami/apache/conf/bitnami/certs/server.crt
  6. Immetti il seguente comando per avviare i servizi sottostanti dello stack LAMP interrotti in precedenza:

    sudo /opt/bitnami/ctlscript.sh start

    Viene visualizzato un risultato simile a quello seguente:

    Servizi dell'istanza avviati.

    L'istanza LAMP ora è configurata per utilizzare la crittografia SSL. Tuttavia, il traffico non viene automaticamente reindirizzato da HTTP a HTTPS.

  7. Passa alla prossima sezione di questo tutorial.

Fase 8: configurazione del reindirizzamento da HTTP a HTTPS per l'applicazione Web

È possibile configurare un reindirizzamento da HTTP a HTTPS per l'istanza LAMP. Il reindirizzamento automatico da HTTP a HTTPS rende il sito accessibile solo per i tuoi clienti tramite SSL, anche quando si connettono tramite HTTP.

Configurazione del reindirizzamento da HTTP a HTTPS per l'applicazione Web
  1. Nella sessione SSH basata su browser Lightsail per la tua istanza LAMP, inserisci il seguente comando per modificare il file di configurazione del server web Apache utilizzando l'editor di testo Vim:

    sudo vim /opt/bitnami/apache2/conf/bitnami/bitnami.conf
    Nota

    Questo tutorial impiega Vim a scopo dimostrativo; tuttavia, è possibile utilizzare qualsiasi editor di testo per eseguire questa fase.

  2. Premi il tasto i per accedere alla modalità di inserimento nell'editor Vim.

  3. Nel file, immetti il testo seguente tra DocumentRoot "/opt/bitnami/apache2/htdocs" e <Directory "/opt/bitnami/apache2/htdocs">:

    RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [R,L]

    Il risultato sarà simile al seguente:

    File di configurazione Apache modificato per il reindirizzamento da HTTP ad HTTPS.
  4. Premi il tasto ESC, immetti :wq per scrivere (salvare) le modifiche e chiudi Vim.

  5. Immetti il seguente comando per riavviare i servizi sottostanti dello stack LAMP e applicare le modifiche:

    sudo /opt/bitnami/ctlscript.sh restart

    L'istanza LAMP è ora configurata per reindirizzare automaticamente le connessioni da HTTP a HTTPS. Quando un visitatore accede a http://www.example.com, viene automaticamente reindirizzato all'indirizzo https://www.example.com crittografato.

Fase 9: Rinnovo dei certificati Let's Encrypt ogni 90 giorni

I certificati Let's Encrypt sono validi per 90 giorni. I certificati possono essere rinnovati 30 giorni prima della scadenza. Per rinnovare i certificati Let's Encrypt, esegui il comando utilizzato originariamente per ottenerli. Ripeti le fasi indicate nella sezione Richiesta di un certificato jolly SSL Let's Encrypt di questo tutorial.