HTTP

Preusmeritev HTTP v HTTPS

Preusmeritev HTTP v HTTPS
Ne glede na to, ali uporabljate samopodpisana potrdila ali potrdila dobro znanega overitelja potrdil, jih morate vključiti v svoje storitve. Eden najpogostejših primerov uporabe strežnika HTTP je lahko spletni strežnik ali strežnik REST API, vendar ga je treba konfigurirati, da je varen.

Večina spletnih strežnikov, kot sta nginx in apache, privzeto posluša vrata 80 in potrebuje kar nekaj konfiguracije, preden začnejo uporabljati potrdila za šifriranje prometa. Kljub temu, da je konfiguriran, lahko spletni strežnik še vedno brez težav poslužuje promet HTTP. Tako bodo obiskovalci vašega spletnega mesta samo vtipkali http: // example.com namesto https: // primer.com in celoten promet bo zanje ostal nešifriran. Da bi se izognili tej težavi, moramo strežnike HTTP konfigurirati tako, da sami preusmerijo ves HTTP na HTTPS.

Namestitev, ki jo uporabljam, uporablja FQDN z javnim IP-jem, zato bom izdala potrdilo SSL iz LetsEncrypt in ne samopodpisanega. Odvisno od vrste spletnega strežnika, ki ga uporabljate, lahko to storite na več načinov. Toda splošni tok je tak:

  1. Pridobite podpisano potrdilo od overitelja potrdil. V našem primeru bo to LetsEncrypt
  2. Konfigurirajte spletni strežnik za uporabo šifrirnega ključa za šifriranje odhodnega prometa HTTP na vratih 443. To so privzeta vrata HTTPS.
  3. Preusmerite vse dohodne zahteve na vratih 80 (ki so nešifrirana HTTP) na vrata 443, s čimer omogočite šifrirane seje za vse dohodne povezave.

Pokažimo na različne načine, kako doseči, kar želimo. Prva je najlažja rešitev, ki uporablja Certbot.

1. Najlažji način - Uporaba vtičnikov Certbot za Nginx ali Apache

Kot primer za ta strežnik bom uporabil Nginx. Če uporabljate drugega, na primer Apache ali HAProxy, obiščite uradno stran Certbot in izberite svoj operacijski sistem in izbrani spletni strežnik. Za Nginx na Ubuntu 18.04, to so ukazi, ki jih potrebujete.

Najprej posodobite svoj repo indeks.

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

Dodati bi morali potrebna skladišča drugih ponudnikov, ki jih Ubuntu privzeto morda ni omogočil.

$ sudo add-apt-repository vesolje
$ sudo add-apt-repository ppa: certbot / certbot
$ sudo apt-get posodobitev

Nato s spodnjim ukazom namestite paket certbot z vtičniki Nginx.

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

Navodila bodo drugačna za različne platforme in namestite vtičnike za spletni strežnik, če so na voljo. Vtičniki nam zato olajšajo življenje, ker lahko samodejno urejajo konfiguracijske datoteke na spletnem strežniku, da preusmerijo tudi promet. Slaba stran je lahko ta, da če uporabljate zelo prilagojen strežnik za že obstoječe spletno mesto, lahko vtičnik tam zlomi nekaj stvari.

Za nova spletna mesta ali zelo preproste konfiguracije, kot je obratni proxy, vtičnik deluje presenetljivo dobro. Če želite pridobiti potrdila in preusmeriti promet, preprosto zaženite spodnji ukaz in sledite različnim interaktivnim možnostim, ko vas paket vodi skozi njih.

$ sudo certbot --nginx

Izhod:

certbot --nginx
Shranjevanje dnevnika odpravljanja napak v / var / log / letsencrypt / letsencrypt.log
Izbrani vtičniki: Authenticator nginx, Installer nginx
Vnesite e-poštni naslov (uporablja se za nujna obvestila o podaljšanju in varnost) (vnesite 'c' t
prekliči): YOUREMAILHERE @ PRIMER.COM
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Prosimo, preberite Pogoje storitve na
https: // letsencrypt.org / documents / LE-SA-v1.2. november-15-2017.pdf. Moraš
se strinjate, da se lahko registrirate pri strežniku ACME na
https: // acme-v02.api.letsencrypt.org / imenik
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A) gree / (C) ancel: A
 
..
V vaših konfiguracijskih datotekah ni bilo mogoče najti imen. Vnesite svojo domeno
imena (z ločenimi vejicami in / ali presledki) (za preklic vnesite 'c'): PODDOMENA.DOMENA.TLD
..
 
Izberite, ali želite preusmeriti promet HTTP na HTTPS, tako da odstranite dostop HTTP.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Brez preusmeritve - ne spreminjajte konfiguracije spletnega strežnika.
2: Preusmeritev - preusmerite vse zahteve, da zaščitite dostop HTTPS. Izberite to za
novih spletnih mest ali če ste prepričani, da deluje na HTTPS. To lahko razveljavite
spremenite z urejanjem konfiguracije spletnega strežnika.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Izberite ustrezno številko [1-2] in nato [enter] (za preklic pritisnite 'c'): 2
Preusmeritev celotnega prometa na vratih 80 na ssl v / etc / nginx / sites-enabled / default
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Vse čestitke! Uspešno ste omogočili https: // SUBDOMAIN.DOMENA.TLD
 
Preizkusite svojo konfiguracijo na:
https: // www.ssllabs.com / ssltest / analiziraj.html?d = PODDOMENA.DOMENA.TLD
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

