HTTP

Preusmjeravanje HTTP-a na HTTPS

Preusmjeravanje HTTP-a na HTTPS
Bez obzira koristite li samopotpisane certifikate ili certifikate dobro poznatog CA-a, potreban vam je način da ih integrirate sa svojim uslugama. Jedan od najtipičnijih slučajeva upotrebe HTTP poslužitelja, ovo bi mogao biti web poslužitelj ili REST API poslužitelj, ali ga treba konfigurirati da bude siguran.

Većina web poslužitelja poput nginxa i apachea prema zadanim postavkama slušaju na priključku 80 i treba im poprilično konfiguracije prije nego što počnu koristiti certifikate za šifriranje prometa. Iako je konfiguriran, web poslužitelj i dalje može opsluživati ​​HTTP promet bez problema. Dakle, posjetitelji vaše web stranice samo će upisati http: // example.com umjesto https: // primjer.com i cjelokupni promet za njih će ostati nešifriran. Da bismo zaobišli ovaj problem, moramo konfigurirati HTTP poslužitelje tako da sami preusmjere sav HTTP na HTTPS.

Postavka koju imam koristi FQDN s javnom IP adresom, pa ću izdati SSL certifikat od LetsEncrypt, a ne samopotpisanu. Ovisno o vrsti web poslužitelja koji koristite, to možete učiniti na više načina. Ali opći tok je sljedeći:

  1. Nabavite potpisani certifikat od CA-a. U našem slučaju ovo će biti LetsEncrypt
  2. Konfigurirajte web poslužitelj da koristi ključ za šifriranje za šifriranje odlaznog HTTP prometa na portu 443. Ovo je zadani HTTPS priključak.
  3. Preusmjerite sve dolazne zahtjeve na portu 80 (koji je nešifriran HTTP) na port 443, omogućujući tako šifrirane sesije za sve dolazne veze.

Pokažimo na razne načine kako postići ono što želimo. Prvo je najlakše rješenje koje koristi Certbot.

1. Najlakši način - Korištenje dodataka Certbot za Nginx ili Apache

Koristit ću Nginx kao primjer za ovaj poslužitelj. Ako koristite drugi, poput Apachea ili HAProxyja, onda samo posjetite službenu stranicu Certbota i odaberite svoj OS i odabrani web poslužitelj. Za Nginx na Ubuntu 18.04, ovo su naredbe koje bi vam trebale.

Prvo ažurirajte svoj repo indeks.

$ sudo apt-get ažuriranje
$ sudo apt-get install software-properties-common

Morali biste dodati potrebna spremišta treće strane, koja Ubuntu možda nije omogućio prema zadanim postavkama.

$ sudo add-apt-repozitorij svemir
$ sudo add-apt-repository ppa: certbot / certbot
$ sudo apt-get ažuriranje

A zatim instalirajte paket certbot s dodacima Nginx, koristeći naredbu u nastavku.

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

Upute će se razlikovati za različite platforme i instalirati dodatke za web poslužitelj ako su dostupni. Razlog zašto nam dodaci čine život mnogo lakšim je taj što mogu automatski uređivati ​​konfiguracijske datoteke na web poslužitelju kako bi preusmjeravali i promet. Loša strana može biti ta da ako koristite vrlo prilagođeni poslužitelj za već postojeće web mjesto, dodatak će možda razbiti neke stvari tamo.

Za nove web stranice ili vrlo jednostavne konfiguracije, poput obrnutog proxyja, dodatak djeluje iznenađujuće dobro. Da biste dobili certifikate i preusmjerili promet, jednostavno pokrenite donju naredbu i slijedite razne interaktivne opcije dok vas paket vodi kroz njih.

$ sudo certbot --nginx

Izlaz:

certbot --nginx
Spremanje dnevnika otklanjanja pogrešaka u / var / log / letsencrypt / letsencrypt.zapisnik
Odabrani dodaci: Autentifikator nginx, Instalacijski nginx
Unesite adresu e-pošte (koristi se za hitne obnove i sigurnosne obavijesti) (Unesite 'c' t
otkaži): YOUREMAILHERE @ PRIMJER.COM
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Molimo pročitajte Uvjete pružanja usluge na
https: // letsencrypt.org / documents / LE-SA-v1.2. studenoga-15-2017.pdf. Ti moraš
složite se kako biste se registrirali na ACME poslužitelju na
https: // acme-v02.api.letsencrypt.org / direktorij
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A) gree / (C) predak: A
 
..
U vašim konfiguracijskim datotekama nisu pronađena imena. Unesite svoju domenu
imena (imena odvojena zarezom i / ili razmakom) (Unesite 'c' za poništavanje): PODDOMENA.NAZIV DOMENE.TLD
..
 
Odaberite hoćete li HTTP promet preusmjeriti na HTTPS uklanjanjem HTTP pristupa.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Bez preusmjeravanja - Ne mijenjajte daljnje konfiguracije web poslužitelja.
2: Preusmjeravanje - Neka svi zahtjevi budu preusmjereni kako bi se osigurao HTTPS pristup. Odaberite ovo za
nove web lokacije ili ako ste sigurni da vaša web lokacija radi na HTTPS-u. Možete to poništiti
promijenite uređivanjem konfiguracije vašeg web poslužitelja.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Odaberite odgovarajući broj [1-2], a zatim [unesite] (pritisnite 'c' da biste odustali): 2
Preusmjeravanje cjelokupnog prometa na portu 80 na ssl u / etc / nginx / sites-enabled / default
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Čestitamo! Uspješno ste omogućili https: // SUBDOMAIN.NAZIV DOMENE.TLD
 
