Tutorial: ConfiguraSSL/TLSsu AL2 023 - Amazon Linux 2023

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à.

Tutorial: ConfiguraSSL/TLSsu AL2 023

Secure Sockets Layer/Transport Layer Security (SSL/TLS) creates an encrypted channel between a web server and web client that protects data in transit from being eavesdropped on. This tutorial explains how to add support manually for SSL/TLS su un'EC2istanza con AL2 023 e server web Apache. Questo tutorial presuppone che si non stia utilizzando un sistema di bilanciamento del carico (load balancer). Se utilizzi Elastic Load Balancing, puoi scegliere di configurare l'SSLoffload sul load balancer, utilizzando invece un certificato di. AWS Certificate Manager

Per ragioni storiche, la crittografia web viene spesso definita semplicemente come. SSL Sebbene i browser Web lo supportino ancoraSSL, il protocollo successivo TLS è meno vulnerabile agli attacchi. AL2023 disattiva il supporto lato server per tutte le versioni di by default. SSL Gli enti preposti agli standard di sicurezza considerano la TLS versione 1.0 non sicura. TLS1.0 e TLS 1.1 sono state formalmente dichiarate obsolete nel marzo 2021. Questo tutorial contiene linee guida basate esclusivamente sull'abilitazione della 1.2. TLS TLS1.3 è stato completato nel 2018 ed è disponibile AL2 purché la TLS libreria sottostante (Apri SSL in questo tutorial) sia supportata e abilitata. I clienti devono supportare TLS 1.2 o versioni successive entro il 28 giugno 2023. Per ulteriori informazioni sugli standard di crittografia aggiornati, vedere RFC7568 e RFC8446.

Questo tutorial si riferisce alla crittografia web moderna semplicemente come. TLS

Importante

Queste procedure sono destinate all'uso con AL2 023. Se stai cercando di configurare un'EC2istanza che esegue una distribuzione diversa o un'istanza che esegue una vecchia versione di Amazon Linux, alcune procedure di questo tutorial potrebbero non funzionare. Per Ubuntu, consulta la seguente documentazione della community di Ubuntu: Apri SSL su Ubuntu. Per Red Hat Enterprise Linux, consultate quanto segue: Configurazione del server HTTP Web Apache. Per altre distribuzioni, consulta la relativa documentazione specifica.

Nota

In alternativa, puoi usare AWS Certificate Manager (ACM) for AWS Nitro enclaves, un'applicazione enclave che ti consente di utilizzare TLS certificatiSSL/pubblici e privati con le tue applicazioni Web e i tuoi server in esecuzione su istanze Amazon EC2 con Nitro Enclaves. AWS Nitro Enclaves è una EC2 funzionalità di Amazon che consente la creazione di ambienti di elaborazione isolati per proteggere ed elaborare in modo sicuro dati altamente sensibili, come SSL TLS /certificati e chiavi private.

ACMfor Nitro Enclaves funziona con nginx in esecuzione sulla tua istanza EC2 Amazon Linux per creare chiavi private, distribuire certificati e chiavi private e gestire i rinnovi dei certificati.

Per utilizzarlo ACM per Nitro Enclaves, devi usare un'istanza Linux abilitata all'enclave.

Per ulteriori informazioni, vedi Cos'è Nitro Enclaves? AWS e AWS Certificate Manager per Nitro Enclaves nella Guida per l'utente di Nitro Enclaves.AWS

Prerequisiti

Prima di iniziare questo tutorial, completare le procedure descritte di seguito:

  • Avvia un'istanza 023 supportata da -0. EBS AL2 Per ulteriori informazioni, consulta AL2023 su Amazon EC2.

  • Configura i tuoi gruppi di sicurezza per consentire all'istanza di accettare connessioni sulle seguenti porte: TCP

    • SSH(porta 22)

    • HTTP(porta 80)

    • HTTPS(porta 443)

    Per ulteriori informazioni, consulta Autorizza il traffico in entrata per le tue istanze Linux nella Amazon EC2 User Guide.

  • Installare il server Web Apache. Per step-by-step istruzioni, consulta. Tutorial: installare un LAMP server su AL2 023 Sono necessari solo il pacchetto httpd e le sue dipendenze, quindi puoi ignorare le istruzioni che coinvolgono e PHP MariaDB.

  • Per identificare e autenticare i siti Web, l'infrastruttura a chiave TLS pubblica (PKI) si basa sul Domain Name System (). DNS Per utilizzare la tua EC2 istanza per ospitare un sito Web pubblico, devi registrare un nome di dominio per il tuo server Web o trasferire un nome di dominio esistente sul tuo EC2 host Amazon. A tale scopo sono disponibili numerosi servizi DNS di hosting e registrazione di domini di terze parti, oppure puoi utilizzare Amazon Route 53.

