GNU/Linux >> Znalost Linux >  >> Ubuntu

Správně povolte HTTPS na Apache pomocí Let’s Encrypt na Ubuntu

Tento tutoriál vám ukáže, jak správně povolit HTTPS na Apache pomocí Let’s Encrypt na Ubuntu. Google Chrome a Firefox již začaly označovat nešifrované webové stránky pomocí pole pro zadání hesla jako nezabezpečené. Všechny webové stránky HTTP budou nakonec označeny jako nezabezpečené. HTTPS se stane výchozím pro všechny webové stránky. Je to také požadavek, pokud chcete použít protokol HTTP/2 ke zrychlení svého webu.

Jak možná víte, Let’s Encrypt je bezplatná, automatizovaná a otevřená certifikační autorita. Oficiální dokumentace popisuje jednoduché kroky, jak povolit HTTPS pomocí Let’s Encrypt, ale je toho víc. Pokud budete postupovat podle oficiálního dokumentu, získáte skóre A na test SSL Labs. Pokud budete postupovat podle mých kroků, získáte A+ skóre . Pokud jste již dříve nasadili certifikát Let's Encrypt, stále můžete podle tohoto návodu obnovit a nahradit svůj stávající certifikát.

Než vám ukážu kroky k povolení HTTPS pomocí Let’s Encrypt, chci nejprve mluvit o záznamu CAA, bezpečnostní hlavičky a OCSP sešívání . Tyto věci vám mohou pomoci získat A+. Na konci tohoto návodu vám také ukážu, jak se vypořádat se službou CloudFlare CDN.

Poznámka:Tento tutoriál funguje na všech aktuálních verzích Apache a Ubuntu (včetně 16.04, 18.04 a 20.04).

Vytvoření záznamu CAA pro název vaší domény

Certifikační autorita (CAA) je záznam prostředku DNS, který určuje, které certifikační autority (CA) mohou vydávat certifikát pro konkrétní název domény. Od září 2017 jsou všechny CA pověřeny kontrolou záznamů CAA před vydáním certifikátu pro konkrétní název domény. Pokud pro název domény není nalezen záznam CAA, může certifikát pro tento název domény vydat kterýkoli CA. Pokud CA není uvedena ve vašem záznamu CAA, pak tato CA nemůže vydat certifikát pro název vaší domény.

Chcete-li vytvořit záznam CAA, který umožní společnosti Let’s Encrypt vydávat certifikát pro název vaší domény, přidejte do svého serveru DNS nebo správce DNS následující položku.

example.com. IN CAA 0 vydání "letsencrypt.org"

Můžete také použít iodef aby CA nahlásila žádost o vydání škodlivého certifikátu na vaši e-mailovou adresu.

example.com. V CAA 0 iodef "mailto:vaše-e-mailová-adresa"

Formát výše uvedených záznamů je pro soubory zóny. Níže je několik tipů pro vás.

  • K vygenerování záznamu CCA pro název vaší domény můžete použít SSLMate CAA Record Helper.
  • Pokud používáte GoDaddy DNS, přidejte záznam CAA podle tohoto příspěvku.

Ke kontrole záznamu CAA můžete použít následující příkaz dig.

dig example.com CAA

Upozorňujeme, že webové prohlížeče nebudou kontrolovat záznamy CAA.

Bezpečnostní záhlaví

Bezpečnostní hlavičky jsou stejně důležité jako HTTPS, ale jen malé procento webů s podporou HTTPS věnuje bezpečnostním hlavičkám pozornost. Úplná diskuse o hlavičkách zabezpečení je nad rámec tohoto návodu, chci však mluvit o nezabezpečených-požadavcích na upgrade a HSTS záhlaví, protože je můžete snadno aktivovat pomocí Let’s Encrypt a zvýšit tak zabezpečení svého webu.

Upgradujte nezabezpečené požadavky

Jsou chvíle, kdy web povolil HTTPS, ale některé CSS, obrázky nebo JavaScripty jsou stále poskytovány přes HTTP. V tomto případě zelený visací zámek na začátku adresního řádku prohlížeče zmizí. V prohlížeči Google Chrome je nahrazena ikonou informací; Ve Firefoxu je nahrazen šedým visacím zámkem se žlutým trojúhelníkem. Návštěvníkům webu budete chtít co nejvíce zobrazovat zelený visací zámek a snadným způsobem, jak tento problém vyřešit, je povolit nezabezpečené-požadavky na upgrade záhlaví, které přinutí webový prohlížeč používat https:// za každé http:// zdroj.

