HTTP

Přesměrování HTTP na HTTPS

Přesměrování HTTP na HTTPS
Ať už používáte certifikáty s vlastním podpisem nebo certifikáty od dobře známé CA, potřebujete způsob, jak to integrovat s vašimi službami. Jedním z nejtypičtějších případů použití serveru HTTP, může to být webový server nebo server REST API, ale je třeba jej nakonfigurovat, aby byl bezpečný.

Většina webových serverů, jako je nginx a apache, naslouchá ve výchozím nastavení na portu 80 a potřebuje docela dost konfigurace, než začnou používat certifikáty k šifrování provozu. I přes jeho nakonfigurování může webový server stále obsluhovat provoz HTTP bez problémů. Návštěvníci vašeho webu tedy pouze zadají http: // příklad.com místo https: // příklad.com a celý provoz pro ně zůstane nezašifrovaný. Abychom tento problém obešli, musíme nakonfigurovat servery HTTP tak, aby samy přesměrovávaly všechny HTTP na HTTPS.

Nastavení, které používám, používá plně kvalifikovaný název domény s veřejnou IP, takže budu vydávat certifikát SSL z LetsEncrypt spíše než vydávat podepsaný sám sebou. V závislosti na typu webového serveru, který používáte, to můžete provést několika způsoby. Ale obecný tok je takový:

  1. Získejte podepsaný certifikát od CA. V našem případě to bude LetsEncrypt
  2. Nakonfigurujte webový server tak, aby k šifrování odchozího přenosu HTTP na portu 443 používal šifrovací klíč. Toto je výchozí port HTTPS.
  3. Přesměrujte všechny příchozí požadavky na portu 80 (což je nezašifrovaný protokol HTTP) na port 443, čímž povolíte šifrované relace pro všechna příchozí připojení.

Ukážeme různé způsoby, jak dosáhnout toho, co chceme. První je nejjednodušší řešení, které používá Certbot.

1. Nejjednodušší způsob - použití pluginů Certbot pro Nginx nebo Apache

Jako příklad pro tento server použiji Nginx. Pokud používáte jiný, jako je Apache nebo HAProxy, stačí navštívit oficiální stránku Certbot a vybrat svůj operační systém a váš webový server podle vašeho výběru. Pro Nginx na Ubuntu 18.04, to jsou příkazy, které byste potřebovali.

Nejprve aktualizujte svůj repo index.

$ sudo apt-get aktualizace
$ sudo apt-get install software-properties-common

Budete muset přidat požadovaná úložiště třetích stran, která Ubuntu nemusí ve výchozím nastavení povolena.

$ sudo add-apt-repository vesmír
$ sudo add-apt-repository ppa: certbot / certbot
$ sudo apt-get aktualizace

Poté pomocí následujícího příkazu nainstalujte balíček certbot s pluginy Nginx.

$ sudo apt-get install certbot python-certbot-nginx

Pokyny se budou lišit pro různé platformy a nainstalují doplňky pro webový server, pokud jsou dostupné. Důvodem, proč nám pluginy usnadňují život, je to, že mohou automaticky upravovat konfigurační soubory na webovém serveru a také přesměrovat provoz. Nevýhodou může být, že pokud používáte velmi přizpůsobený server pro již existující web, pak by tam plugin mohl rozbít nějaké věci.

U nových webů nebo velmi jednoduchých konfigurací, jako je reverzní proxy, plugin funguje překvapivě dobře. Chcete-li získat certifikáty a přesměrovat provoz, jednoduše spusťte níže uvedený příkaz a postupujte podle různých interaktivních možností, jak vás balíček provede.

$ sudo certbot --nginx

Výstup:

certbot --nginx
Ukládání protokolu ladění do / var / log / letsencrypt / letsencrypt.log
Vybrané doplňky: Authenticator nginx, Installer nginx
Zadejte e-mailovou adresu (používá se k naléhavému obnovení a bezpečnostní upozornění) (zadejte „c“ t
zrušit): YOUREMAILHERE @ PŘÍKLAD.KOM
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Přečtěte si podmínky služby na adrese
https: // letsencrypt.org / documents / LE-SA-v1.2. listopadu - 15-2017.pdf. Musíš
souhlasit s registrací na serveru ACME na
https: // acme-v02.api.letsencrypt.org / adresář
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A) gree / (C) ancel: A
 

