SSL (označava sloj sigurne utičnice) mrežni je protokol koji čini promet između poslužitelja i klijenta sigurnim šifriranjem. Poslužitelj i klijenti sigurno prenose promet bez rizika da komunikacija bude protumačena od strane trećih strana. Također pomaže klijentu da provjeri identitet web mjesta s kojim komunicira.
U ovom ćemo postu opisati kako postaviti SSL za Nginx. Pokazat ćemo postupak pomoću samopotpisanog certifikata. Samopotpisani certifikat samo šifrira vezu, ali ne potvrđuje identitet vašeg poslužitelja. Stoga ga treba koristiti samo za testiranje okruženja ili za interne LAN usluge. Za proizvodno okruženje bolje je koristiti certifikate potpisane od strane CA (tijelo za izdavanje certifikata).
Preduvjeti
Za ovaj post trebali biste imati sljedeće preduvjete:
- Nginx je već instaliran na vašem računalu
- Blok poslužitelja konfiguriran za vašu domenu
- Korisnik sa sudo privilegijama
Ovdje je obavljen postupak koji je ovdje objašnjen Debian 10 (Buster) mašina.
Korak 1: Izrada samopotpisanog certifikata
Naš prvi korak bit će generiranje samopotpisanog certifikata. U Terminalu izdajte naredbu za generiranje CSR-a (zahtjev za potpisivanje certifikata) i ključa:
$ sudo openssl req -x509 -nodes -days 365 -newkey rsa: 2048 -keyout / etc / ssl / private / selfsigned-nginx.key -out / etc / ssl / certs / selfsigned-nginx.crtOd vas će se zatražiti da navedete neke podatke kao što su naziv vaše države, države, mjesta, uobičajeni naziv (vaše ime domene ili IP adresa) i adresa e-pošte.
U gornjoj naredbi OpenSSL će stvoriti sljedeće dvije datoteke:
- DOP: samopotpisani-nginx.crt u u / etc / ssl / cert / directory
- Ključ: samopotpisani-nginx.ključ u / etc / ssl / privatni direktorij
Sada stvorite dhparam.pem datoteka pomoću naredbe u nastavku:
$ sudo openssl dhparam -out / etc / ssl / certs / dhparam.pem 2048Korak 2: Konfiguriranje Nginxa za upotrebu SSL-a
U prethodnom smo koraku stvorili CSR i ključ. U ovom ćemo koraku konfigurirati Nginx da koristi SSL. Za to ćemo stvoriti isječak konfiguracije i dodati informacije o našim datotekama SSL certifikata i lokacijama ključeva.
Izdajte donju naredbu u Terminalu da biste stvorili novi konfiguracijski isječak samopotpisani.conf datoteka u / etc / nginx / snippets.
$ sudo nano / etc / nginx / snippets / self-signed.konfU datoteku dodajte sljedeće retke:
ssl_certificate / etc / ssl / certs / selfsigned-nginx.crt;ssl_certificate_key / etc / ssl / private / selfsigned-nginx.ključ;
The ssl_certificate postavljeno je na samopotpisani-nginx.crt (datoteka certifikata) dok ssl_certificate_key postavljeno je na samopotpisani-nginx.ključ (datoteka ključa).
Spremite i zatvorite samopotpisani.konf datoteka.
Sada ćemo stvoriti još jednu datoteku isječka ssl-parami.konf i konfigurirajte neke osnovne SSL postavke. U Terminalu izdajte naredbu za uređivanje datoteke ssl-parami.konf datoteka:
$ sudo nano / etc / nginx / snippets / ssl-params.konfU datoteku dodajte sljedeći sadržaj:
ssl_protocols TLSv1.2;ssl_prefer_server_ciphers uključen;
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: ECDHES-RSA-A
ssl_ecdh_curve secp384r1;
ssl_session_timeout 10m;
ssl_session_cache podijeljeno: SSL: 10m;
isključene ssl_session_tickets;
# ssl_stapling on;
# ssl_stapling_verify na;
razrješivač 8.8.8.8 8.8.4.4 valjana = 300s;
razmjerno_vreme isteka 5s;
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Zaštita "1; mode = block";
Kako ne koristimo certifikat potpisan od CA, onemogućili smo SSL klamanje. Ako koristite certifikat potpisan od CA, uklonite komentar iz ssl_stapling ulazak.
Korak 3: Konfiguriranje Nginxa za upotrebu SSL-a
Sada ćemo otvoriti datoteku za konfiguraciju bloka Nginx poslužitelja da napravimo neke konfiguracije. U ovom ćemo koraku pretpostaviti da ste već postavili blok poslužitelja, koji će biti sličan ovom:
poslužiteljslušati 80;
poslušajte [::]: 80;
root / var / www / test.org / html;
indeksni indeks.html indeks.htm indeks.nginx-debian.html;
test_ime_poslužitelja.org www.test.org;
lokacija /
try_files $ uri $ uri / = 404;
Da biste otvorili datoteku za konfiguraciju bloka Nginx poslužitelja, upotrijebite naredbu u nastavku:
$ sudo nano / etc / nginx / sites-available / test.orgSada izmijenite postojeće poslužitelju blok kako bi izgledao ovako:
poslužiteljslušajte 443 ssl;
poslušajte [::]: 443 ssl;
uključuju isječke / samopotpisane.conf;
uključuju isječke / ssl-paramese.conf;
root / var / www / test.org / html;
indeksni indeks.html indeks.htm indeks.nginx-debian.html;
test_ime_poslužitelja.org www.test.org;
U gornje konfiguracije dodali smo i SSL isječke samopotpisani.konf i ssl-parami.konf koje smo ranije konfigurirali.
Zatim dodajte a drugi poslužitelj blok.
poslužiteljslušati 80;
poslušajte [::]: 80;
test_ime_poslužitelja.org www.test.org;
vrati 302 https: // $ server_name $ request_uri;
U gornjoj konfiguraciji, povratak 302 preusmjerava HTTP na HTTPS.
Bilješka: Obavezno zamijenite test.org s vlastitim imenom domene. Sada spremite i zatvorite datoteku.
Korak 4: Omogućite SSL promet kroz vatrozid
Ako je na vašem sustavu omogućen vatrozid, morat ćete omogućiti SSL promet kroz njega. Nginx vam nudi tri različita profila s ufw. Možete ih pogledati pomoću naredbe u nastavku u Terminalu:
$ sudo ufw popis aplikacijaVidjet ćete sljedeći izlaz s tri profila za Nginx promet.
Morat ćete dopustiti profil “Nginx Full” u vatrozidu. Da biste to učinili, upotrijebite donju naredbu:
$ sudo ufw dopustiti 'Nginx Full'Da biste provjerili je li profil dopušten u vatrozidu, upotrijebite donju naredbu:
$ sudo ufw statusKorak 5: Testirajte NGINX konfiguracijsku datoteku
Sada testirajte konfiguracijsku datoteku Nginx pomoću naredbe u nastavku u Terminalu:
$ sudo nginx -tTrebali biste vidjeti donji izlaz.
Sada stvorite simboličku vezu između dostupnih i omogućenih web lokacija:
Zatim ponovo pokrenite uslugu Nginx da biste primijenili promjene konfiguracije. Za to upotrijebite donju naredbu:
$ sudo systemctl ponovno pokrenite nginxKorak 6: Testirajte SSL
Sada da biste testirali SSL, idite na sljedeću adresu:
https: // domena ili IP adresa
Kako smo postavili samopotpisani certifikat, vidjet ćemo upozorenje da veza nije sigurna. Sljedeća se stranica pojavljuje kada se koristi preglednik Mozilla Firefox.
Pritisnite Napredna dugme.
Klik Dodaj iznimku.
Zatim kliknite Potvrdite sigurnosnu iznimku.
Sada ćete vidjeti svoju HTTPS stranicu, ali sa znakom upozorenja (zaključajte se žutim znakom upozorenja) o sigurnosti vašeg web mjesta.
Također, provjerite radi li preusmjeravanje ispravno pristupanjem vašoj domeni ili IP adresi pomoću http.
http: // domena ili IP adresa
Ako vaša web lokacija automatski preusmjerava na HTTPS, to znači da je preusmjeravanje ispravno funkcioniralo. Da biste trajno konfigurirali preusmjeravanje, uredite datoteku za konfiguraciju bloka poslužitelja koristeći donju naredbu u terminalu:
$ sudo nano / etc / nginx / sites-available / test.orgSada promijenite povrat 302 vratiti 301 u datoteku, a zatim je spremite i zatvorite.
Tako možete postaviti SSL za Nginx u sustavu Debian 10. Postavili smo samopotpisanu potvrdu za demonstraciju. Ako ste u proizvodnom okruženju, uvijek potražite CA certifikat.