GNU/Linux >> Znalost Linux >  >> Linux

Jak přinutit Apache používat HTTPS

Ahoj kluci ! V tomto tutoriálu si ukážeme, jak násilně přesměrovat Apache HTTP na HTTPS

Pokud jste vlastníkem webu nebo správcem systému, je pravděpodobné, že se s Apache setkáváte pravidelně. Jedním z nejběžnějších úkolů, které budete pravděpodobně provádět, je přesměrování provozu HTTP na zabezpečenou (HTTPS) verzi vašeho webu.

Na rozdíl od HTTP, kde jsou požadavky a odpovědi odesílány a vraceny v prostém textu, HTTPS používá TLS/SSL k šifrování komunikace mezi klientem a serverem.

Uvidíme to dvěma různými způsoby:

i. Pomocí virtuálního hostitele.

ii. Pomocí .htaccess

Začněme

Používání virtuálního hostitele

V direktivě virtuálního hostitele můžete zadat kořen dokumentu webu (adresář, který obsahuje soubory webu), vytvořit samostatnou bezpečnostní politiku pro každý web, používat různé certifikáty SSL, konfigurovat přesměrování a mnoho dalšího.

Když je v doméně nainstalován certifikát SSL, budete mít pro tuto doménu dvě direktivy virtuálního hostitele. První pro HTTP verzi webu na portu 80 a druhý pro HTTPS verzi na portu 443.

V distribucích založených na Red-Hat, jako je CentOS a Fedora, jsou soubory virtuálního hostitele uloženy v /etc/httpd/conf.d. Zatímco v Debianu a jeho derivátech, jako je Ubuntu, jsou soubory uloženy v /etc/apache2/sites-available adresář.

Chcete-li přesměrovat web na HTTPS, použijte Redirect direktiva, jak je znázorněno na příkladu „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>

Vysvětlení

Pojďme si vysvětlit výše uvedený kód

  • VirtualHost *:80 – Server Apache naslouchá příchozím připojením na portu 80 (HTTP) pro zadanou doménu.
  • VirtualHost *:443 – Server Apache naslouchá příchozím připojením na portu 443 (HTTPS) pro zadanou doménu.

ServerName a ServerAlias direktivy určují názvy domén virtuálního hostitele. Ujistěte se, že jste jej nahradili názvem vaší domény. (v našem případě unixcop.com)

Zvýrazněný řádek Redirect permanent / https://example.com/ uvnitř virtuálního hostitele HTTP přesměruje provoz na HTTPS verzi webu.

Obvykle také chcete přesměrovat HTTPS www verzi webu na non-www nebo naopak. Zde je příklad konfigurace:

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

Výše uvedený kód kontroluje, zda hlavička požadavku obsahuje doménu www a přesměrovává na verzi bez www.

Kdykoli provedete změny v konfiguračních souborech, musíte restartovat nebo znovu načíst službu Apache, aby se změny projevily

.htaccess je konfigurační soubor na bázi jednotlivých adresářů pro webový server Apache. Tento soubor lze použít k definování toho, jak Apache obsluhuje soubory z adresáře, kde je soubor umístěn, ak povolení/zakázaní dalších funkcí.

Obvykle .htaccess soubor je umístěn v kořenovém adresáři domény, ale můžete mít jiný .htaccess soubory v podadresářích.

Tato metoda vyžaduje mod_rewrite modul, který se má načíst na server Apache. Tento modul je standardně načten na většině serverů. Pokud je to možné, upřednostňujte vytvoření přesměrování ve virtuálním hostiteli, protože je to jednodušší a bezpečnější.

Chcete-li přesměrovat veškerý provoz HTTP na HTTPS, otevřete kořenový adresář .htaccess soubor a přidejte do něj následující kód

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

Vysvětlení

  • RewriteEngine On – umožňuje přepisovat.
  • RewriteCond %{HTTPS} off – zkontroluje připojení HTTP, a pokud je podmínka splněna, provede se další řádek.
  • RewriteRule ^(.*)$ https://unixcop.com/$1 [L,R=301] – přesměrovat HTTP na HTTPS se stavovým kódem 301 (Trvale přesunuto).

Níže uvedený příklad obsahuje další podmínku, která kontroluje, zda požadavek začíná www . Použijte jej, abyste přinutili všechny návštěvníky používat HTTPS verzi webu bez www

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

Při úpravě .htaccess soubor, nemusíte restartovat server, protože Apache čte soubor při každém požadavku.

Takže už víte, jak přinutit Apache používat HTTPS.

Dokumentace Apache


Linux
  1. Jak používat Su Command v Linuxu

  2. Jak nainstalovat Apache na Ubuntu?

  3. Jak zabezpečit Apache pomocí Lets Encrypt na Ubuntu 18.04

  1. Jak používat BusyBox na Linuxu

  2. Jak používám cron v Linuxu

  3. Jak povolit a vynutit HTTPS s Plesk

  1. Jak používat Nginx k přesměrování

  2. Jak přimět Apache, aby používal PHP 7.0 (ne 7.1)?

  3. jak používat pylint ve vim