Ve vašich konfiguračních souborech nebyla nalezena žádná jména. Zadejte svou doménu
jméno (jména) (oddělené čárkou nebo mezerou) (pro zrušení stiskněte „c“): SUBDOMAIN.DOMÉNOVÉ JMÉNO.TLD

 
Vyberte, zda chcete přesměrovat provoz HTTP na HTTPS, čímž odstraníte přístup HTTP.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Neprovádějte žádné další změny v konfiguraci webového serveru.
2: Redirect - Přesměrování všech požadavků na zabezpečený přístup HTTPS. Vyberte pro
nové weby, nebo pokud jste si jisti, že váš web funguje na HTTPS. Můžete to vrátit zpět
změnit úpravou konfigurace vašeho webového serveru.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Vyberte příslušné číslo [1-2] a poté [Enter] (pro zrušení stiskněte „c“): 2
Přesměrování veškerého provozu na portu 80 na SSL v / etc / nginx / sites-enabled / default
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Gratulujeme! Úspěšně jste povolili https: // SUBDOMAIN.DOMÉNOVÉ JMÉNO.TLD
 
Svou konfiguraci byste měli otestovat na:
https: // www.ssllabs.com / ssltest / analyzovat.html?d = SUBDOMAIN.DOMÉNOVÉ JMÉNO.TLD
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

DŮLEŽITÉ POZNÁMKY:
- Gratulujeme! Váš certifikát a řetězec byly uloženy na adrese:

/ etc / letsencrypt / live / SUBDOMAIN.DOMÉNOVÉ JMÉNO.TLD / fullchain.pem

Váš soubor klíče byl uložen na:

/ etc / letsencrypt / live / SUBDOMAIN.DOMÉNOVÉ JMÉNO.TLD / privkey.pem

Jak je uvedeno ve výše uvedeném příkladu, k získání certifikátu musíte uvést pouze platnou e-mailovou adresu a název své domény. Tento certifikát je zaslán / etc / letsencrypt / live / SUBDOMAIN.DOMÉNOVÉ JMÉNO.TLD. Poslední adresář bude pojmenován po vašem FQDN.

Nejdůležitějším aspektem je výběr možnosti Přesměrování a provede práci přesměrování veškerého provozu HTTP na HTTPS. Pokud vás zajímá, o jaké změny jde, můžete si prohlédnout konfigurační soubory / etc / nginx / získat jeho podstatu.

2. Úpravy konfiguračních souborů

Pokud chcete ručně nakonfigurovat server tak, aby používal certifikáty. Chcete-li získat certifikáty pomocí certbot, spusťte:

$ sudo certbot certonly

Stejně jako dříve jsou certifikáty uloženy v adresáři / etc / letsencrypt / live / yourdomainname.com /

Nyní můžeme nakonfigurovat Nginx tak, aby používal soubory v tomto adresáři. Nejprve se zbavím konkrétního rozložení adresářů Debianu. Výchozí konfigurační soubor stránky je / etc / nginx / sites-available / default podadresář se symbolickým odkazem na / etc / nginx / site-enabled.

Prostě odstraním symbolický odkaz a přesunu konfigurační soubor do / etc / nginx / conf.d s a .conf rozšíření, jen aby se věci zobecnily a byly použitelné i pro ostatní distribuce.

$ sudo rm / etc / sites-enabled / default
$ sudo mv / etc / nginx / sites-available / default / etc / nginx / conf.d / výchozí.konf
$ sudo služba nginx restart

Změním tento výchozí konfigurační soubor, abych ukázal, jak je povolen protokol TLS.

Následuje obsah uvnitř vašeho výchozího konfiguračního souboru bez komentářů. Zvýrazněné sekce jsou ty, které byste měli přidat do konfigurace serveru, abyste povolili TLS a poslední blok v tomto konfiguračním souboru zjistí, zda schéma používá TLS nebo ne. Pokud se TLS nepoužívá, jednoduše vrátí klientovi přesměrovací kód 301 a změní adresu URL tak, aby místo toho používala https. Tímto způsobem nepřijdete o uživatele

