SSL (skratka pre secure socket layer) je webový protokol, ktorý zaisťuje bezpečnosť medzi serverom a klientom jeho šifrovaním. Server a klienti bezpečne prenášajú prenos bez rizika interpretácie komunikácie tretími stranami. Pomáha tiež klientovi overiť totožnosť webovej stránky, s ktorou komunikuje.
V tomto príspevku popíšeme, ako nastaviť SSL pre Nginx. Postup predvedieme pomocou certifikátu s vlastným podpisom. Certifikát s vlastným podpisom iba šifruje pripojenie, ale neoveruje identitu vášho servera. Preto by sa mal používať iba na testovacie prostredie alebo na interné služby LAN. Pre produkčné prostredie je lepšie používať certifikáty podpísané CA (certifikačná autorita).
Podmienky
Pre tento príspevok by ste mali mať nasledujúce predpoklady:
- Nginx už je vo vašom počítači nainštalovaný
- Blokovanie servera je nakonfigurované pre vašu doménu
- Užívateľ s oprávnením sudo
Tu vysvetlený postup bol vykonaný dňa Debian 10 (Buster) stroj.
Krok 1: Generovanie certifikátu s vlastným podpisom
Naším prvým krokom bude vygenerovanie certifikátu s vlastným podpisom. Zadajte nasledujúci príkaz v termináli na vygenerovanie CSR (žiadosť o podpis certifikátu) a kľúča:
$ sudo openssl req -x509 -nodes -days 365 -newkey rsa: 2048 -keyout / etc / ssl / private / selfsigned-nginx.key-out / etc / ssl / certs / selfsigned-nginx.crtZobrazí sa výzva na zadanie niektorých informácií, ako je názov vašej krajiny, štát, lokalita, bežné meno (názov vašej domény alebo adresa IP) a e-mailová adresa.
Vo vyššie uvedenom príkaze vytvorí OpenSSL nasledujúce dva súbory:
- CSR: selfsigned-nginx.crt v adresár / etc / ssl / cert /
- Kľúč: selfsigned-nginx.kľúč v adresár / etc / ssl / private
Teraz vytvorte dhparam.pem súbor pomocou nasledujúceho príkazu:
$ sudo openssl dhparam -out / etc / ssl / certs / dhparam.pem 2048Krok 2: Konfigurácia Nginx na používanie SSL
V predchádzajúcom kroku sme vytvorili správu o chemickej bezpečnosti a kľúč. Teraz v tomto kroku nakonfigurujeme Nginx tak, aby používal SSL. Za týmto účelom vytvoríme fragment konfigurácie a pridáme informácie o našich súboroch certifikátov SSL a umiestneniach kľúčov.
Zadajte nasledujúci príkaz v Termináli a vytvorte nový konfiguračný úryvok podpísaný sám sebou.conf súbor v / etc / nginx / snippets.
$ sudo nano / etc / nginx / snippets / self-signed.konfDo súboru pridajte nasledujúce riadky:
ssl_certificate / etc / ssl / certs / selfsigned-nginx.crt;ssl_certificate_key / etc / ssl / private / selfsigned-nginx.kľúč;
The ssl_certifikát je nastavený na selfsigned-nginx.crt (súbor s certifikátom), zatiaľ čo ssl_certificate_key je nastavený na selfsigned-nginx.kľúč (kľúčový súbor).
Uložte a zatvorte podpísaný sám sebou.konf spis.
Teraz vytvoríme ďalší súbor úryvku ssl-params.konf a nakonfigurovať niektoré základné nastavenia protokolu SSL. Zadaním nasledujúceho príkazu v termináli upravte ssl-params.konf spis:
$ sudo nano / etc / nginx / snippets / ssl-params.konfPridajte do súboru nasledujúci obsah:
ssl_protocols TLSv1.2;ssl_prefer_server_ciphers zapnutý;
ssl_dhparam / etc / ssl / certs / dhparam.pem;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512: DHE-RSA-AES256-GCM-SHA512: ECDHE-RSA-AES256-GCM-SHA384: DHE-RSA-AES256-GCM-SHA384: ECDHE-RSA
ssl_ecdh_curve secp384r1;
ssl_session_timeout 10m;
ssl_session_cache zdieľané: SSL: 10m;
ssl_session_tickets off;
# ssl_stapling na;
# ssl_stapling_verify zapnuté;
rezolver 8.8.8.8 8.8.4.4 platné = 300 s;
resolver_timeout 5s;
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode = block";
Pretože nepoužívame certifikát podpísaný CA, deaktivovali sme zošívanie SSL. Ak používate certifikát podpísaný CA, odkomentujte ssl_stapling vstup.
Krok 3: Konfigurácia Nginx na používanie SSL
Teraz otvoríme konfiguračný súbor bloku servera Nginx, aby sme mohli vykonať nejaké konfigurácie. V tomto kroku budeme predpokladať, že ste už nastavili blok servera, ktorý bude podobný tomuto:
serverpočúvať 80;
počúvať [::]: 80;
root / var / www / test.org / html;
indexový index.html index.htm index.nginx-debian.html;
test server_name.org www.test.org;
miesto /
try_files $ uri $ uri / = 404;
Na otvorenie konfiguračného súboru bloku servera Nginx použite nasledujúci príkaz:
$ sudo nano / etc / nginx / sites-available / test.orgTeraz upravte existujúce server blok, aby to vyzeralo takto:
serverpočúvať 443 ssl;
počúvať [::]: 443 ssl;
zahrnúť úryvky / podpísaný sám sebou.conf;
zahrňte úryvky / parametre ssl.conf;
root / var / www / test.org / html;
indexový index.html index.htm index.nginx-debian.html;
test server_name.org www.test.org;
Vo vyššie uvedených konfiguráciách sme pridali aj útržky SSL podpísaný sám sebou.konf a ssl-params.konf ktoré sme nakonfigurovali skôr.
Ďalej pridajte a druhý server blokovať.
serverpočúvať 80;
počúvať [::]: 80;
test server_name.org www.test.org;
návrat 302 https: // $ názov_servera $ request_uri;
Vo vyššie uvedenej konfigurácii, návrat 302 presmeruje HTTP na HTTPS.
Poznámka: Nezabudnite vymeniť test.org s vlastným menom domény. Teraz súbor uložte a zatvorte.
Krok 4: Povolenie prenosu SSL cez bránu firewall
Ak je vo vašom systéme povolená brána firewall, budete musieť cez ňu povoliť prenos SSL. Nginx vám poskytuje tri rôzne profily s ufw. Môžete ich zobraziť pomocou nižšie uvedeného príkazu v Termináli:
$ sudo ufw zoznam aplikáciíUvidíte nasledujúci výstup s tromi profilmi pre prenos Nginx.
Vo firewalle budete musieť povoliť profil „Nginx Full“. Urobíte to pomocou nasledujúceho príkazu:
$ sudo ufw povoliť 'Nginx Full'Ak chcete skontrolovať, či je profil povolený v bráne firewall, použite nasledujúci príkaz:
stav $ sudo ufwKrok 5: Vyskúšajte konfiguračný súbor NGINX
Teraz otestujte konfiguračný súbor Nginx pomocou nižšie uvedeného príkazu v Termináli:
$ sudo nginx -tMali by ste vidieť výstup uvedený nižšie.
Teraz vytvorte symbolické prepojenie medzi dostupnými a povolenými stránkami:
Potom reštartujte službu Nginx, aby sa uplatnili zmeny v konfigurácii. Použite na to nasledujúci príkaz:
$ sudo systemctl reštart nginxKrok 6: Vyskúšajte SSL
Teraz, aby ste otestovali SSL, prejdite na nasledujúcu adresu:
https: // doména alebo IP adresa
Keď sme nastavili certifikát s vlastným podpisom, zobrazí sa nám varovanie, že pripojenie nie je zabezpečené. Pri používaní prehliadača Mozilla Firefox sa zobrazí nasledujúca stránka.
Kliknite na ikonu Pokročilé tlačidlo.
Kliknite Pridať výnimku.
Potom kliknite Potvrďte bezpečnostnú výnimku.
Teraz uvidíte svoju stránku HTTPS, ale s výstražným znamením (zámok so žltým výstražným znamením) o bezpečnosti vášho webu.
Skontrolujte tiež, či presmerovanie funguje správne, a to tak, že sa pomocou protokolu http dostanete k svojej doméne alebo adrese IP.
http: // doména alebo IP adresa
Ak teraz váš web automaticky presmeruje na HTTPS, znamená to, že presmerovanie fungovalo správne. Ak chcete konfigurovať presmerovanie natrvalo, upravte konfiguračný súbor blokovania servera pomocou príkazu nižšie v Termináli:
$ sudo nano / etc / nginx / sites-available / test.orgTeraz zmeňte návratnosť 302 vrátiť sa 301 v súbore a potom ho uložte a zatvorte.
Takto môžete nastaviť SSL pre Nginx v systéme Debian 10. Nastavili sme certifikát s vlastným podpisom na demonštráciu. Ak sa nachádzate v produkčnom prostredí, vždy vyhľadajte certifikát CA.