Chcete-li povolit tuto hlavičku, jednoduše přidejte --uir příznak při vydávání certbot příkaz. Všimněte si, že tato hlavička funguje na zdrojích hostovaných ve vaší vlastní doméně a na zdrojích v doménách třetích stran, které podporují HTTPS. Pokud vaše webová stránka obsahuje zdroje na serverech třetích stran, které nejsou dostupné přes HTTPS, budou tyto zdroje webovými prohlížeči blokovány, ale použití této hlavičky zajistí, že vaše webové stránky budou mít vždy zelený visací zámek.

HSTS (HTTP Strict Transport Security)

Záhlaví HSTS říká webovým prohlížečům, že veškerá komunikace s vaším webem by měla probíhat přes HTTPS. Chrání proti SSL Striping, což je útok na downgrade z HTTPS na HTTP. Chcete-li povolit tuto hlavičku, jednoduše přidejte --hsts příznak při vydávání certbot příkaz.

OCSP sešívání

Když se webový prohlížeč připojí k webu HTTPS, odešle požadavek OCSP (Online Certificate Status Protocol) certifikační autoritě (CA), aby se zeptal na stav odvolání certifikátu SSL webu. To může zpozdit načítání stránky o 1–3 sekundy, podle telemetrických dat Firefoxu.

Pro zlepšení výkonu může vlastník webu povolit sešívání OCSP, v takovém případě webový server sám načítá odpověď OCSP podepsanou CA v pravidelných intervalech a odesílá ji do webového prohlížeče, čímž se eliminuje potřeba, aby webový prohlížeč kontaktoval server OCSP.

Chcete-li povolit sešívání OCSP, jednoduše přidejte --staple-ocsp příznak při vydávání certbot příkaz.

OCSP je nutné sešít

Pokud hacker vytvoří falešný, duplicitní web, vypne svorku OCSP a také zablokuje přístup webového prohlížeče k serveru OCSP, pak webový prohlížeč bude předpokládat, že je v pořádku a přejde na škodlivý web. Chcete-li tento problém vyřešit, můžete na svém webu povolit sešití OCSP, což webovým prohlížečům sdělí, že váš web musí během připojení HTTPS prezentovat odezvu na sešívání OCSP. Takže když se webové prohlížeče připojí k falešné webové stránce, která nemá OCSP svorku, připojení zastaví.

Chcete-li povolit OCSP must staple, přidejte --must-staple příznak při vydávání certbot příkaz.

Instalace klienta Let’s Encrypt Client (Certbot) na Ubuntu

Nyní je čas ušpinit si ruce. Počínaje Ubuntu 16.04 je klient Let’s Encrypt (Certbot) součástí úložiště Ubuntu, takže jej můžete nainstalovat pomocí následujícího příkazu. Python3-certbot-apache je plugin Certbot Apache.

sudo apt install certbot python3-certbot-apache

Chcete-li zkontrolovat číslo verze, spusťte

certbot --version

Ukázkový výstup:

certbot 0.31.0

Pokud chcete používat nejnovější verzi, můžete si nainstalovat Certbot z obchodu Snap.

sudo apt install snapdsudo snap install --classic certbot

Poznámka :Pokud chcete použít verzi Snap, musíte použít úplnou binární cestu:/snap/bin/certbot .

Povolení HTTPS pomocí pluginu Apache

Pokud váš web nepoužívá službu CDN, pak se doporučuje použít plugin Apache k povolení HTTPS na webovém serveru Apache, protože může automaticky získat certifikát SSL/TLS a nakonfigurovat ho za vás. Spusťte na svém serveru Ubuntu následující příkaz.

sudo certbot --apache --agree-tos --redirect --uir --hsts --staple-ocsp --must-staple -d www.example.com,example.com --email [e-mail chráněn] 

Vysvětlení:

  • --apache :Použijte ověřovací a instalační program Apache
  • --agree-tos :Souhlasíte s podmínkami služby Let’s Encrypt
  • --redirect :Automaticky přesměrovat veškerý provoz HTTP na HTTPS
  • --uir :Ke každé odpovědi HTTP přidejte záhlaví „Content-Security-Policy:upgrade-insecure-requests“.
  • --hsts :Ke každé odpovědi HTTP přidejte hlavičku Strict-Transport-Security.
  • --staple-ocsp :Povolí sešívání OCSP.
  • --must-staple :Přidá do certifikátu rozšíření OCSP Must Staple.
  • -d za příznakem následuje seznam názvů domén oddělených čárkou. Můžete přidat až 100 názvů domén.
  • --email :E-mail používaný pro registraci a kontakt pro obnovení.

Budete dotázáni, zda chcete dostávat e-maily od EFF (Electronic Frontier Foundation). Po výběru Y nebo N bude váš certifikát SSL automaticky získán a nakonfigurován, což je uvedeno níže ve zprávě.

