GNU/Linux >> Linux Esercitazione >  >> Linux

Come forzare Apache a usare HTTPS

Ciao ragazzi ! In questo tutorial, mostreremo come reindirizzare forzatamente da Apache HTTP a HTTPS

Se sei il proprietario di un sito web o un amministratore di sistema, è probabile che tu abbia a che fare con Apache regolarmente. Una delle attività più comuni che probabilmente eseguirai è il reindirizzamento del traffico HTTP alla versione protetta (HTTPS) del tuo sito web.

A differenza di HTTP, in cui le richieste e le risposte vengono inviate e restituite in chiaro, HTTPS utilizza TLS/SSL per crittografare la comunicazione tra il client e il server.

Lo vedremo in due modi diversi:

io. Utilizzo dell'host virtuale.

ii. Usando .htaccess

Iniziamo

Utilizzo dell'host virtuale

Nella direttiva dell'host virtuale, puoi specificare la radice del documento del sito (la directory che contiene i file del sito Web), creare una politica di sicurezza separata per ciascun sito, utilizzare certificati SSL diversi, configurare il reindirizzamento e molto altro.

Quando un certificato SSL viene installato su un dominio, avrai due direttive host virtuali per quel dominio. Il primo per la versione HTTP del sito sulla porta 80 e l'altro per la versione HTTPS sulla porta 443.

Nelle distribuzioni basate su Red Hat come CentOS e Fedora, i file host virtuali sono archiviati in /etc/httpd/conf.d. Mentre su Debian e suoi derivati ​​come Ubuntu i file sono archiviati in /etc/apache2/sites-available directory.

Per reindirizzare un sito Web a HTTPS, utilizza il Redirect direttiva come mostrato con l'esempio “unixcop.com”

<VirtualHost *:80> 
  ServerName unixcop.com
  ServerAlias www.unixcop.com

  Redirect permanent / https://unixcop.com/
</VirtualHost>

<VirtualHost *:443>
  ServerName unixcop.com
  ServerAlias www.unixcop.com

  Protocols h2 http/1.1

</VirtualHost>

Spiegazione

Diamo una spiegazione al codice sopra

  • VirtualHost *:80 – Il server Apache ascolta le connessioni in entrata sulla porta 80 (HTTP) per il dominio specificato.
  • VirtualHost *:443 – Il server Apache ascolta le connessioni in entrata sulla porta 443 (HTTPS) per il dominio specificato.

Il ServerName e ServerAlias le direttive specificano i nomi di dominio dell'host virtuale. Assicurati di sostituirlo con il tuo nome di dominio. (nel nostro caso unixcop.com)

La riga evidenziata, Redirect permanent / https://example.com/ all'interno dell'host virtuale HTTP, reindirizza il traffico alla versione HTTPS del sito.

In genere si desidera anche reindirizzare la versione HTTPS www del sito a quella non www o viceversa. Ecco un esempio di configurazione:

<VirtualHost *:80> 
  ServerName unixcop.com
  ServerAlias www.unixcop.com

  Redirect permanent / https://unixcop.com/
</VirtualHost>

<VirtualHost *:443>
  ServerName unixcop.com
  ServerAlias www.unixcop.com

  Protocols h2 http/1.1

  <If "%{HTTP_HOST} == 'www.unixcop.com'">
    Redirect permanent / https://unixcop.com/
  </If>

</VirtualHost>

Il codice sopra sta verificando se l'intestazione della richiesta contiene il dominio www e reindirizza alla versione non www.

Ogni volta che apporti modifiche ai file di configurazione è necessario riavviare o ricaricare il servizio Apache affinché le modifiche abbiano effetto

.htaccess è un file di configurazione per directory per il server web Apache. Questo file può essere utilizzato per definire come Apache serve i file dalla directory in cui è posizionato il file e per abilitare/disabilitare funzionalità aggiuntive.

Di solito, il .htaccess il file è posizionato nella directory principale del dominio, ma puoi avere altri .htaccess file nelle sottodirectory.

Questo metodo richiede il mod_rewrite modulo da caricare sul server Apache. Questo modulo è caricato per impostazione predefinita sulla maggior parte dei server. Se possibile, preferisci creare un reindirizzamento nell'host virtuale perché è più semplice e sicuro.

Per reindirizzare tutto il traffico HTTP su HTTPS, apri la radice .htaccess file e aggiungi il codice seguente

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://unixcop.com/$1 [L,R=301]

Spiegazione

  • RewriteEngine On – abilita le funzionalità di riscrittura.
  • RewriteCond %{HTTPS} off – verifica la connessione HTTP e, se la condizione è soddisfatta, viene eseguita la riga successiva.
  • RewriteRule ^(.*)$ https://unixcop.com/$1 [L,R=301] – reindirizza da HTTP a HTTPS con codice di stato 301 (Spostato in modo permanente).

L'esempio seguente ha una condizione aggiuntiva che controlla se la richiesta inizia con www . Usalo per obbligare tutti i visitatori a utilizzare la versione HTTPS non www del sito

RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\.unixcop\.com [NC]
RewriteRule ^(.*)$ https://unixcop.com/$1 [L,R=301]

Durante la modifica di .htaccess file, non è necessario riavviare il server perché Apache legge il file ad ogni richiesta.

Quindi, sai già come forzare Apache a utilizzare HTTPS.

Documentazione Apache


Linux
  1. Come usare BusyBox su Linux

  2. Come uso cron in Linux

  3. Come utilizzare Nginx per reindirizzare

  4. Come usare il comando Su in Linux

  5. Come ottenere Apache per utilizzare PHP 7.0 (non 7.1)?

Come usare il comando PS

Come usare il comando TOP

Come abilitare il reindirizzamento HTTPS forzato in cPanel

Come utilizzare Apache SpamAssassin in cPanel?

Come installare Apache su Ubuntu 20.04

Come forzare HTTPS per il mio dominio?