HTTP

Presmerovanie HTTP na HTTPS

Presmerovanie HTTP na HTTPS
Či už používate certifikáty s vlastným podpisom alebo certifikáty od známych CA, potrebujete spôsob, ako ich integrovať do svojich služieb. Jedným z najbežnejších prípadov použitia servera HTTP, môže to byť webový server alebo server REST API, ale je potrebné ho nakonfigurovať, aby bol bezpečný.

Väčšina webových serverov, ako sú nginx a apache, štandardne počúva na porte 80 a vyžaduje dosť konfigurácie, kým začnú používať certifikáty na šifrovanie prenosu. Napriek tomu, že je webový server nakonfigurovaný, môže stále obsluhovať prenosy HTTP bez problémov. Návštevníci vášho webu teda iba napíšu http: // príklad.com namiesto príkladu https: //.com a celá prevádzka pre nich zostane nezašifrovaná. Aby sme tento problém obišli, musíme nakonfigurovať servery HTTP tak, aby samy presmerovali všetky protokoly HTTP na HTTPS.

Nastavenie, ktoré používam, používa FQDN s verejnou IP, takže namiesto vydania podpisu s vlastným podpisom vydám certifikát SSL z LetsEncrypt. V závislosti od použitého typu webového servera to môžete urobiť viacerými spôsobmi. Ale všeobecný tok je taký:

  1. Získajte podpísaný certifikát od CA. V našom prípade to bude LetsEncrypt
  2. Nakonfigurujte webový server tak, aby používal šifrovací kľúč na šifrovanie odchádzajúcej prevádzky HTTP na porte 443. Toto je predvolený port HTTPS.
  3. Presmerujte všetky prichádzajúce požiadavky na port 80 (čo je nezašifrovaný protokol HTTP) na port 443, čím povolíte šifrované relácie pre všetky prichádzajúce pripojenia.

Ukážme rôzne spôsoby, ako dosiahnuť to, čo chceme. Prvé je najjednoduchšie riešenie, ktoré používa Certbot.

1. Najjednoduchší spôsob - použitie doplnkov Certbot pre Nginx alebo Apache

Ako príklad pre tento server použijem Nginx. Ak používate iný, napríklad Apache alebo HAProxy, navštívte oficiálnu stránku Certbot a vyberte požadovaný operačný systém a webový server. Pre Nginx na Ubuntu 18.04, toto sú príkazy, ktoré by ste potrebovali.

Najskôr aktualizujte svoj repo index.

$ sudo apt-get aktualizácia
$ sudo apt-get nainštalovať softvér-vlastnosti-bežné

Budete musieť pridať požadované úložiská tretích strán, ktoré Ubuntu v predvolenom nastavení nemusí mať povolené.

$ sudo add-apt-repository vesmír
$ sudo add-apt-repository ppa: certbot / certbot
$ sudo apt-get aktualizácia

Potom pomocou nižšie uvedeného príkazu nainštalujte balík certbot s doplnkami Nginx.

$ sudo apt-get nainštalovať certbot python-certbot-nginx

Inštrukcie sa budú líšiť pre rôzne platformy a nainštalujú doplnky pre webový server, ak sú k dispozícii. Dôvodom, prečo nám doplnky uľahčujú život, je to, že môžu automaticky upravovať konfiguračné súbory na webovom serveri a presmerovať tak tiež prenos. Nevýhodou môže byť, že ak prevádzkujete veľmi prispôsobený server pre už existujúce webové stránky, môže tam plugin rozbiť nejaké veci.

Pre nové webové stránky alebo veľmi jednoduché konfigurácie, ako je napríklad reverzný proxy server, plugin funguje prekvapivo dobre. Ak chcete získať certifikáty a presmerovať prenos, jednoducho spustite nasledujúci príkaz a pri prechádzaní balíkom postupujte podľa rôznych interaktívnych možností.

$ sudo certbot --nginx

Výkon:

certbot --nginx
Ukladá sa ladiaci protokol do / var / log / letsencrypt / letsencrypt.log
Vybraté doplnky: Authenticator nginx, Installer nginx
Zadajte e-mailovú adresu (používa sa na urgentné obnovenie a bezpečnostné oznámenia) (Zadajte „c“ t
zrušiť): YOUREMAILHERE @ PRÍKLAD.KOM
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Prečítajte si zmluvné podmienky na adrese
https: // letsencrypt.org / documents / LE-SA-v1.2. novembra - 15-2017.pdf. Ty musíš
súhlasiť s registráciou na serveri ACME na adrese
https: // acme-v02.api.letsencrypt.org / adresár
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A) gree / (C) ancel: A
 

V konfiguračných súboroch sa nenašli žiadne mená. Zadajte svoju doménu
meno (mená) (oddelené čiarkou alebo medzerou) (na zrušenie stlačte „c“): SUBDOMAIN.DOMÉNOVÉ MENO.TLD

 
Vyberte, či chcete presmerovať prenos HTTP na HTTPS, a tým odstrániť prístup HTTP.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Žiadne ďalšie zmeny v konfigurácii webového servera.
2: Redirect - Presmerujte všetky požiadavky na zabezpečený prístup HTTPS. Vyberte pre
nové weby, alebo ak ste si istí, že váš web funguje na HTTPS. Môžete to vrátiť späť
zmeniť úpravou konfigurácie vášho webového servera.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Vyberte príslušné číslo [1-2], potom [zadajte] (pre zrušenie stlačte „c“): 2
Presmerovanie všetkého prenosu na porte 80 na ssl v / etc / nginx / sites-enabled / default
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Gratulujem! Úspešne ste povolili https: // SUBDOMAIN.DOMÉNOVÉ MENO.TLD
 