Nyní, když navštívíte svůj web, můžete vidět, že HTTP je automaticky přesměrováno na připojení HTTPS. Upozorňujeme, že klient certbot vytváří /etc/apache2/sites-enabled/example.com-le-ssl.conf Virtuální hostitel SSL při konfiguraci SSL pro váš web.

Testování vašeho certifikátu SSL

Přejděte na stránku ssllabs.com a otestujte svůj certifikát SSL a konfiguraci. Jak jsem slíbil, dostanete A+ . Můžete také zkontrolovat, zda název vaší domény povolil záznam CAA, zda váš server povolil HSTS, sešívání OCSP a OCSP musí sešívat.

Přesměrování WWW na jiné než WWW (nebo naopak)

Již jsme povolili přesměrování HTTP na HTTPS, co zbývá udělat, je přesměrovat www na non-www nebo naopak. Pokud používáte WordPress, pak je to velmi snadné. Jednoduše přejděte na WordPress Dashboard> Nastavení> Obecné a nastavte preferovanou verzi (www nebo bez www) v Adresa WordPress a Adresa webu .

Pokud půjdete touto cestou, skončíte s tím, co je známé jako dvojité přesměrování 301. Nejprve server Apache přesměruje HTTP na HTTPS, poté WordPress přesměruje na doménu www nebo bez www.

Někdo může namítnout, že při dvojitém přesměrování 301 můžete ztratit šťávu z odkazů SEO. Pokud se toho obáváte, můžete použít níže uvedenou metodu k tomu, aby všechny verze domény šly přímo do konečného cíle.

Upravte soubor virtuálního hostitele. (Ne virtuální hostitel SSL)

sudo nano /etc/apache2/sites-enabled/example.com.conf

Klient CertBot přidal do souboru následující řádky pro přesměrování HTTP na HTTPS.

RewriteEngine onRewriteCond %{SERVER_NAME} =example.com [NEBO]RewriteCond %{SERVER_NAME} =www.example.comRewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] 

Chcete-li přesměrovat na doménu www nebo non-www, musíte změnit poslední řádek. Nahraďte %{SERVER_NAME} s preferovanou verzí domény, jak je uvedeno níže. (doména www)

RewriteRule ^ https://www.example.com%{REQUEST_URI} [END,NE,R=permanent]

Pokud preferujete doménu bez www, změňte ji na následující.

RewriteRule ^ https://example.com%{REQUEST_URI} [END,NE,R=permanent]

Poté soubor uložte a zavřete. Budeme také muset upravit virtuálního hostitele SSL.

sudo nano /etc/apache2/sites-enabled/example.com-le-ssl.conf

Přidejte následující řádky nad koncovou značku , abyste přesměrovali doménu bez www na doménu www.

RewriteEngine onRewriteCond %{SERVER_NAME} =example.comRewriteRule ^ https://www.example.com%{REQUEST_URI} [END,NE,R=permanent]

Pokud chcete přesměrovat www na doménu bez www, přidejte místo toho následující řádky.

RewriteEngine onRewriteCond %{SERVER_NAME} =www.example.comRewriteRule ^ https://example.com%{REQUEST_URI} [END,NE,R=permanent]

Uložte a zavřete soubor. Znovu načtěte službu Apache, aby se změny projevily.

sudo systemctl reload apache2

Aby to bylo jasnější, níže je snímek obrazovky mého souboru virtuálního hostitele Apache a souboru virtuálního hostitele SSL pro přesměrování bez www na doménu www.

Soubor virtuálního hostitele Apache

Soubor virtuálního hostitele Apache SSL

Pokud používáte WordPress, ujistěte se, že jste nastavili preferovanou verzi domény v Adresa WoredPress a Adresa webu před úpravou souborů virtuálního hostitele Apache. Pokud je nastavení WordPress v rozporu s konfigurací Apache, váš web bude ve smyčce přesměrování.

Jak zakázat TLSv1 a TLSv1.1

TLSv1 a TLSv1.1 již nejsou považovány za bezpečné. Chcete-li je zakázat, upravte konfigurační soubor voleb Let's Encrypt SSL.

sudo nano /etc/letsencrypt/options-ssl-apache.conf

Najděte následující řádek, který standardně deaktivuje SSLv2 a SSLv3.

Všechny protokol SSL -SSLv2 -SSLv3

Změňte jej na následující, chcete-li také zakázat TLSv1.0 a TLSv1.1.

Všechny protokol SSL -SSLv2 -SSLv3 -TLSv1 -TLSv1.1

Uložte a zavřete soubor. Poté restartujte Apache.

sudo systemctl restart apache2