server
poslouchat 80 default_server;
poslouchat [::]: 80 default_server;
poslouchat 443 SSL;
ssl_certificate / etc / letsencrypt / live / SUBDOMAIN.DOMÉNA.TLS / fullchain.pem;
ssl_certificate_key / etc / letsencrypt / live / SUBDOMAIN.DOMÉNA.TLD / privkey.pem;
sdílená ssl_session_cache: le_nginx_SSL: 1m;
ssl_session_timeout 1440 m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers na;
ssl_ciphers "ECDHE-ECDSA-CHACHA20-POLY1305: ECDHE-RSA-CHACHA20-POLY1305: ECDHE-
ECDSA-AES128-GCM-SHA256: ECDHE-RSA-AES128-GCM-SHA256: ECDHE-ECDSA-AES256
-GCM-SHA384: ECDHE-RSA-AES256-GCM-SHA384: DHE-RSA-AES128-GCM-SHA256: DHE-RSA-AES256
-GCM-SHA384: ECDHE-ECDSA-AES128-SHA256: ECDHE-RSA-AES128-SHA256: ECDHE-ECDSA-AES128
-SHA: ECDHE-RSA-AES256-SHA384: ECDHE-RSA-AES128-SHA: ECDHE-ECDSA-AES256-SHA384: ECDHE
-ECDSA-AES256-SHA: ECDHE-RSA-AES256-SHA: DHE-RSA-AES128-SHA256: DHE-RSA-AES128-SHA: DHE
-RSA-AES256-SHA256: DHE-RSA-AES256-SHA: ECDHE-ECDSA-DES-CBC3-SHA: ECDHE-RSA-DES-CBC3
-SHA: EDH-RSA-DES-CBC3-SHA: AES128-GCM-SHA256: AES256-GCM-SHA384: AES128-SHA256: AES256
-SHA256: AES128-SHA: AES256-SHA: DES-CBC3-SHA:!DSS ";
root / var / www / html;
index index.html index.index htm.nginx-debian.html;
název_serveru _;
místo /
try_files $ uri $ uri / = 404;

if ($ schéma != "https")
vrátit 301 https: // $ host $ request_uri;

 

K tomuto konfiguračnímu souboru je přidáno několik dalších parametrů. Včetně parametrů deklarujících časový limit, verzi TLS, kterou byste měli použít, a jaké šifrovací šifry bude server používat. To bylo vypůjčené z doporučených (ale volitelných) konfigurací Certbot pro Nginx.

Nyní zkontrolujte, zda je konfigurační soubor platný, a restartujte server.

$ sudo nginx -t
nginx: konfigurační soubor / etc / nginx / nginx.syntaxe conf je v pořádku
nginx: konfigurační soubor / etc / nginx / nginx.conf test je úspěšný
$ sudo služba nginx restart

Závěr

Stejný přístup můžete použít u složitějších webových aplikací a služeb, které vyžadují HTTPS. Letsencrypt vám umožní vydávat certifikáty pro více doménových jmen najednou a můžete za svým webovým serverem nginx snadno hostovat více webů. Pokud jste postupovali podle výše uvedeného příkladu, zkuste oslovit svůj web pomocí protokolu http (http: // SUBDOMAIN.DOMÉNA.TLD) a budete automaticky přesměrováni na HTTPS.

U jiných webových serverů, jako je Apache, použijte příslušný plugin certbot nebo nahlédněte do jejich oficiální dokumentace.

Hry Jak používat AutoKey k automatizaci linuxových her
Jak používat AutoKey k automatizaci linuxových her
AutoKey je nástroj pro automatizaci stolních počítačů pro systémy Linux a X11, programovaný v programech Python 3, GTK a Qt. Pomocí jeho funkcí skript...
Hry Jak zobrazit počítadlo FPS v linuxových hrách
Jak zobrazit počítadlo FPS v linuxových hrách
Hraní na Linuxu získalo velký tlak, když společnost Valve v roce 2012 oznámila podporu systému Linux pro klienta Steam a jejich hry. Od té doby se mno...
Hry Jak stáhnout a přehrát Sid Meier's Civilization VI v systému Linux
Jak stáhnout a přehrát Sid Meier's Civilization VI v systému Linux
Úvod do hry Civilization 6 je moderní pojetí klasického konceptu představeného v sérii her Age of Empires. Myšlenka byla docela jednoduchá; začali bys...