Svoju konfiguráciu by ste mali vyskúšať na:
https: // www.ssllabs.com / ssltest / analyzovať.html?d = SUBDOMAIN.DOMÉNOVÉ MENO.TLD
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

DÔLEŽITÉ POZNÁMKY:
- Gratulujem! Váš certifikát a reťazec boli uložené na adrese:

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

Váš kľúčový súbor bol uložený na:

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

Ako je uvedené v príklade vyššie, na získanie certifikátu musíte uviesť iba platnú e-mailovú adresu a názov svojej domény. Tento certifikát je súčasťou / etc / letsencrypt / live / SUBDOMAIN.DOMÉNOVÉ MENO.TLD. Posledný adresár bude pomenovaný po vašom FQDN.

Najdôležitejším aspektom je výber možnosti Presmerovanie, ktorá presmeruje všetok prenos HTTP na HTTPS. Ak vás zaujíma, čo sú tieto zmeny, môžete si prezrieť konfiguračné súbory v / etc / nginx / získať jej podstatu.

2. Úpravy súborov Config

Ak chcete svoj server nakonfigurovať na použitie certifikátov ručne. Ak chcete získať certifikáty pomocou nástroja certbot, spustite:

$ sudo certbot certonly

Rovnako ako predtým sú certifikáty uložené v adresári / etc / letsencrypt / live / názov vašejdomény.com /

Teraz môžeme nakonfigurovať Nginx tak, aby používal súbory v tomto adresári. Najskôr sa zbavím konkrétneho rozloženia adresárov Debianu. Predvolený konfiguračný súbor stránky je / etc / nginx / sites-available / default podadresár so symbolickým odkazom na / etc / nginx / site-enabled.

Jednoducho zmažem symbolický odkaz a presuniem konfiguračný súbor do / etc / nginx / conf.d s a .rozšírenie conf iba kvôli tomu, aby boli veci zovšeobecnené a použiteľné aj pre iné distribúcie.

$ sudo rm / etc / sites-enabled / default
$ sudo mv / etc / nginx / sites-available / default / etc / nginx / conf.d / predvolené.konf
$ sudo služba nginx reštart

Tento predvolený konfiguračný súbor upravím, aby som demonštroval, ako je povolený protokol TLS.

Nasleduje obsah vášho predvoleného konfiguračného súboru bez komentovaných častí. Zvýraznené sekcie sú tie, ktoré by ste mali pridať do svojej konfigurácie servera, aby ste povolili TLS. Posledný blok v tomto konfiguračnom súbore zistí, či schéma používa TLS alebo nie. Ak sa TLS nepoužíva, vráti klientovi jednoducho kód presmerovania 301 a zmení adresu URL tak, aby namiesto nej používala https. Takto vám nebudú chýbať používatelia

server
počúvať 80 default_server;
počúvať [::]: 80 default_server;
počúvať 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;
zdieľaná ssl_session_cache: le_nginx_SSL: 1m;
ssl_session_timeout 1440m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers zapnutý;
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;
indexový index.html index.htm index.nginx-debian.html;
názov servera _;
miesto /
try_files $ uri $ uri / = 404;

ak ($ ​​schéma != "https")
návrat 301 https: // $ host $ request_uri;

 

Do tohto konfiguračného súboru je pridaných niekoľko ďalších parametrov. Vrátane parametrov deklarujúcich časový limit, verziu TLS, ktorú by ste mali použiť, a aké šifrovacie šifry bude server používať. To bolo vypožičané z odporúčaných (ale voliteľných) konfigurácií Certbot pre Nginx.

Teraz skontrolujte platnosť konfiguračného súboru a reštartujte server.

$ sudo nginx -t
nginx: konfiguračný súbor / etc / nginx / nginx.syntax conf je v poriadku
nginx: konfiguračný súbor / etc / nginx / nginx.conf test je úspešný
$ sudo služba nginx reštart

Záver

Rovnaký prístup môžete použiť aj pre komplikovanejšie webové aplikácie a služby, ktoré potrebujú protokol HTTPS. Aplikácia Letsencrypt vám umožní vydávať certifikáty pre viacero názvov domén naraz a za svojim webovým serverom nginx môžete pomerne ľahko hostiť viac webových stránok. Ak ste postupovali podľa vyššie uvedeného príkladu, skúste osloviť svoj web pomocou protokolu http (http: // SUBDOMAIN.DOMÉNA.TLD) a budete automaticky presmerovaní na HTTPS.

Pre iné webové servery, napríklad Apache, použite vhodný doplnok certbot alebo si prečítajte ich oficiálnu dokumentáciu.

Hry HD remasterované hry pre Linux, ktoré nikdy predtým nemali vydanie Linuxu
HD remasterované hry pre Linux, ktoré nikdy predtým nemali vydanie Linuxu
Mnoho vývojárov a vydavateľov hier prichádza s remastrom starých hier v rozlíšení HD, aby predĺžili životnosť franšízy. Prosím fanúšikov, ktorí požadu...
Hry Ako používať AutoKey na automatizáciu hier pre Linux
Ako používať AutoKey na automatizáciu hier pre Linux
AutoKey je obslužný program na automatizáciu stolných počítačov pre systémy Linux a X11, programovaný v programoch Python 3, GTK a Qt. Pomocou jeho fu...
Hry Ako zobraziť počítadlo FPS v hrách Linux
Ako zobraziť počítadlo FPS v hrách Linux
Hranie na systéme Linux získalo veľký tlak, keď spoločnosť Valve v roku 2012 oznámila podporu systému Linux pre klienta Steam a ich hry. Od tej doby s...