GNU/Linux >> Linux Esercitazione >  >> Linux

Considerazioni sull'SSL intermedio compatibile con i certificati Lets Encrypt

Let's Encrypt è un'autorità di certificazione (CA) gratuita, automatizzata e aperta, gestita a beneficio del pubblico. I principi chiave alla base di Let's Encrypt sono:

I principi chiave alla base di Let's Encrypt sono gratuiti:chiunque possieda un nome di dominio può utilizzare Let's Encrypt per ottenere un certificato affidabile a costo zero.

  • Gratuito: Chiunque possieda un nome di dominio può utilizzare Let's Encrypt per ottenere un certificato attendibile a costo zero.
  • Automatico: Il software in esecuzione su un server Web può interagire con Let's Encrypt per ottenere un certificato in modo indolore, configurarlo in modo sicuro per l'uso e occuparsi automaticamente del rinnovo.
  • Sicure: Let's Encrypt fungerà da piattaforma per promuovere le migliori pratiche di sicurezza TLS, sia sul lato CA sia aiutando gli operatori del sito a proteggere adeguatamente i propri server.
  • Trasparente: Tutti i certificati emessi o revocati saranno registrati pubblicamente e saranno consultabili da chiunque.
  • Aperto: Il protocollo di emissione e rinnovo automatico sarà pubblicato come standard aperto che altri potranno adottare.
  • Cooperativa: Proprio come gli stessi protocolli Internet sottostanti, Let's Encrypt è uno sforzo congiunto a beneficio della comunità, al di fuori del controllo di qualsiasi organizzazione.
    (fonte:https://letsencrypt.org/about/)

Introduzione

Innanzitutto, dobbiamo menzionare alcuni lati oscuri del servizio Let's Encrypt. Per quanto grande sia l'idea di un'autorità di certificazione pubblica e aperta, ci porta anche molti problemi. Gli sviluppatori hanno cercato di rendere il sistema per ottenere i certificati il ​​più semplice possibile, ma richiede comunque una maggiore abilità nell'amministrazione del server. Pertanto, molti sviluppatori come quello di ISPConfig (http://www.ispconfig.org/) hanno implementato questa soluzione direttamente nel loro. Ciò consente alle persone un'implementazione e una supervisione più efficaci sull'intero sistema in modo molto più semplice e flessibile.

Complicazione reale

Molte persone hanno deciso di implementare Let's Encrypt nei loro siti di produzione. Trovo che questa sia ancora una pessima idea da fare senza essere molto (ma davvero molto) attenti. Let's Encrypt ti offre libertà ma ti limita anche nell'utilizzo del certificato con crittografia SHA-256 RSA. Il supporto per SHA-256 è migliorato negli ultimi anni. La maggior parte dei browser, delle piattaforme, dei client di posta e dei dispositivi mobili supportano già SHA-256. Tuttavia, alcuni sistemi operativi meno recenti come Windows XP pre-SP3 non supportano la crittografia SHA-256. Molte organizzazioni saranno in grado di convertirsi a SHA-256 senza incorrere in problemi di esperienza utente e molte potrebbero voler incoraggiare gli utenti che utilizzano sistemi meno sicuri e meno recenti a eseguire l'aggiornamento.

In questo tutorial affronteremo questa incompatibilità in un modo semplice, ma comunque sgradevole.

Prerequisiti

  • Apache versione 2.4 e successive
  • OpenSSL versione 1.0.1e e successive
  • Apache mod_rewrite abilitato

L'intera idea

Come accennato in precedenza, su Internet sono ancora presenti dispositivi non compatibili con la firma SHA-256. Quando sono stato costretto a distribuire un SSL su alcuni siti Web, ho dovuto scegliere tra due opzioni:

  1. Utilizzando Let's Encrypt averlo gratis ma non per tutti.
  2. Acquisto di un certificato con firma a 128 bit.

Bene, ancora l'opzione n. 1 era l'unico modo come era stato promesso al cliente molti giorni fa (:Niente più teoria:

Niente più teoria

Spero di aver spiegato il necessario e ora possiamo occuparci dei visualizzatori non supportati del nostro sito Web. Ci sono molte persone che usano macchine Windows XP con SP2 e versioni precedenti (Sì, ce ne sono ancora molte). Quindi dobbiamo filtrare queste persone.

Nel tuo "/etc/apache2/sites-available/your_domain.com.conf" aggiungi quanto segue alla fine del file:

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} !(NT\ 5) [NC]
RewriteRule ^(.*) https:// your_domain.com [R]

RewriteCond ottiene una stringa dall'intestazione http dell'ospite che accede alla tua pagina. Puoi semplicemente controllare il tuo e trovare maggiori informazioni qui: http://www.useragentstring.com/

La condizione che abbiamo utilizzato ci dice qualcosa del tipo "se la stringa non contiene 'NT 5'", quindi RewriteRule esegue/applica la regola di reindirizzamento [R] alla variante https del tuo dominio, NT 5 è una stringa della versione del sistema operativo per i dispositivi Windows XP .Se non utilizzi questo reindirizzamento, gli utenti incompatibili non potranno accedere al tuo sito Web https.

Se non utilizzi questo reindirizzamento, gli utenti incompatibili non saranno in grado di accedere al tuo sito Web https. Devo avvisarti che questa soluzione non è perfetta al 100% come alcuni

Devo avvisarti che questa soluzione non è perfetta al 100% in quanto alcuni ospiti non devono fornirti informazioni pertinenti o reali. Ho lavorato con AWstats per capire quale percentuale di sistemi sconosciuti accedono alla mia pagina ed è di circa l'1,3%, quindi poche richieste. Se vuoi gestire sistemi operativi sconosciuti per assicurarne la compatibilità, puoi aggiungere anche unknown nella condizione (RewriteCond %{HTTP_USER_AGENT} !(NT\ 5|unknown) [NC]).

Awstats

Dopo aver "non reindirizzato" con successo i tuoi visitatori incompatibili (mantenendoli in un mondo insicuro http) puoi concentrarti sul lato https.

Configurazione HTTPS

Ora assumiamo che tu abbia già assegnato il certificato al tuo server web e che lo abbia anche abilitato.
Nel tuo file di configurazione vhost, aggiungi di nuovo quanto segue:

SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA 
SSLProtocol All -SSLv2 -SSLv3
SSLCompression off
SSLHonorCipherOrder On

La CipherSuite usata qui è un po' più lunga del solito. È per una migliore compatibilità. Puoi ottenerne uno da: https://cipherli.st/ o https://mozilla.github.io/server-side-tls/ssl-config-generator/

Devo dire ancora una volta che non otterrai mai una configurazione perfetta per soddisfare la politica di alta sicurezza e anche la compatibilità. Dovresti trovare un compromesso.

Dopo aver utilizzato queste impostazioni, puoi testare la configurazione e la compatibilità del server all'indirizzo: https://www.ssllabs.com/ssltest/index.html

Troverai una lunga lista di dispositivi compatibili e quelli incompatibili, anche qualche informazione in più per indicarti la tua soluzione “perfetta”.


Linux
  1. Iniziare con Lets Encrypt SSL Certificates su Ubuntu

  2. Come gestire i certificati Lets Encrypt SSL/TLS con certbot

  3. Iniziare con acme.sh Lets Encrypt SSL client

  4. Protezione di ISPConfig 3.1 con un certificato SSL gratuito Lets Encrypt

  5. Proteggi Apache2 con Let's Encrypt SSL su Debian 10/11

Come configurare Let's Encrypt SSL con Apache su Fedora

Come rinnovare automaticamente Let's Encrypt certificati SSL

Come installare Let's Encrypt SSL con Lighttpd su CentOS 7

Come installare Nginx con Let's Encrypt SSL su Fedora 35

Come installare Let's Encrypt SSL su Ubuntu con Apache

Come utilizzare Let's Encrypt con Cloudflare