Fase 1: Attivazione TLS sul server

Questa procedura illustra il processo di configurazione TLS di AL2 023 con un certificato digitale autofirmato.

Nota

Un certificato autofirmato è accettabile in ambienti di test, ma non in ambienti di produzione. Se esponi un certificato autofirmato in Internet, i visitatori del sito visualizzeranno avvisi di sicurezza.

Da abilitare TLS su un server
  1. Connettersi all'istanza e confermare che Apache è in esecuzione. Per ulteriori informazioni, consulta Connessione a AL2 023 istanze.

    [ec2-user ~]$ sudo systemctl is-enabled httpd

    Se il valore restituito non è "enabled" ("abilitato), avviare Apache e configurarlo in modo che venga avviato all'avvio del sistema:

    [ec2-user ~]$ sudo systemctl start httpd && sudo systemctl enable httpd
  2. Per verificare che tutti i pacchetti software siano aggiornati, eseguire un aggiornamento rapido del software sull'istanza. Questo processo può richiedere alcuni minuti, ma è importante assicurarsi di disporre della versione più recente degli aggiornamenti della sicurezza e delle correzioni dei bug.

    Nota

    L'opzione -y installa gli aggiornamenti senza chiedere conferma. Se desideri esaminare gli aggiornamenti prima di installarli, puoi omettere questa opzione.

    [ec2-user ~]$ sudo dnf install openssl mod_ssl
  3. Dopo aver inserito il seguente comando, verrà indirizzato a un prompt in cui è possibile immettere le informazioni sul sito.

    [ec2-user ~]$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/pki/tls/private/apache-selfsigned.key -out /etc/pki/tls/certs/apache-selfsigned.crt

    Viene così generato il nuovo file apache-selfsigned.crt nella directory /etc/pki/tls/certs/. Il nome di file specificato corrisponde al file predefinito assegnato nella direttiva SSLCertificateFile in /etc/httpd/conf.d/ssl.conf

    L'istanza dispone ora dei file seguenti, che serviranno per configurare il server sicuro e creare un certificato per il test:

    • /etc/httpd/conf.d/ssl.conf

      File di configurazione per mod_ssl. Contiene direttive che indicano ad Apache dove trovare le chiavi e i certificati di crittografia, le versioni del TLS protocollo da consentire e i codici di crittografia da accettare. Questo sarà il file di certificato locale:

    • /etc/pki/tls/certs/apache-selfsigned.crt

    Il file contiene sia un certificato autofirmato che la relativa chiave privata. Apache richiede che il certificato e la chiave siano in PEM formato, che consiste in ASCII caratteri codificati in Base64 racchiusi tra righe "" e "BEGIN", come nel seguente esempio abbreviato. END

    -----BEGIN PRIVATE KEY----- MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQD2KKx/8Zk94m1q 3gQMZF9ZN66Ls19+3tHAgQ5Fpo9KJDhzLjOOCI8u1PTcGmAah5kEitCEc0wzmNeo BCl0wYR6G0rGaKtK9Dn7CuIjvubtUysVyQoMVPQ97ldeakHWeRMiEJFXg6kZZ0vr GvwnKoMh3DlK44D9dX7IDua2PlYx5+eroA+1Lqf32ZSaAO0bBIMIYTHigwbHMZoT ... 56tE7THvH7vOEf4/iUOsIrEzaMaJ0mqkmY1A70qQGQKBgBF3H1qNRNHuyMcPODFs 27hDzPDinrquSEvoZIggkDMlh2irTiipJ/GhkvTpoQlv0fK/VXw8vSgeaBuhwJvS LXU9HvYq0U6O4FgD3nAyB9hI0BE13r1HjUvbjT7moH+RhnNz6eqqdscCS09VtRAo 4QQvAqOa8UheYeoXLdWcHaLP -----END PRIVATE KEY----- -----BEGIN CERTIFICATE----- MIIEazCCA1OgAwIBAgICWxQwDQYJKoZIhvcNAQELBQAwgbExCzAJBgNVBAYTAi0t MRIwEAYDVQQIDAlTb21lU3RhdGUxETAPBgNVBAcMCFNvbWVDaXR5MRkwFwYDVQQK DBBTb21lT3JnYW5pemF0aW9uMR8wHQYDVQQLDBZTb21lT3JnYW5pemF0aW9uYWxV bml0MRkwFwYDVQQDDBBpcC0xNzItMzEtMjAtMjM2MSQwIgYJKoZIhvcNAQkBFhVy ... z5rRUE/XzxRLBZOoWZpNWTXJkQ3uFYH6s/sBwtHpKKZMzOvDedREjNKAvk4ws6F0 CuIjvubtUysVyQoMVPQ97ldeakHWeRMiEJFXg6kZZ0vrGvwnKoMh3DlK44D9dlU3 WanXWehT6FiSZvB4sTEXXJN2jdw8g+sHGnZ8zCOsclknYhHrCVD2vnBlZJKSZvak 3ZazhBxtQSukFMOnWPP2a0DMMFGYUHOd0BQE8sBJxg== -----END CERTIFICATE-----

    I nomi e le estensioni di file rappresentano una convenzione e non hanno alcuna ripercussione sulla funzionalità. Ad esempio è possibile denominare un certificato cert.crt, cert.pem o con qualsiasi altro nome di file, a condizione che la direttiva corrispondente nel file ssl.conf utilizzi lo stesso nome.

    Nota

    Quando sostituite TLS i file predefiniti con i vostri file personalizzati, assicuratevi che siano in formato. PEM

  4. Riavviare Apache.

    [ec2-user ~]$ sudo systemctl restart httpd
    Nota

    Assicurati che la TCP porta 443 sia accessibile sulla tua EC2 istanza, come descritto in precedenza.

  5. Il tuo server web Apache dovrebbe ora supportare HTTPS (sicuroHTTP) la porta 443. Provalo inserendo l'indirizzo IP o il nome di dominio completo della tua EC2 istanza in una URL barra del browser con il prefisso. https://

    Poiché ti stai connettendo a un sito con un certificato host autofirmato non attendibile, il browser potrebbe visualizzare una serie di avvisi di sicurezza. Ignorare gli avvisi e passare al sito.

    Se si apre la pagina di test Apache predefinita, significa che la configurazione TLS sul server è stata completata correttamente. Tutti i dati in transito tra il browser e il server ora sono crittografati.

    Nota

    Per evitare che i visitatori del sito vedano schermate di avviso, è necessario ottenere un certificato attendibile che non solo esegua la crittografia, ma che fornisca anche un'autenticazione pubblica del proprietario del sito.

Fase 2: ottenere un certificato firmato dalla CA

Puoi utilizzare la seguente procedura per ottenere un certificato firmato dalla CA:

  • Genera una richiesta di firma del certificato (CSR) da una chiave privata

  • Invialo CSR a un'autorità di certificazione (CA)

  • Ottenere un certificato host firmato

  • Configurare Apache per utilizzare il certificato

Un certificato host TLS X.509 autofirmato è crittograficamente identico a un certificato firmato da un'autorità di certificazione. La differenza è una questione di attendibilità. Una CA si impegna infatti a fornire una convalida minima della titolarità di un dominio prima di emettere un certificato a un richiedente. Ogni browser Web contiene un elenco di quelli ritenuti idonei dal fornitore del CAs browser a tale scopo. Un certificato X.509 è principalmente composto da una chiave server privata e da una firma fornita dalla CA e associata a livello di crittografia alla chiave pubblica. Quando un browser si connette a un server Web tramite un server WebHTTPS, il server presenta un certificato da confrontare con l'elenco dei siti attendibiliCAs. Se il firmatario è incluso nell'elenco oppure è accessibile tramite una catena di attendibilità composta da altri firmatari fidati, il browser negozia un canale di dati a crittografia rapida con il server e carica la pagina.

I certificati in genere costano poiché il processo di convalida delle richieste prevede alcuni costi. Consigliamo pertanto di valutare le varie offerte. Alcuni CAs offrono certificati di livello base gratuiti. Il più importante di questi CAs è il progetto Let's Encrypt, che supporta anche l'automazione del processo di creazione e rinnovo dei certificati. Per ulteriori informazioni sull'utilizzo di un certificato Let's Encrypt, consulta la pagina Ottenimento di Certbot.

Se hai intenzione di offrire servizi di livello commerciale, AWS Certificate Manager è una buona opzione.

L'uso di un certificato host sottostante rappresenta la soluzione ideale. A partire dal 2019, i gruppi governativi e industriali consigliano di utilizzare una dimensione minima della chiave (modulo) di 2048 bit per le RSA chiavi destinate a proteggere i documenti, fino al 2030. La dimensione predefinita del modulo generata da Open SSL in AL2 023 è di 2048 bit, adatta per l'uso in un certificato firmato da un'autorità di certificazione. Nella seguente procedura viene offerto un passaggio opzionale per coloro che desiderano una chiave personalizzata, ad esempio, una chiave con un modulo più grande o che utilizza un algoritmo di crittografia diverso.

Importante

Queste istruzioni per l'acquisizione di un certificato host firmato da un'autorità di certificazione non funzionano a meno che non si possieda un dominio registrato e ospitato. DNS

Per ottenere un certificato firmato dalla CA
  1. Connect alla propria istanza e naviga to /etc/pki/tls/private /. Questa è la directory per cui memorizzi la chiave privata del server. TLS Se preferisci utilizzare una chiave host esistente per generare ilCSR, vai al passaggio 3. Per ulteriori informazioni sulla connessione alla tua istanza, consulta Connessione a AL2 023 istanze

  2. (Opzionale) Generare una nuova chiave privata. Di seguito sono riportate alcune configurazioni di chiave di esempio. Qualsiasi chiave risultante funziona con il server Web, ma il livello e il tipo di sicurezza implementati possono variare.

    • Esempio 1: crea una chiave RSA host predefinita. Il file risultante è una chiave RSA privata a 2048 bit. custom.key

      [ec2-user ~]$ sudo openssl genrsa -out custom.key
    • Esempio 2: crea una RSA chiave più potente con un modulo più grande. Il file risultante è una custom.key chiave privata a 4096 bitRSA.

      [ec2-user ~]$ sudo openssl genrsa -out custom.key 4096
    • Esempio 3: creare una RSA chiave crittografata a 4096 bit con protezione tramite password. Il file risultante è una chiave RSA privata a 4096 bit crittografata con il codice -128. custom.key AES

      Importante

      La crittografia di una chiave fornisce maggiore sicurezza, ma dal momento che una chiave crittografata richiede una password, i servizi che dipendono da essa non possono essere avviati automaticamente. Ogni volta che si utilizza questa chiave, è necessario fornire la password (nell'esempio precedente, «abcde12345") tramite una connessione. SSH

      [ec2-user ~]$ sudo openssl genrsa -aes128 -passout pass:abcde12345 -out custom.key 4096
    • Esempio 4: creare una chiave utilizzando un codice non crittografico. RSA RSAla crittografia può essere relativamente lenta a causa delle dimensioni delle sue chiavi pubbliche, che sono basate sul prodotto di due grandi numeri primi. Tuttavia, è possibile creare chiavi TLS che non utilizzino codiciRSA. Le chiavi basate su calcoli matematici di curve ellittiche sono di dimensioni inferiori e, dal punto di vista del calcolo, più rapide pur garantendo un livello equivalente di sicurezza.

      [ec2-user ~]$ sudo openssl ecparam -name prime256v1 -out custom.key -genkey

      Il risultato è una chiave privata a curva ellittica a 256 bit che utilizza prime256v1, una «curva denominata» supportata da Open. SSL La sua forza crittografica è leggermente superiore a quella di una chiave a 2048 bit, secondo. RSA NIST

      Nota

      Non tutti CAs forniscono lo stesso livello di supporto per elliptic-curve-based le chiavi come per le chiavi. RSA

    Verifica che la nuova chiave privata disponga di titolarità e autorizzazioni altamente restrittivi (owner=root, group=root, read/write solo per il proprietario). Il comando è come mostrato nell'esempio seguente.

    [ec2-user ~]$ sudo chown root:root custom.key [ec2-user ~]$ sudo chmod 600 custom.key [ec2-user ~]$ ls -al custom.key

    I comandi precedenti restituiscono il seguente risultato:

    -rw------- root root custom.key

    Dopo aver creato e configurato una chiave soddisfacente, è possibile creare unaCSR.

  3. Crea un CSR utilizzando la tua chiave preferita. Nell'esempio seguente viene utilizzato custom.key.

    [ec2-user ~]$ sudo openssl req -new -key custom.key -out csr.pem

    Apri SSL apre una finestra di dialogo e richiede le informazioni mostrate nella tabella seguente. Tutti i campi, tranne Common Name (Nome comune), sono facoltativi per un certificato host di base convalidato a livello di dominio.

    Nome Descrizione Esempio
    Nome paese L'ISOabbreviazione di due lettere per il tuo paese. US = Stati Uniti
    State or Province Name (Nome stato o provincia) Il nome dello stato o della provincia in cui si trova la tua organizzazione. Questo nome non può essere abbreviato. Washington
    Locality Name (Nome località) La località in cui si trova la tua organizzazione, ad esempio una città. Seattle
    Nome organizzazione La denominazione legale completa della tua organizzazione. Non abbreviare il nome dell'organizzazione. Example Corporation
    Organizational Unit Name (Nome unità organizzativa) Eventuali informazioni aggiuntive. Example Dept
    Common Name (Nome comune)

    Questo valore deve corrispondere esattamente all'indirizzo Web che presumibilmente gli utenti immettono in un browser. In genere, ciò significa un nome di dominio con un nome host o alias con un prefisso, nel formato www.example.com. Nei test con un certificato autofirmato e senza DNS risoluzione, il nome comune può essere costituito solo dal nome host. CAsoffrono anche certificati più costosi che accettano nomi wild-card come. *.example.com

    www.example.com
    Indirizzo e-mail L'indirizzo e-mail dell'amministratore del server. someone@example.com

    Infine, Open SSL richiede una password di sfida opzionale. Questa password si applica solo alle transazioni tra te CSR e la tua CA, quindi segui i consigli della CA in merito a questo e all'altro campo opzionale, il nome dell'azienda facoltativo. La password di CSR sfida non ha alcun effetto sul funzionamento del server.

    Il file csr.pem risultante contiene la chiave pubblica, la firma digitale della chiave pubblica e i metadati immessi.

  4. Inviala CSR a una CA. Questo di solito consiste nell'aprire il CSR file in un editor di testo e copiarne il contenuto in un modulo web. In questo momento, è possibile che ti venga chiesto di fornire uno o più nomi alternativi del soggetto (SANs) da inserire nel certificato. Se www.example.com è il nome comune, allora example.com sarebbe buonoSAN, e viceversa. Un visitatore del sito che immettesse uno di questi due nomi avrebbe accesso a una connessione priva di errori. Se il tuo modulo web CA lo consente, includi il nome comune nell'elenco diSANs. Alcuni lo CAs includono automaticamente.

    Dopo l'approvazione della richiesta, riceverai un nuovo certificato host firmato dalla CA. Ti potrebbe inoltre venire richiesto di scaricare un file di certificato intermedio contenente i certificati aggiuntivi necessari per completare la catena di attendibilità della CA.

    Nota

    La CA potrebbe inviare i file in più formati, destinati a scopi specifici. Per questo tutorial, dovresti usare solo un file di certificato in PEM formato, che di solito (ma non sempre) è contrassegnato con un'estensione di .crt file .pem or. Se non sei sicuro di quale file usare, apri il file in un editor di testo e cerca quello contenente uno o più blocchi che iniziano con la seguente riga.

    - - - - -BEGIN CERTIFICATE - - - - -

    Il file deve inoltre terminare con la seguente riga.

    - - - -END CERTIFICATE - - - - -

    Puoi anche testare il file nella riga di comando come indicato di seguito.

    [ec2-user certs]$ openssl x509 -in certificate.crt -text

    Verifica che nel file appaiano queste righe. Non utilizzare file che terminano con .p7b, .p7c o estensioni simili.

  5. Posizionare il nuovo certificato firmato dalla CA ed eventuali certificati intermedi nella directory /etc/pki/tls/certs.

    Nota

    Esistono diversi modi per caricare il nuovo certificato sull'EC2istanza, ma il modo più semplice e informativo è aprire un editor di testo (ad esempio, vi, nano o notepad) sia sul computer locale che sull'istanza, e quindi copiare e incollare il contenuto del file tra di essi. Sono necessarie le autorizzazioni di root [sudo] per eseguire queste operazioni sull'istanza. EC2 In questo modo, puoi verificare in tempo reale se si verificano problemi a livello di autorizzazioni o percorsi. Presta particolare attenzione a non aggiungere altre righe durante la copia del contenuto o a non apportare modifiche di alcun tipo.

    Dall'interno della /etc/pki/tls/certs directory, verificate che le impostazioni relative alla proprietà del file, al gruppo e alle autorizzazioni corrispondano ai valori predefiniti AL2 023, estremamente restrittivi (owner=root, group=root, read/write for owner). L'esempio seguente mostra i comandi da utilizzare.

    [ec2-user certs]$ sudo chown root:root custom.crt [ec2-user certs]$ sudo chmod 600 custom.crt [ec2-user certs]$ ls -al custom.crt

    Questi comandi dovrebbero restituire il seguente risultato.

    -rw------- root root custom.crt

    Le autorizzazioni del file del certificato intermedio sono meno rigide (owner=root, group=root, il proprietario può scrivere, il gruppo può leggere, tutti gli utenti possono leggere). L'esempio seguente mostra i comandi da utilizzare.

    [ec2-user certs]$ sudo chown root:root intermediate.crt [ec2-user certs]$ sudo chmod 644 intermediate.crt [ec2-user certs]$ ls -al intermediate.crt

    Questi comandi dovrebbero restituire il seguente risultato.

    -rw-r--r-- root root intermediate.crt
  6. Inserisci la chiave privata che hai usato per crearla nella directory. CSR /etc/pki/tls/private/

    Nota

    Esistono diversi modi per caricare la chiave personalizzata sull'EC2istanza, ma il modo più semplice e informativo consiste nell'aprire un editor di testo (ad esempio, vi, nano o notepad) sia sul computer locale che sull'istanza, e quindi copiare e incollare il contenuto del file tra di essi. Sono necessarie le autorizzazioni di root [sudo] per eseguire queste operazioni sull'istanza. EC2 In questo modo, puoi verificare in tempo reale se si verificano problemi a livello di autorizzazioni o percorsi. Presta particolare attenzione a non aggiungere altre righe durante la copia del contenuto o a non apportare modifiche di alcun tipo.

    Dall'interno della /etc/pki/tls/private directory, utilizzate i seguenti comandi per verificare che le impostazioni di proprietà, gruppo e autorizzazione del file corrispondano ai valori predefiniti AL2 023, estremamente restrittivi (owner=root, group=root, read/write for owner only).

    [ec2-user private]$ sudo chown root:root custom.key [ec2-user private]$ sudo chmod 600 custom.key [ec2-user private]$ ls -al custom.key

    Questi comandi dovrebbero restituire il seguente risultato.

    -rw------- root root custom.key
  7. Modificare /etc/httpd/conf.d/ssl.conf per riflettere i nuovi file del certificato e della chiave.

    1. Indicare il percorso e il nome del file del certificato host firmato dalla CA nella direttiva SSLCertificateFile di Apache:

      SSLCertificateFile /etc/pki/tls/certs/custom.crt
    2. In caso di ricezione di un file del certificato intermedio (intermediate.crt in questo esempio), specificare il relativo percorso e nome di file utilizzando la direttiva SSLCACertificateFile di Apache:

      SSLCACertificateFile /etc/pki/tls/certs/intermediate.crt
      Nota

      Alcuni CAs combinano il certificato host e i certificati intermedi in un unico file, rendendo superflua la direttiva. SSLCACertificateFile Consultare le istruzioni fornite dalla CA.

    3. Specificare il percorso e il nome del file della chiave privata (custom.key in questo esempio) nella direttiva SSLCertificateKeyFile di Apache:

      SSLCertificateKeyFile /etc/pki/tls/private/custom.key
  8. Salvare /etc/httpd/conf.d/ssl.conf e riavviare Apache.

    [ec2-user ~]$ sudo systemctl restart httpd
  9. Metti alla prova il tuo server inserendo il tuo nome di dominio in una URL barra del browser con il prefissohttps://. Il tuo browser dovrebbe caricare la pagina di test HTTPS senza generare errori.

Fase 3: testare e proteggere la configurazione di sicurezza

Dopo essere stato operativo TLS ed esposto al pubblico, dovreste verificare quanto sia realmente sicuro. È facile farlo utilizzando servizi online come Qualys SSL Labs, che esegue un'analisi gratuita e completa della configurazione di sicurezza. In base ai risultati, puoi decidere di rafforzare la configurazione di sicurezza di default mediante il controllo dei protocolli accettati, del tipo di cifratura preferito e degli elementi da escludere. Per ulteriori informazioni, consulta la sezione relativa alla formulazione delle classificazioni di Qualys.

Importante

Il test in un ambiente reale è di cruciale importanza per la sicurezza del server. Piccoli errori di configurazione potrebbero generare gravi violazioni della sicurezza e perdita di dati. Poiché le procedure consigliate per la sicurezza sono in costante cambiamento in risposta a programmi di ricerca e minacce emergenti, verifiche periodiche della sicurezza rappresentano una pratica di amministrazione ottimale dei server.

Sul sito Qualys SSL Labs, inserite il nome di dominio completo del vostro server, nel modulo. www.example.com Dopo circa due minuti riceverai una valutazione del sito (da A a F) e un'analisi dettagliata dei risultati. La tabella seguente riassume il rapporto per un dominio con impostazioni identiche alla configurazione predefinita di Apache su AL2 023 e con un certificato Certbot predefinito.

Valutazione complessiva B
Certificato 100%
Supporto dei protocolli 95%
Scambio di chiavi 70%
Affidabilità crittografia 90%

Benché dalla panoramica emerga una certa solidità della configurazione, il rapporto dettagliato mette in luce diversi potenziali problemi, qui elencati in ordine di gravità:

Il RC4 codice è supportato per l'uso da parte di alcuni browser meno recenti. Un codice è il nucleo matematico di un algoritmo di crittografia. RC4, un codice veloce utilizzato per crittografare i TLS flussi di dati, è noto per presentare diversi gravi punti deboli. A meno di avere ottime ragioni per supportare browser legacy, è necessario disabilitare questa opzione.

TLS✗ Sono supportate le versioni precedenti. La configurazione supporta TLS 1.0 (già obsoleto) e TLS 1.1 (in un percorso verso la deprecazione). Solo TLS 1.2 è stato consigliato dal 2018.

La proprietà Forward Secrecy non è completamente supportata. La proprietà Forward Secrecy è una caratteristica degli algoritmi che eseguono la crittografia utilizzando chiavi di sessione temporanee (effimere) derivate dalla chiave privata. Ciò significa in pratica che gli aggressori non possono decifrare i HTTPS dati anche se possiedono la chiave privata a lungo termine di un server web.

Per correggere e rendere la configurazione a prova di futuro TLS
  1. Aprire il file di configurazione /etc/httpd/conf.d/ssl.conf in un editor di testo e commentare la seguente riga inserendo il carattere "#" all'inizio:

    #SSLProtocol all -SSLv3
  2. Aggiungere la seguente direttiva:

    #SSLProtocol all -SSLv3 SSLProtocol -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 +TLSv1.2

    Questa direttiva disabilita esplicitamente SSL le versioni 2 e 3, nonché TLS le versioni 1.0 e 1.1. Il server ora rifiuta di accettare connessioni crittografate con client che utilizzano qualsiasi cosa tranne 1.2. TLS Le descrizioni dettagliate della direttiva illustrano più chiaramente al lettore la tipologia di configurazione impostata per il server.

    Nota

    La disattivazione TLS delle versioni 1.0 e 1.1 in questo modo impedisce a una piccola percentuale di browser Web obsoleti di accedere al sito.

Per modificare l'elenco delle crittografie consentite
  1. Nel file di configurazione /etc/httpd/conf.d/ssl.conf, individuare la sezione con la direttiva SSLCipherSuite e commentare la riga esistente inserendo il carattere "#" all'inizio.

    #SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
  2. Specificare suite di crittografia esplicite e un ordine di crittografia che dia priorità alla funzione Forward Secrecy e che eviti crittografie non sicure. La SSLCipherSuite direttiva qui utilizzata si basa sull'output del Mozilla SSL Configuration Generator, che adatta una TLS configurazione al software specifico in esecuzione sul server. Determina innanzitutto le tue SSL versioni di Apache e Open utilizzando l'output dei seguenti comandi.

    [ec2-user ~]$ yum list installed | grep httpd [ec2-user ~]$ yum list installed | grep openssl

    Ad esempio, se le informazioni restituite sono Apache 2.4.34 e Open SSL 1.0.2, le inseriamo nel generatore. Scegliere poi il modello di compatibilità “moderna”, che crea una direttiva SSLCipherSuite e applica in modo rigido la sicurezza ma che funziona per la maggior parte dei browser. Se il software non supporta la configurazione moderna, è possibile aggiornarlo o scegliere la configurazione “intermedia”.

    SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305: ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256: ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256

    I cifrari selezionati hanno ECDHEnei loro nomi l'abbreviazione di Elliptic Curve Diffie-Hellman Ephemeral. Il termine effimero fa riferimento alla proprietà Forward Secrecy. Come sottoprodotto, RC4 questi cifrari non supportano.

    È consigliabile utilizzare un elenco esplicito di crittografie anziché utilizzare le impostazioni predefinite o le direttive concise il cui contenuto non è visibile.

    Copiare la direttiva generata in /etc/httpd/conf.d/ssl.conf.

    Nota

    Nonostante in questa sede siano riportate su più righe per facilitarne la leggibilità, una volta copiata su /etc/httpd/conf.d/ssl.conf la direttiva deve trovarsi su un'unica riga con solo due punti (senza spazi) tra i nomi di crittografia.

  3. Rimuovere infine i commenti mediante la rimozione del carattere "#" dall'inizio della riga:

    #SSLHonorCipherOrder on

    Questa direttiva obbliga il server a preferire crittografie con classificazione più elevata, comprese (in questo caso) quelle che supportano la proprietà Forward Secrecy. Con questa direttiva abilitata, il server cerca di stabilire una connessione stabile e affidabile prima di ripiegare sulle crittografie consentite con un livello inferiore di sicurezza.

Dopo aver completato entrambe le procedure, salvare le modifiche a /etc/httpd/conf.d/ssl.conf e riavviare Apache.

Se testate nuovamente il dominio su Qualys SSL Labs, dovreste vedere che la RC4 vulnerabilità e gli altri avvisi sono scomparsi e il riepilogo sarà simile al seguente.

Valutazione complessiva A
Certificato 100%
Supporto dei protocolli 100%
Scambio di chiavi 90%
Affidabilità crittografia 90%

Ogni aggiornamento di Open SSL introduce nuove cifrature e rimuove il supporto per quelle vecchie. Conserva la tua istanza EC2 AL2 023 up-to-date, guarda gli annunci sulla sicurezza di Open SSL e fai attenzione alle segnalazioni di nuovi exploit di sicurezza pubblicate dalla stampa tecnica.

Risoluzione dei problemi

  • Il server Web Apache non si avvia a meno che non venga fornita una password

    Si tratta del comportamento previsto se per il server hai installato una chiave privata crittografata e protetta con password.

    Puoi rimuovere i requisiti di crittografia e password dalla chiave. Supponendo che tu abbia una RSA chiave privata crittografata richiamata custom.key nella directory predefinita e che la password sia contenutaabcde12345, esegui i seguenti comandi sull'EC2istanza per generare una versione non crittografata della chiave.

    [ec2-user ~]$ cd /etc/pki/tls/private/ [ec2-user private]$ sudo cp custom.key custom.key.bak [ec2-user private]$ sudo openssl rsa -in custom.key -passin pass:abcde12345 -out custom.key.nocrypt [ec2-user private]$ sudo mv custom.key.nocrypt custom.key [ec2-user private]$ sudo chown root:root custom.key [ec2-user private]$ sudo chmod 600 custom.key [ec2-user private]$ sudo systemctl restart httpd

    A questo punto, Apache viene avviato senza visualizzare alcuna richiesta di password.

  • Vengono visualizzati errori quando si esegue il comando sudo yum install -y mod_ssl.

    Durante l'installazione dei pacchetti richiesti perSSL, è possibile che vengano visualizzati errori simili ai seguenti.

    Error: httpd24-tools conflicts with httpd-tools-2.2.34-1.16.amzn1.x86_64 Error: httpd24 conflicts with httpd-2.2.34-1.16.amzn1.x86_64

    Ciò significa in genere che l'EC2istanza non esegue AL2 023. Questo tutorial supporta solo le istanze appena create da una versione 023 ufficiale. AL2 AMI