Trebali biste testirati svoju konfiguraciju na:
https: // www.ssllabs.com / ssltest / analizirati.html?d = PODDOMENA.NAZIV DOMENE.TLD
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

VAŽNE BILJEŠKE:
- Čestitamo! Vaša potvrda i lanac su spremljeni na:

/ etc / letsencrypt / live / PODDOMENA.NAZIV DOMENE.TLD / puni lanac.pem

Vaša datoteka ključa spremljena je na:

/ etc / letsencrypt / live / PODDOMENA.NAZIV DOMENE.TLD / privkey.pem

Kao što je prikazano u gornjem primjeru, samo morate navesti valjanu adresu e-pošte i ime domene da biste dobili certifikat. Ovaj je certifikat sotran u / etc / letsencrypt / live / PODDOMENA.NAZIV DOMENE.TLD. Posljednji direktorij bit će nazvan po vašem FQDN-u.

Najvažniji aspekt je odabir opcije Preusmjeravanja i on će obaviti posao preusmjeravanja cjelokupnog HTTP prometa na HTTPS. Ako vas zanima koje su to promjene, možete pregledati konfiguracijske datoteke u / etc / nginx / da shvatim suštinu toga.

2. Uređivanje datoteka Config

Ako želite ručno konfigurirati svoj poslužitelj za upotrebu certifikata. Da biste dobili certifikate pomoću certbota, pokrenite:

$ sudo certbot sigurno

Kao i prije, certifikati se spremaju u imenik / etc / letsencrypt / live / yourdomainname.com /

Sada možemo konfigurirati Nginx da koristi datoteke u ovom direktoriju. Prvo, riješit ću se izgleda Debian specifičnog izgleda direktorija. Zadana datoteka konfiguracije web mjesta je / etc / nginx / sites-available / default poddirektorij sa simboličkom vezom na / etc / nginx / site-enabled.

Samo ću izbrisati simboličku poveznicu i premjestiti datoteku za konfiguraciju u / etc / nginx / conf.d s a .conf proširenje samo kako bi stvari bile općenitije i primjenjivije i na druge distribucijske sustave.

$ sudo rm / etc / sites-enabled / default
$ sudo mv / etc / nginx / sites-available / default / etc / nginx / conf.d / zadano.konf
$ sudo service nginx restart

Izmijenit ću ovu zadanu konfiguracijsku datoteku kako bih pokazao kako je omogućen TLS.

Slijedi sadržaj vaše zadane konfiguracijske datoteke, bez komentiranih odjeljaka. Istaknuti odjeljci su onaj koji biste trebali dodati u konfiguraciju poslužitelja kako biste omogućili TLS, a zadnji blok u ovoj konfiguracijskoj datoteci otkriva koristi li shema TLS ili ne. Ako se TLS ne koristi, on jednostavno vraća klijentu kôd za preusmjeravanje 301 i mijenja URL tako da umjesto njega koristi https. Na ovaj način nećete propustiti korisnike

poslužitelj
preslušajte 80 default_server;
preslušajte [::]: 80 zadani_server;
slušajte 443 ssl;
ssl_certificate / etc / letsencrypt / live / SUBDOMAIN.DOMENA.TLS / puni lanac.pem;
ssl_certificate_key / etc / letsencrypt / live / SUBDOMAIN.DOMENA.TLD / privkey.pem;
ssl_session_cache podijeljeno: le_nginx_SSL: 1m;
ssl_session_timeout 1440m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers uključen;
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 ";
korijen / var / www / html;
indeksni indeks.html indeks.htm indeks.nginx-debian.html;
ime_poslužitelja _;
lokacija /
try_files $ uri $ uri / = 404;

if ($ shema != "https")
return 301 https: // $ host $ request_uri;

 

Nekoliko je dodatnih parametara dodano ovoj konfiguracijskoj datoteci. Uključujući parametre koji izjavljuju vremensko ograničenje, TLS verziju koju biste trebali koristiti i koje šifrirne šifre će poslužitelj koristiti. To je posuđeno iz Certbotovih preporučenih (ali neobaveznih) konfiguracija za Nginx.

Sada provjerite je li konfiguracijska datoteka valjana i ponovo pokrenite poslužitelj.

$ sudo nginx -t
nginx: konfiguracijska datoteka / etc / nginx / nginx.conf sintaksa je u redu
nginx: konfiguracijska datoteka / etc / nginx / nginx.conf test je uspješan
$ sudo service nginx restart

Zaključak

Isti pristup možete primijeniti za složenije web-aplikacije i usluge kojima je potreban HTTPS. Letsencrypt neka vam izdaje certifikate za više imena domena odjednom i možete vrlo lako ugostiti više web stranica iza svog nginx web poslužitelja. Ako ste slijedili gornji primjer, pokušajte doći do svog web mjesta pomoću http (http: // SUBDOMAIN.DOMENA.TLD) i automatski ćete biti preusmjereni na HTTPS.

Za ostale web poslužitelje, poput Apachea, upotrijebite odgovarajući dodatak za certbot ili pogledajte njihovu službenu dokumentaciju.

Najbolje aplikacije za mapiranje gamepada za Linux
Ako volite igrati igre na Linuxu s gamepadom umjesto tipičnim sustavom za unos tipkovnice i miša, za vas postoji nekoliko korisnih aplikacija. Mnoge r...
Korisni alati za Linux igrače
Ako volite igrati igre na Linuxu, velika je vjerojatnost da ste možda koristili aplikacije i uslužne programe poput Wine, Lutris i OBS Studio za pobol...
HD Remastered igre za Linux koje ranije nisu imale Linux izdanje
Mnogi programeri i izdavači igara dolaze s HD remasterom starih igara kako bi produžili životni vijek franšize, molimo obožavatelje da zatraže kompati...