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.confPř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 apache2Aby 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.confNajděte následující řádek, který standardně deaktivuje SSLv2 a SSLv3.
Všechny protokol SSL -SSLv2 -SSLv3Změňte jej na následující, chcete-li také zakázat TLSv1.0 a TLSv1.1.
Všechny protokol SSL -SSLv2 -SSLv3 -TLSv1 -TLSv1.1Uložte a zavřete soubor. Poté restartujte Apache.
sudo systemctl restart apache2Automatické obnovení certifikátu
Chcete-li automaticky obnovit certifikát Let’s Encrypt, jednoduše upravte soubor crontab uživatele root.
sudo crontab -ePoté 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á-adresaPro 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.
- Už jste si nainstalovali certifikát Let's Encrypt pomocí výše uvedených kroků, nyní chcete povolit službu CloudFlare CDN.
- 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.