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: Configurazione SSL/TLS su AMI Amazon Linux
Nota
Amazon Linux 1 (AL1precedentemente Amazon Linux AMI) non è più supportato. Questa guida è disponibile solo a scopo di riferimento.
Secure Layer/Transport Sockets 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/TLSsu un' EC2 istanza con l'AMI Amazon Linux e il server Web Apache). Questo tutorial presuppone che si non stia utilizzando un sistema di bilanciamento del carico (load balancer). Se si utilizza Elastic Load Balancing, è possibile scegliere di configurare l'offload SSL sul load balancer, utilizzando invece un certificato di AWS Certificate Manager
Per motivi storici, la crittografia Web viene spesso definita semplicemente con l'acronimo SSL. Se da un lato i browser Web continuano a supportare il protocollo SSL, dall'altro il protocollo TLS, suo successore, è meno vulnerabile agli attacchi. L'AMI Amazon Linux disabilita il supporto lato server su tutte le versioni di SSL per impostazione predefinita. Gli organismi che si occupano degli standard di sicurezza
Questo tutorial fa riferimento alla crittografia Web moderna semplicemente come TLS.
Importante
Queste procedure sono pensate per essere applicate all'AMI Amazon Linux. Se stai cercando di configurare un server Web LAMP per un'istanza con una distribuzione diversa, alcune procedure descritte in questo tutorial potrebbero non essere valide. Per AL2, consulta Configure on. SSL/TLS AL2 Per Ubuntu, consulta la documentazione seguente della community: Open SSL on Ubuntu
Nota
In alternativa, puoi utilizzare AWS Certificate Manager (ACM) for AWS Nitro enclaves, un'applicazione enclave che ti consente di utilizzare SSL/TLS certificati pubblici e privati con le tue applicazioni Web e i tuoi server in esecuzione su istanze Amazon con Nitro Enclaves. EC2 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.
ACM for Nitro Enclaves funziona con nginx in esecuzione sulla tua istanza Amazon EC2 Linux per creare chiavi private, distribuire certificati e chiavi private e gestire i rinnovi dei certificati.
Per utilizzare ACM per Nitro Enclaves, è necessario utilizzare un'istanza Linux abilitata all'enclave.
Per ulteriori informazioni, consulta Cos'è Nitro Enclaves? AWS e AWS Certificate Managerper Nitro Enclaves nella Guida per l'utente di Nitro Enclaves. AWS
Indice
Prerequisiti
Prima di iniziare questo tutorial, completare le procedure descritte di seguito:
-
Avviare un'istanza Amazon Linux supportata da EBS utilizzando l'AMI. Per ulteriori informazioni, consulta Launch an instance nella Amazon EC2 User Guide.
-
Configurare il gruppo di sicurezza in modo da consentire all'istanza di accettare le connessioni sulle porte TCP seguenti:
-
SSH (porta 22)
-
HTTP (porta 80)
-
HTTPS (porta 443)
Per ulteriori informazioni, consulta le regole dei gruppi di sicurezza nella Amazon EC2 User Guide.
-
-
Installare un server Web Apache. Per step-by-step istruzioni, consulta Tutorial: Installazione di un server Web LAMP su Amazon Linux. Sono necessari solo il pacchetto http24 e le relative dipendenze. Puoi pertanto ignorare le istruzioni relative a PHP e MySQL.
-
Per identificare e autenticare i siti Web, l'infrastruttura a chiave pubblica (PKI) TLS si basa su 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. Per questa operazione sono disponibili numerosi servizi di registrazione di domini e hosting DNS di terze parti. In alternativa, puoi utilizzare Amazon Route 53.
Fase 1: abilitare TLS nel server
Opzione: completare questo tutorial mediante Automation
Per completare questo tutorial utilizzando AWS Systems Manager invece delle seguenti attività, esegui il documento di automazione
Questa procedura illustra il processo di configurazione di TLS in Amazon Linux 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.
Per abilitare TLS in un server
-
Connettersi all'istanza e confermare che Apache è in esecuzione.
[ec2-user ~]$sudo service httpd statusSe necessario, avviare Apache.
[ec2-user ~]$sudo service httpd start -
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
-yinstalla gli aggiornamenti senza chiedere conferma. Se desideri esaminare gli aggiornamenti prima di installarli, puoi omettere questa opzione.[ec2-user ~]$sudo yum update -y -
Dopo aver aggiornato l'istanza, aggiungere il supporto per TLS installando il modulo Apache
mod_ssl:[ec2-user ~]$sudo yum install -y mod_sslL'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.confFile di configurazione per mod_ssl. Contiene le "direttive" che indicano ad Apache dove cercare le chiavi e i certificati di crittografia, le versioni del protocollo TLS da consentire e il tipo di crittografia da accettare.
/etc/pki/tls/private/localhost.keyUna chiave privata RSA a 2048 bit generata automaticamente per il tuo host Amazon. EC2 Durante l'installazione, OpenSSL utilizza questa chiave per generare un certificato host autofirmato, che potrai utilizzare per generare una richiesta di firma del certificato (CSR, Certificate Signing Request) da inviare a un'autorità di certificazione (CA).
/etc/pki/tls/certs/localhost.crtCertificato X.509 autofirmato generato automaticamente per l'host server. Questo certificato risulta utile per verificare se Apache è configurato correttamente per l'utilizzo di TLS.
I file
.keye.crtsono entrambi in formato PEM, che è composto da caratteri ASCII con codifica Base64 racchiusi tra le righe "BEGIN" e d "END", come nell'esempio di certificato riportato di seguito:-----BEGIN CERTIFICATE----- MIIEazCCA1OgAwIBAgICWxQwDQYJKoZIhvcNAQELBQAwgbExCzAJBgNVBAYTAi0t MRIwEAYDVQQIDAlTb21lU3RhdGUxETAPBgNVBAcMCFNvbWVDaXR5MRkwFwYDVQQK DBBTb21lT3JnYW5pemF0aW9uMR8wHQYDVQQLDBZTb21lT3JnYW5pemF0aW9uYWxV bml0MRkwFwYDVQQDDBBpcC0xNzItMzEtMjAtMjM2MSQwIgYJKoZIhvcNAQkBFhVy ... z5rRUE/XzxRLBZOoWZpNWTXJkQ3uFYH6s/sBwtHpKKZMzOvDedREjNKAvk4ws6F0 WanXWehT6FiSZvB4sTEXXJN2jdw8g+sHGnZ8zCOsclknYhHrCVD2vnBlZJKSZvak 3ZazhBxtQSukFMOnWPP2a0DMMFGYUHOd0BQE8sBJxg== -----END CERTIFICATE-----I nomi e le estensioni dei file sono una convenzione e non hanno effetto sulla funzione; puoi chiamare un certificato
cert.crt,cert.pemo utilizzare qualunque altro nome del file, fintanto che la relativa direttiva nel filessl.confutilizza lo stesso nome.Nota
Quando si sostituiscono i file TLS predefiniti con file personalizzati, assicurarsi che siano in formato PEM.
-
Riavviare Apache.
[ec2-user ~]$sudo service httpd restart -
Il server Web Apache ora dovrebbe supportare HTTPS (HTTP protetto) sulla porta 443. Provalo digitando l'indirizzo IP o il nome di dominio completo della tua EC2 istanza nella barra degli URL 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 la pagina predefinita di test di Apache viene visualizzata, significa che TLS è stato correttamente configurato sul server. Tutti i dati in transito tra il browser e il server ora sono crittografati in modo sicuro.
Per evitare che i visitatori del sito vedano schermate di avviso, devi ottenere un certificato che non solo esegua la crittografia, ma anche che ti autentichi pubblicamente come proprietario del sito.
Fase 2: ottenere un certificato firmato dalla CA
Puoi utilizzare la seguente procedura per ottenere un certificato firmato dalla CA:
-
Generare una richiesta di firma del certificato (CSR) da una chiave privata
-
Inviare il CSR alla Certificate Authority
-
Ottenere un certificato host firmato
-
Configurare Apache per utilizzare il certificato
Dal punto di vista della crittografia un certificato host TLS X.509 autofirmato è identico a un certificato firmato da una CA. La differenza è sociale, non matematica; 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 CAs ritenuti affidabili dal fornitore del 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 HTTPS, il server presenta un certificato da confrontare con l'elenco dei siti attendibili CAs. 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
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. Dal 2017, gruppi appartenenti alla pubblica amministrazione
In mancanza di un dominio DNS registrato e ospitato, tali istruzioni per l'acquisizione di certificati host firmati dalla CA non funzioneranno.
Per ottenere un certificato firmato dalla CA
-
Connect alla propria istanza e accedi a/etc/pki/tls/private/. Si tratta della directory in cui è memorizzata la chiave privata del server per TLS. Se preferisci utilizzare una chiave host esistente per generare la CSR, passa alla Fase 3.
-
(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 può variare nella modalità (e nel livello) di sicurezza implementata.
-
Esempio 1: creare una chiave host RSA predefinita. Il file risultante,
custom.key, è una chiave privata RSA a 2048 bit.[ec2-user ~]$sudo openssl genrsa -out custom.key -
Esempio 2: creare una chiave RSA più complessa con un modulo più grande, Il file risultante,
custom.key, è una chiave privata RSA a 4096 bit.[ec2-user ~]$sudo openssl genrsa -out custom.key 4096 -
Esempio 3: creare una chiave RSA crittografata a 4096 bit con protezione con password. Il file risultante,
custom.key, è una chiave privata RSA a 4096 bit crittografata in base allo standard AES-128.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 usi questa chiave, devi 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 uno standard non RSA. La crittografia RSA può essere relativamente lenta per via della dimensione delle chiavi pubbliche, che sono basate sul prodotto di due grandi numeri primi. Tuttavia, è possibile creare chiavi per TLS che utilizzano una crittografia non RSA. 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 -genkeyIl risultato è una chiave privata basata su curva ellittica a 256 bit che utilizza prime256v1, una "curva denominata" supportata da OpenSSL. La complessità dal punto di vista crittografico è leggermente superiore rispetto una chiave RSA a 2048 bit, secondo i dati NIST
. Nota
Non tutti CAs forniscono lo stesso livello di supporto per elliptic-curve-based le chiavi come per le chiavi RSA.
Assicurati che la nuova chiave privata abbia proprietà e autorizzazioni estremamente restrittive (owner=root, group=root, solo per il proprietario). read/write I comandi sono simili ai seguenti:
[ec2-user ~]$sudo chown root.root custom.key[ec2-user ~]$sudo chmod 600 custom.key[ec2-user ~]$ls -al custom.keyI precedenti comandi dovrebbero restituire il seguente risultato:
-rw------- root root custom.keyDopo aver creato e configurato una chiave affidabile, puoi creare una CSR.
-
-
Creare una CSR utilizzando la chiave preferita; l'esempio seguente utilizza
custom.key:[ec2-user ~]$sudo openssl req -new -key custom.key -out csr.pemOpenSSL visualizza una finestra di dialogo e richiede l'immissione delle informazioni riportate nella seguente tabella. 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'abbreviazione ISO 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 risoluzione DNS, il nome comune può essere costituito solo dal nome host. CAs offrono anche certificati più costosi che accettano nomi wild-card come.*.example.comwww.example.com Indirizzo e-mail L'indirizzo e-mail dell'amministratore del server. someone@example.com Infine, OpenSSL richiede l'immissione di una password di verifica opzionale. Questa password è valida solo per la CSR e per le transazioni tra te e la CA. Pertanto, attieniti alle raccomandazioni della CA in merito alla definizione di questo tipo di password e all'altro campo facoltativo, ovvero il nome azienda facoltativo. La password di verifica associata alla CSR non ha alcuna ripercussione sulla funzionalità del server.
Il file
csr.pemrisultante contiene la chiave pubblica, la firma digitale della chiave pubblica e i metadati immessi. -
Inviare la CSR a una CA. In genere, questa operazione prevede l'apertura del file CSR in un editor di testo e la copia del 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,example.compotrebbe essere un nome alternativo di oggetto (SAN) valido e viceversa. Un visitatore del sito che immesse uno di questi due nomi avrebbe accesso a una connessione priva di errori. Se il modulo web CA lo consente, includi il nome comune nell'elenco di SANs. 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 può inviare i file in più formati, destinati a scopi specifici. Ai fini di questo tutorial, ti consigliamo di usare solo un file di certificato in formato PEM, che in genere, ma non sempre, è contrassegnato dall'estensione
.pemo.crt. 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 un file nella riga di comando come indicato di seguito:
[ec2-user certs]$openssl x509 -incertificate.crt-textVerifica che nel file appaiano queste righe. Non utilizzare file che terminano con
.p7b,.p7co estensioni simili. -
Posizionare il nuovo certificato firmato dalla CA ed eventuali certificati intermedi nella directory
/etc/pki/tls/certs.Nota
Esistono diversi modi per caricare la chiave personalizzata sull' EC2 istanza, 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, 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/certsdirectory, usa i seguenti comandi per verificare che le impostazioni di proprietà, gruppo e autorizzazione dei file corrispondano ai valori predefiniti altamente restrittivi di Amazon Linux (owner=root, group=root, solo per proprietario). read/write[ec2-user certs]$sudo chown root.root custom.crt[ec2-user certs]$sudo chmod 600 custom.crt[ec2-user certs]$ls -al custom.crtI precedenti comandi dovrebbero restituire il seguente risultato:
-rw------- root root custom.crtLe 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). I comandi sono simili ai seguenti:
[ec2-user certs]$sudo chown root.root intermediate.crt[ec2-user certs]$sudo chmod 644 intermediate.crt[ec2-user certs]$ls -al intermediate.crtI precedenti comandi dovrebbero restituire il seguente risultato:
-rw-r--r-- root root intermediate.crt -
Se è stata utilizzata una chiave personalizzata per creare la CSR e il certificato host risultante, rimuovere o rinominare la vecchia chiave dalla directory
/etc/pki/tls/private/e quindi installare la nuova chiave nella stessa posizione.Nota
Esistono diversi modi per caricare la chiave personalizzata sull' EC2 istanza, ma il modo più semplice e informativo è aprire un editor di testo (vi, nano, notepad, ecc.) sia sul computer locale che sull'istanza, quindi copiare e incollare il contenuto del file tra di essi. Sono necessari i privilegi 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/privatedirectory, verifica che le impostazioni di proprietà, gruppo e autorizzazione dei file corrispondano ai valori predefiniti altamente restrittivi di Amazon Linux (owner=root, group=root, solo per il proprietario). read/write I comandi sono simili ai seguenti:[ec2-user private]$sudo chown root.root custom.key[ec2-user private]$sudo chmod 600 custom.key[ec2-user private]$ls -al custom.keyI precedenti comandi dovrebbero restituire il seguente risultato:
-rw------- root root custom.key -
Modificare
/etc/httpd/conf.d/ssl.confper riflettere i nuovi file del certificato e della chiave.-
Indicare il percorso e il nome del file del certificato host firmato dalla CA nella direttiva
SSLCertificateFiledi Apache:SSLCertificateFile /etc/pki/tls/certs/custom.crt -
In caso di ricezione di un file del certificato intermedio (
intermediate.crtin questo esempio), specificare il relativo percorso e nome di file utilizzando la direttivaSSLCACertificateFiledi Apache:SSLCACertificateFile /etc/pki/tls/certs/intermediate.crtNota
Alcuni CAs combinano il certificato host e i certificati intermedi in un unico file, rendendo questa direttiva non necessaria. Consultare le istruzioni fornite dalla CA.
-
Indicare il percorso e il nome del file della chiave privata nella direttiva
SSLCertificateKeyFiledi Apache:SSLCertificateKeyFile /etc/pki/tls/private/custom.key
-
-
Salvare
/etc/httpd/conf.d/ssl.confe riavviare Apache.[ec2-user ~]$sudo service httpd restart -
Testare il server digitando il nome del dominio nella barra dell'URL di un browser con il prefisso
https://. Il browser deve caricare la pagina di test su HTTPS senza errori.
Fase 3: testare e proteggere la configurazione di sicurezza
Dopo aver configurato TLS e averlo esposto al pubblico, devi testarne il livello effettivo di sicurezza. Questa operazione è semplice grazie a servizi online quali Qualys SSL Labs
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.
Nel sito Qualys SSL Labswww.example.com. Dopo circa due minuti riceverai una valutazione del sito (da A a F) e un'analisi dettagliata dei risultati. Benché dalla panoramica emerga una certa solidità della configurazione, il rapporto dettagliato mette in luce diversi potenziali problemi. Esempio:
✗ 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 flussi di dati TLS, è noto per presentare diversi gravi punti deboli.
✗ Sono supportate versioni di TLS meno recenti. La configurazione supporta TLS 1.0 (già obsoleto) e TLS 1.1 (in procinto di diventare obsoleto). A partire dal 2018, è raccomandato soltanto TLS 1.2.
Per correggere la configurazione TLS
-
Aprire il file di configurazione
/etc/httpd/conf.d/ssl.confin un editor di testo e commentare le seguenti righe inserendo il carattere "#" all'inizio:#SSLProtocol all -SSLv3 #SSLProxyProtocol all -SSLv3 -
Aggiungere le seguenti direttive:
SSLProtocol -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 +TLSv1.2 SSLProxyProtocol -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 +TLSv1.2Queste direttive disabilitano in modo esplicito SSL versioni 2 e 3, nonché TLS versioni 1.0 e 1.1. Il server ora non accetta più connessioni crittografate con client che utilizzano crittografie diverse da TLS 1.2. Le descrizioni dettagliate della direttiva indicano più chiaramente al lettore la tipologia di configurazione impostata per il server.
Nota
La disabilitazione di TLS versioni 1.0 e 1.1 consente di bloccare l'accesso al sito da parte di una piccola percentuale di browser Web non aggiornati.
Per modificare l'elenco delle crittografie consentite
-
Aprire il file di configurazione
/etc/httpd/conf.d/ssl.confe cercare la sezione con esempi commentati per la configurazione diSSLCipherSuiteeSSLProxyCipherSuite.#SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5 #SSLProxyCipherSuite HIGH:MEDIUM:!aNULL:!MD5Non apportare alcuna modifica e aggiungere le seguenti direttive alla fine del file:
Nota
Nonostante in questa sede siano riportate su più righe per facilitarne la leggibilità, ciascuna di queste due direttive deve trovarsi su un'unica riga, senza spazi tra i nomi di crittografia.
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:AES:!aNULL:!eNULL:!EXPORT:!DES: !RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA SSLProxyCipherSuite 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:AES:!aNULL:!eNULL:!EXPORT:!DES: !RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHAQuesti tipi di crittografia sono un sottoinsieme di un elenco più esteso di tipi di cifratura supportati in OpenSSL. Sono stati selezionati e ordinati in base ai seguenti criteri:
-
Supporto della proprietà Forward Secrecy
-
Efficacia
-
Velocità
-
Tipi di crittografia specifici prima delle famiglie di crittografia
-
Tipi di crittografia consentiti prima dei tipi di crittografia non consentiti
Le crittografie di maggiore importanza includono ECDHE (acronimo di Elliptic Curve Diffie-Hellman Ephemeral, Diffie-Hellman a curva ellittica) nel proprio nome; ephemeral indica la proprietà Forward Secrecy. Inoltre, ora RC4 è tra i cifrari proibiti verso la fine.
È consigliabile utilizzare un elenco esplicito di crittografie anziché utilizzare le impostazioni di default o direttive concise il cui contenuto non è visibile. L'elenco di crittografie visualizzato nell'esempio è solo uno dei possibili elenchi. Ad esempio, potresti voler ottimizzare l'elenco dal punto di vista della velocità e non della proprietà Forward Secrecy.
Se si prevede la necessità di supportare i client più vecchi, è possibile consentire la suite di crittografia DES- CBC3 -SHA.
Ogni aggiornamento a OpenSSL introduce nuove crittografie e rende obsolete quelle vecchie. Mantieni aggiornata la tua istanza EC2 Amazon Linux, tieni d'occhio gli annunci sulla sicurezza di OpenSSL
e fai attenzione alle segnalazioni di nuovi exploit di sicurezza pubblicate dalla stampa tecnica. -
-
Rimuovi i commenti mediante la rimozione del carattere "#" dalla riga seguente:
#SSLHonorCipherOrder onQuesto comando obbliga il server a preferire crittografie di maggiore importanza, 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.
-
Riavviare Apache. Se testate nuovamente il dominio su Qualys SSL Labs
, dovreste vedere che la vulnerabilità è scomparsa. RC4
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 chiave RSA privata crittografata richiamata
custom.keynella directory predefinita e che la password contenuta siaabcde12345, esegui i seguenti comandi sull' EC2 istanza 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 service httpd restartA questo punto, Apache viene avviato senza visualizzare alcuna richiesta di password.