SSL (pomeni varno vtičnico) je spletni protokol, ki s šifriranjem zagotavlja promet med strežnikom in odjemalcem. Strežnik in odjemalci varno prenašajo promet brez nevarnosti, da bi ga komunikacija razlagala s strani tretjih oseb. Stranki pomaga tudi pri preverjanju identitete spletnega mesta, s katerim komunicira.
V tem prispevku bomo opisali, kako nastaviti SSL za Nginx. Postopek bomo prikazali s samopodpisanim potrdilom. Samopodpisano potrdilo samo šifrira povezavo, vendar ne potrdi identitete vašega strežnika. Zato ga je treba uporabljati samo za preskušanje okolij ali za notranje storitve LAN. Za produkcijsko okolje je bolje uporabiti potrdila, ki jih je podpisal CA (overitelj).
Predpogoji
Za to objavo bi morali imeti naslednje predpogoje:
- Nginx je že nameščen na vašem računalniku
- Strežniški blok je konfiguriran za vašo domeno
- Uporabnik s privilegiji sudo
Tu razloženi postopek je bil izveden dne Debian 10 (Buster) stroj.
1. korak: Ustvarjanje samopodpisanega potrdila
Naš prvi korak bo ustvariti samopodpisano potrdilo. V terminalu izdajte spodnji ukaz, da ustvarite CSR (zahteva za podpis potrdila) in ključ:
$ sudo openssl req -x509 -nodes -days 365 -newkey rsa: 2048 -keyout / etc / ssl / private / selfsigned-nginx.key -out / etc / ssl / certs / selfsigned-nginx.crtPozvani boste, da navedete nekatere podatke, kot so ime države, država, kraj, splošno ime (vaše ime domene ali naslov IP) in e-poštni naslov.
V zgornjem ukazu bo OpenSSL ustvaril naslednji dve datoteki:
- DOP: selfsigned-nginx.crt v / etc / ssl / cert / directory
- Ključ: selfsigned-nginx.tipko v / etc / ssl / zasebni imenik
Zdaj ustvarite dhparam.datoteka pem z uporabo spodnjega ukaza:
$ sudo openssl dhparam -out / etc / ssl / certs / dhparam.pem 20482. korak: Konfiguriranje Nginxa za uporabo SSL
V prejšnjem koraku smo ustvarili CSR in ključ. V tem koraku bomo Nginx konfigurirali za uporabo SSL. V ta namen bomo ustvarili konfiguracijski delček in dodali informacije o datotekah potrdil SSL in lokacijah ključev.
V terminalu izdajte spodnji ukaz, da ustvarite nov konfiguracijski delček samopodpis.conf v / etc / nginx / snippets.
$ sudo nano / etc / nginx / snippets / self-signed.confV datoteko dodajte naslednje vrstice:
ssl_certificate / etc / ssl / certs / selfsigned-nginx.crt;ssl_certificate_key / etc / ssl / private / selfsigned-nginx.ključ;
The ssl_certificate je nastavljeno na selfsigned-nginx.crt (datoteka potrdila), medtem ko ssl_certificate_key je nastavljeno na selfsigned-nginx.tipko (ključna datoteka).
Shranite in zaprite samopodpis.conf mapa.
Zdaj bomo ustvarili še eno datoteko delčka ssl-params.conf in konfigurirajte nekaj osnovnih nastavitev SSL. V terminalu izdajte spodnji ukaz za urejanje datoteke ssl-params.conf mapa:
$ sudo nano / etc / nginx / snippets / ssl-params.confV datoteko dodajte naslednjo vsebino:
ssl_protocols TLSv1.2;ssl_prefer_server_ciphers vklopljen;
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 v skupni rabi: SSL: 10m;
ssl_session_tickets off;
# ssl_stapling on;
# ssl_stapling_verify on;
reševalec 8.8.8.8 8.8.4.4 veljavne = 300s;
razreševalnik_časov 5 s;
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Zaščita "1; mode = block";
Ker ne uporabljamo potrdila s podpisom CA, smo onemogočili spenjanje SSL. Če uporabljate potrdilo s podpisom CA, počistite polje ssl_stapling vstop.
3. korak: Konfiguriranje Nginxa za uporabo SSL
Zdaj bomo odprli konfiguracijsko datoteko bloka strežnika Nginx, da naredimo nekaj konfiguracij. V tem koraku bomo domnevali, da ste že nastavili strežniški blok, ki bo podoben temu:
strežnikposlušaj 80;
poslušaj [::]: 80;
root / var / www / test.org / html;
indeksni indeks.indeks html.indeks htm.nginx-debian.html;
test_ime_strežnika.org www.preskus.org;
lokacija /
try_files $ uri $ uri / = 404;
Če želite odpreti konfiguracijsko datoteko bloka strežnika Nginx, uporabite spodnji ukaz:
$ sudo nano / etc / nginx / sites-available / test.orgZdaj spremenite obstoječe strežnik blok, da bo videti tako:
strežnikposlušaj 443 ssl;
poslušaj [::]: 443 ssl;
vključujejo delčke / samopodpisane.conf;
vključite odrezke / ssl-params.conf;
root / var / www / test.org / html;
indeksni indeks.indeks html.indeks htm.nginx-debian.html;
test_ime_strežnika.org www.preskus.org;
V zgornje konfiguracije smo dodali tudi odrezke SSL samopodpis.conf in ssl-params.conf ki smo jih že nastavili.
Nato dodajte a drugi strežnik blok.
strežnikposlušaj 80;
poslušaj [::]: 80;
test_ime_strežnika.org www.preskus.org;
vrni 302 https: // $ server_name $ request_uri;
V zgornji konfiguraciji, vrnitev 302 preusmeri HTTP na HTTPS.
Opomba: Prepričajte se, da ste zamenjali test.org z lastnim domenskim imenom. Zdaj datoteko shranite in zaprite.
4. korak: Dovolite promet SSL skozi požarni zid
Če je v vašem sistemu omogočen požarni zid, boste morali dovoliti SSL promet prek njega. Nginx vam ponuja tri različne profile z ufw. Ogledate si jih lahko s spodnjim ukazom v terminalu:
Seznam aplikacij $ sudo ufwVideli boste naslednji izhod s tremi profili za promet Nginx.
V požarnem zidu boste morali dovoliti profil »Nginx Full«. Če želite to narediti, uporabite spodnji ukaz:
$ sudo ufw dovoli 'Nginx Full'Če želite preveriti, ali je profil dovoljen v požarnem zidu, uporabite spodnji ukaz:
$ sudo ufw status5. korak: Preizkusite konfiguracijsko datoteko NGINX
Zdaj preizkusite konfiguracijsko datoteko Nginx z uporabo spodnjega ukaza v terminalu:
$ sudo nginx -tMorali bi videti spodnji izhod.
Zdaj ustvarite simbolično povezavo med spletnimi mesti, ki so na voljo in omogočena:
Nato znova zaženite storitev Nginx, da uveljavite spremembe konfiguracije. Za to uporabite spodnji ukaz:
$ sudo systemctl znova zaženite nginx6. korak: Preizkusite SSL
Zdaj, da preizkusite SSL, pojdite na naslednji naslov:
https: // naslov domene ali IP
Ko smo nastavili samopodpisano potrdilo, bomo videli opozorilo, da povezava ni varna. Naslednja stran se prikaže pri uporabi brskalnika Mozilla Firefox.
Kliknite Napredno gumb.
Kliknite Dodaj izjemo.
Nato kliknite Potrdite varnostno izjemo.
Zdaj boste videli spletno mesto HTTPS, vendar z opozorilnim znakom (zaklepanje z rumenim opozorilnim znakom) o varnosti vašega spletnega mesta.
Preverite tudi, ali preusmeritev deluje pravilno, tako da dostopite do svoje domene ali naslova IP s pomočjo http.
http: // naslov domene ali IP
Če vaše spletno mesto samodejno preusmeri na HTTPS, to pomeni, da je preusmeritev delovala pravilno. Če želite trajno konfigurirati preusmeritev, z uporabo spodnjega ukaza v terminalu uredite konfiguracijsko datoteko strežniškega bloka:
$ sudo nano / etc / nginx / sites-available / test.orgZdaj spremenite donos 302 vrniti 301 v datoteko, nato pa jo shranite in zaprite.
Tako lahko v sistemu Debian 10 nastavite SSL za Nginx. Pripravili smo samopodpisano potrdilo za predstavitev. Če ste v proizvodnem okolju, vedno poiščite potrdilo CA.