POMEMBNA OPOMBA:
- Vse čestitke! Vaše potrdilo in veriga sta bili shranjeni na:

/ etc / letsencrypt / live / PODDOMENA.DOMENA.TLD / polna veriga.pem

Vaša ključna datoteka je bila shranjena na:

/ etc / letsencrypt / live / PODDOMENA.DOMENA.TLD / privkey.pem

Kot je prikazano v zgornjem primeru, morate za pridobitev potrdila navesti samo veljaven e-poštni naslov in ime domene. To potrdilo je potrjeno / etc / letsencrypt / live / PODDOMENA.DOMENA.TLD. Zadnji imenik bo poimenovan po vašem FQDN.

Najpomembnejši vidik je izbira možnosti Preusmeritev in bo preusmeril ves promet HTTP na HTTPS. Če vas zanima, kakšne so te spremembe, lahko pregledate konfiguracijske datoteke v / etc / nginx / da bi dobili bistvo tega.

2. Urejanje datotek Config

Če želite ročno konfigurirati strežnik za uporabo potrdil. Če želite pridobiti potrdila s pomočjo certbota, zaženite:

$ sudo certbot certonly

Kot prej so potrdila shranjena v imeniku / etc / letsencrypt / live / yourdomainname.com /

Zdaj lahko Nginx konfiguriramo za uporabo datotek v tem imeniku. Najprej se bom znebil postavitve imenika, specifične za Debian. Privzeta nastavitvena datoteka spletnega mesta je / etc / nginx / sites-available / default podimenik s simbolično povezavo do / etc / nginx / site-enabled.

Samo izbrisal bom povezavo in konfiguracijsko datoteko premaknil v / etc / nginx / conf.d z a .razširitev conf samo zato, da stvari ostanejo bolj splošne in uporabne tudi za druge distribucijske sisteme.

$ sudo rm / etc / sites-enabled / default
$ sudo mv / etc / nginx / sites-available / default / etc / nginx / conf.d / privzeto.conf
$ sudo service nginx znova zaženite

Spreminjal bom to privzeto konfiguracijsko datoteko, da pokažem, kako je omogočen TLS.

Sledi vsebina vaše privzete konfiguracijske datoteke, brez komentarjev. Označeni odseki so tisti, ki jih morate dodati v konfiguracijo strežnika, da omogočite TLS, zadnji blok v tej konfiguracijski datoteki pa zazna, ali shema uporablja TLS ali ne. Če se TLS ne uporablja, preprosto vrne kodo preusmeritve 301 odjemalcu in spremeni URL, da namesto njega uporabi https. Tako uporabnikov ne boste zamudili

strežnik
poslušaj 80 default_server;
poslušaj [::]: 80 privzeti strežnik;
poslušaj 443 ssl;
ssl_certificate / etc / letsencrypt / live / SUBDOMAIN.DOMEN.TLS / polna veriga.pem;
ssl_certificate_key / etc / letsencrypt / live / SUBDOMAIN.DOMEN.TLD / privkey.pem;
ssl_session_cache v skupni rabi: le_nginx_SSL: 1m;
ssl_session_timeout 1440m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers vklopljen;
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;
indeksni indeks.indeks html.indeks htm.nginx-debian.html;
ime_strežnika _;
lokacija /
try_files $ uri $ uri / = 404;

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

 

V to konfiguracijsko datoteko je dodanih nekaj dodatnih parametrov. Vključno s parametri, ki navajajo časovno omejitev, različico TLS, ki bi jo morali uporabiti, in šifrirne šifre, ki jih bo uporabljal strežnik. To je bilo izposojeno iz Certbotovih (vendar neobveznih) konfiguracij za Nginx.

Zdaj preverite, ali je konfiguracijska datoteka veljavna, in znova zaženite strežnik.

$ sudo nginx -t
nginx: konfiguracijska datoteka / etc / nginx / nginx.sintaksa conf je v redu
nginx: konfiguracijska datoteka / etc / nginx / nginx.test conf je uspešen
$ sudo service nginx znova zaženite

Zaključek

Enak pristop lahko uporabite za bolj zapletene spletne aplikacije in storitve, ki potrebujejo HTTPS. Letsencrypt vam omogoča, da izdate potrdila za več domenskih imen hkrati, in za svojim spletnim strežnikom nginx lahko enostavno gostite več spletnih mest. Če ste sledili zgornjemu primeru, poskusite vzpostaviti stik s svojim spletnim mestom s pomočjo http (http: // SUBDOMAIN.DOMEN.TLD) in samodejno boste preusmerjeni na HTTPS.

Za druge spletne strežnike, kot je Apache, uporabite ustrezen vtičnik certbot ali glejte njihovo uradno dokumentacijo.

Najboljših 5 izdelkov z ergonomsko računalniško miško za Linux
Ali dolgotrajna uporaba računalnika povzroča bolečine v zapestju ali prstih? Ali imate trde sklepe in bi se morali neprestano tresti z rokami? Ali čut...
How to Change Mouse and Touchpad Settings Using Xinput in Linux
Most Linux distributions ship with “libinput” library by default to handle input events on a system. It can process input events on both Wayland and X...
S pomočjo gumba X-Mouse Button Control različno prilagodite gumbe miške za različno programsko opremo
Mogoče potrebujete orodje, ki bi lahko spremenilo nadzor miške z vsako aplikacijo, ki jo uporabljate. V tem primeru lahko preizkusite aplikacijo z ime...