Automatické obnovení certifikátu

Chcete-li automaticky obnovit certifikát Let’s Encrypt, jednoduše upravte soubor crontab uživatele root.

sudo crontab -e

Poté přidejte následující řádek na konec.

@daily certbot renew --quiet &&systemctl reload apache2

--quiet příznak potlačí normální zprávy. Pokud chcete dostávat chybové zprávy, přidejte na začátek souboru crontab následující řádek.

MAILTO=vaše-e-mailová-adresa

Pro předložení nového certifikátu klientům je potřeba znovu načíst Apache.

CloudFlare CDN

První věc, kterou potřebujete vědět, je, že pokud chcete na svůj server nainstalovat certifikát Let’s Encrypt a zároveň používat službu CloudFlare CDN, budete muset na svém webu povolit CloudFlare Universal SSL, což znamená

  • Spojení mezi návštěvníky webu a serverem CloudFlare edge jsou šifrována pomocí certifikátu CloudFlare Universal SSL.
  • Komunikace mezi vaším původním serverem a serverem CloudFlare edge je šifrována pomocí vydaného certifikátu Let’s Encrypt.

Pokud na svůj původní server nainstalujete certifikát Let’s Encrypt, přesměrujete HTTP na HTTPS a vypnete CloudFlare Universal SSL, budou si webové prohlížeče stěžovat, že váš web je v nekonečné smyčce přesměrování, protože CloudFlare přesměrovává HTTPS na HTTP.

Druhá věc, kterou potřebujete vědět, je, že pokud chcete povolit záznam CAA při používání CloudFlare Universal SSL, musíte také vytvořit následující záznam CAA.

example.com. V CAA 0 vydání "comodoca.com"example.com. V CAA 0 vydání "digicert.com"example.com. IN CAA 0 vydání "globalsign.com

Postupujte podle tohoto příspěvku a přidejte záznam CAA pro certifikát CloudFlare Universal SSL.

Jak tedy postupovat při instalaci certifikátu Let’s Encrypt s CloudFlare? Existují dva scénáře.

  1. Už jste si nainstalovali certifikát Let's Encrypt pomocí výše uvedených kroků, nyní chcete povolit službu CloudFlare CDN.
  2. Váš web používá službu CloudFlare CDN, nyní chcete nainstalovat certifikát Let’s Encrypt na svůj původní server.

První scénář

Pokud jste v prvním scénáři, můžete pokračovat a povolit službu CloudFlare CDN a také povolit CloudFlare Universal SSL v CloudFlare Dashboard tím, že přejdete na Crypto> SSL a výběrem Úplné (přísné) . Vaše stránky budou fungovat bez problémů.

Druhý scénář

Pokud používáte CloudFlare CDN a nyní chcete nainstalovat Let's Encrypt na svůj původní server, spusťte následující příkaz pro získání a instalaci certifikátu Let's Encrypt TLS.

sudo certbot --apache --agree-tos --redirect --uir --hsts --staple-ocsp --must-staple -d www.example.com,example.com --email [e-mail chráněn] 

Po získání a instalaci certifikátu na váš server přejděte na řídicí panel Cloudflare a povolte CloudFlare Universal SSL.

Další krok

Doufám, že vám tento návod pomohl povolit HTTPS na virtuálním hostiteli Apache pomocí Let’s Encrypt na Ubuntu . Můžete také chtít nastavit bránu firewall pro webovou aplikaci ModSecurity, aby byla vaše stránka chráněna před hackery.

  • Jak nastavit ModSecurity s Apache na Debian/Ubuntu

Chcete-li urychlit svůj web, můžete povolit protokol HTTP/2 s Apache.

  • Jak povolit protokol HTTP/2 s Apache na Ubuntu

Jako vždy, pokud pro vás byl tento příspěvek užitečný, přihlaste se k odběru našeho bezplatného zpravodaje a získejte další návody.


Ubuntu
  1. Zabezpečte Nginx pomocí Let's Encrypt na Ubuntu 18.04 - Jak na to?

  2. Jak nainstalovat Let’s Encrypt with Apache na CentOS 7

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

  1. Jak zabezpečit Nginx pomocí Lets Encrypt na Ubuntu 20.04 / 18.04

  2. Zabezpečte Apache pomocí Lets Encrypt na Ubuntu 18.04

  3. Jak povolit protokol HTTPS s Apache 2 na Ubuntu 20.04

  1. Zabezpečte Apache pomocí Lets Encrypt na Ubuntu 20.04

  2. Jak nastavit Apache Subversion pomocí šifrování SSL na Ubuntu 18.04

  3. Správně povolte HTTPS na Nginx pomocí Let’s Encrypt na Ubuntu