1 Stap 1: Skep selfondertekende sertifikaat
2 Stap 2: Stel Nginx HTTP-webbediener op om SSL te gebruik
2.1 Skep 'n konfigurasiestuk vir SSL-sleutel en sertifikaat
2.2 Genereer 'n konfigurasiestuk om SSL-instellings te definieer
2.3 Verander die Nginx-opstelling om na SSL te wysig
3 Stap 3: Pas die instellings van Ufw Firewall aan
4 Stap 4: Herbegin Nginx om die veranderinge toe te pas
5 Stap 5: Toets die SSL-bediener
6 Stap 6: Wys op permanente aansture
8 Kyk na die top 3 Linux-gasheerdienste
SSL (Secure Sockets Layer) en TLS (Transport Layer Security) is webprotokolle wat gebruik word om normale verkeer te beskerm deur dit in 'n geïnkripteer vorm te verpak.
Hierdie tegnologie het 'n sertifikaatstelsel wat private kommunikasie tussen bedieners en kliënte moontlik maak. Dit skep 'n veilige pad vir bedieners om verkeer na kliënte te stuur sonder dat die inligting deur ander partye gemanipuleer word.
In hierdie handleiding neem ons u deur die proses om 'n self-ondertekende SSL / TLS-sertifikaat te skep en dit op Nginx te gebruik. In hierdie geval gebruik ons ​​Ubuntu 18.04-bediener.
'N Geïnstalleerde Nginx-bediener
Laat ons nou in die proses ingaan.
Stap 1: Skep selfondertekende sertifikaat
As dit kom by die implementering van SSL / TLS-sertifikate, werk hulle deur 'n stel openbare sertifikate en 'n privaat sleutel. Die SSL-sertifikaat is 'n openbare dokument wat gedeel word met kliënte wat die inhoud versoek. Aan die ander kant word die SSL-sleutel gebruik in die kodering van boodskappe wat aan kliënte gestuur word en dit moet as 'n geheim op u bediener gehou word.
Voer die onderstaande opdrag uit om 'n sertifikaat en 'n self-ondertekende sleutel met SSL te skep:
$ sudo openssl req -x509 -nodes -dae 365 -newkey rsa: 2048 -keyout /etc/ssl/private/example.com.key -out /etc/ssl/certs/example.com.crt
OpenSSL: Hierdie opdragreëlinstrument om die OpenSSL-sertifikaat, sleutels en ander lêers te genereer en te bestuur.
req: Dit is 'n subopdrag wat aandui dat ons X.509 CSR (sertifikaatondertekeningversoek) -bestuur wil gebruik. X.509 is die openbare sleutelinfrastruktuurstandaard waaraan TLS en SSL voldoen vir sy sertifikaat en sleutelbestuur. In ons geval genereer ons 'n nuwe X.509-sertifikaat, en om hierdie rede gebruik ons ​​req.
-x509: Dit wysig die req-sub-opdrag. Dit lig die nut in dat ons 'n sertifikaat met 'n selfs ondertekenaar skep in plaas van 'n CSR te genereer.
-nodes: Dit beveel OpenSSL om nie die sertifikaat met 'n wagwoordfrase te beveilig nie. 'N Wagwoordfrase verhoed dat Nginx ons lêer lees sodra die bediener begin word.
-dae 365: Dit bepaal die duur van die sertifikaatgeldigheid.
-newkey rsa: 2048: Dit is 'n opdrag wat sê dat ons gelyktydig 'n nuwe sleutel en sertifikaat sal genereer. RSA: 2048 gee die diens opdrag om 'n RSA-sleutel van 2048 stukkies te skep.
-keyout: Dit is 'n reël wat OpenSSL opdrag gee om die geskepde private sleutel te stoor.
-uit: Die lyn gee OpenSSL die opdrag om die geskepde sertifikaat te stoor.
Na bogenoemde opdrag, sal u gevra word om 'n paar vrae oor die sertifikaat wat u wil genereer, te beantwoord.
Lees dit aandagtig deur en gee die regte antwoorde om die proses te voltooi. Die belangrike reël om op hierdie afdeling te let, is die een wat die algemene naam soos U naam of bediener ten volle gekwalifiseerde domeinnaam (FQDN) benodig. Voer in hierdie geval u domeinnaam of die openbare IP-adres in wat met die bediener geassosieer word. .
U moet die afvoer hieronder hê:
Landnaam (2 letterkode) [AU]: VS
StateorProvinceName (volle naam) [Some-State]: New York
Liggingsnaam (bv. Stad) : New YorkCity
Organisasienaam (bv. Onderneming) [Internet Widgits Pty Ltd] :: Voorbeeldonderneming
OrganizationalUnitName (bv. Afdeling) : SSL-eenheid
Algemene naam (bv. ServerFQDNorYOURname) : bediener_IP_adres
E-posadres : [email protected]_domain.com
As u klaar is, sal die twee lêers in die regte subgidse in die / Etc / ssl directory.
U benodig hierdie lêers as verwysing in die Nginx-konfigurasie-instellings. Dit is ook belangrik om 'n sterk DH (Diffie-Hellman) -groep te skep wat noodsaaklik is in die onderhandelinge van die vooruitgeheim met kliënte.
Om dit te doen, voer die opdrag hieronder uit:
Hierdie proses kan 'n rukkie duur, maar sodra dit klaar is, sal u DH (Diffie-Hellman) -groep geberg word by /etc/nginx/dhparam.pem wat gebruik kan word in die Nginx-opstelling.
Stap 2: Stel Nginx HTTP-webbediener op om SSL te gebruik
Aangesien ons reeds die sertifikaat en sleutel en lêers geskep het, kan ons beweeg om Nginx met hierdie instellings op te stel.
Maar voor dit, hier is 'n paar aanpassings wat ons aan ons konfigurasie moet aanbring om gemeenskaplike afdelings in herbruikbare eenhede te plaas.
Skep 'n konfigurasiestuk vir SSL-sleutel en sertifikaat
Begin met die skep van 'n brokkie vir die Nginx-opstelling in die / Etc / nginx / brokkies gids. Ons sal hierdie lêer self onderteken .conf.
Stel nou die ssl_certificate na die gepaardgaande lêer en ssl_certificate_key na die meegaande sleutel. Dit gee u die volgende afvoer:
Genereer 'n konfigurasiestuk om SSL-instellings te definieer
Die volgende stap is om 'n ekstra stuk met sterk SSL-koderingsinstellings te skep. Dit sal ander bykomende funksies in staat stel om u bediener veilig te hou.
In hierdie geval gaan ons 'n generiese naam kies soos hieronder getoon:
Om te verseker dat Nginx SSL veilig ingestel is, gebruik ons ​​die formaat op die webwerf Cipherli.st, wat maklik om te gebruik koderingsriglyne vir gewilde sagteware bevat..
Vir hierdie tutoriaal kopieer ons die instellings wat op hierdie webwerf voorsien word, maar ons verander 'n paar reëls.
In hierdie geval sal ons ons DNS-resolusie insluit vir verskillende stroomversoeke. Ons sal ook die lyn wat verantwoordelik is vir die sekuriteitskop van die vervoerder, uitskakel.
Kopieër die onderstaande besonderhede in u naamstuk ssl-params.conf.
ssl_ciphers ECDHE-RSA-AES256-BKM-SHA512: dhe-RSA-AES256-BKM-SHA512: ECDHE-RSA-AES256-BKM-SHA384: dhe-RSA-AES256-BKM-SHA384: ECDHE-RSA-AES256-SHA384;
ssl_ecdh_curve secp384r1; # Vereis nginx >= 1.1.0
ssl_session_cache gedeel: SSL: 10m;
ssl_session_ticketsoff; # Vereis nginx >= 1.5.9
ssl_staplingon; # Vereis nginx >= 1.3.7
ssl_stapling_verifyon; # Vereis nginx => 1.3.7
resolver8.8.8.88.8.4.4 geldig = 300s;
# Skakel nou streng vervoersekuriteit uit. U kan die volgende ondermyn
# lyn as u die implikasies verstaan.
# add_header Streng-vervoer-sekuriteit "Max-ouderdom = 63072000; includeSubDomains; voorbelading";
Aangesien ons slegs van 'n selfgetekende sertifikaat gebruik maak, is dit nie nodig om SSL-krammetjies in te sluit nie. Nginx sal kramming outomaties deaktiveer en voortgaan om behoorlik te werk.
Verander die Nginx-opstelling om na SSL te wysig
Sodra u klaar is met brokkies, pas nou die Nginx-opstelling aan om SSL toe te laat.
Vir hierdie voorbeeld gebruik ons ​​/etc/nginx/sites-available/example.com. Vervang die lêernaam in u konfigurasie met die een wat u wil gebruik.
Begin egter eers met die rugsteun van die huidige konfigurasielêer:
Maak u lêer oop en pas die toepaslike lyn aan soos hieronder getoon:
U sal 'n uitset soos hierdie sien:
U kan verskillende konfigurasie-stellings ontdek waar gedeeltes soos wortel en indeks kan verskyn as ligging, proxy_pass, of ander konfigurasies. Dit is belangrik om te noem dat dit in orde is om hierdie riglyne te hê, u hoef net die opdatering te doen luister stellings en sluit die SSL-brokkies in.
Gaan voort in u huidige konfigurasielêer en werk die luisterstate op na SSL-bediener op die poort 443 en ssl. Sluit ook die brokkielêers wat in die vorige twee stappe geskep is, in:
luister [::]: 443 ssl;
sluit brokkies / self-signed.conf;
sluit brokkies / ssl-params.conf in;
Plak 'n ander bedienersblok in die blok na die sluithakie (}) van die bostaande blok hierbo konfigurasie lêer:
return302 https: // $ server $ request_uri;
Die bogenoemde konfigurasie luister op poort 80, behalwe om die aansture na HTTP's uit te voer.
Stoor en verlaat die lêer sodra u klaar is.
Stap 3: Pas die instellings van Ufw Firewall aan
As die ufw-firewall aangeskakel is, moet u die stelselinstellings aanpas om verkeer deur SSL moontlik te maak.
Sodra die installasie voltooi is, sal Nginx verskeie profiele by ufw registreer.
U kan hierdie profiele sien deur die opdrag hieronder uit te voer:
$ Sudo ufw-programlys
Voer die opdrag hieronder uit om te sien watter opstelling geaktiveer is:
U moet 'n uitset soos hierdie hê om aan te toon dat u webbediener slegs HTTP-verkeer sal toelaat:
Nginx HTTP TOELAAT enige plek
Nginx HTTP (v6) TOE Enige plek (v6)
Om te verseker dat die HTTPS-verkeer glad vloei, laat die "Nginx Full" -profiel toe en verwyder die Nginx HTTP-oortollige profiel:
$ Sudo ufw laat 'Nginx Full' toe
$ Sudo ufw skrap toelaat 'Nginx HTTP'
Nginx vol LAAT Enige plek
Nginx Vol (v6) LAAT Enige plek (v6)
Stap 4: Herbegin Nginx om die veranderinge toe te pas
Sodra die aanpassings aan die firewall aangebring is, moet u die Nginx-diens herbegin om die wysigings toe te pas.
Maak ook seker dat daar geen foute in u lêers is nie. Om dit te doen, voer die opdrag hieronder uit:
As alles reg werk, moet u die volgende uitvoer kry:
nginx: [waarsku] "ssl_stapling" geïgnoreer, uitreikersertifikaat nie gevind nie
nginx: die konfigurasielêer /etc/nginx/nginx.confsyntax is ok
nginx: konfigurasielêer /etc/nginx/nginx.conftest is suksesvol
Begin nou nginx om die veranderinge toe te pas:
Stap 5: Toets die SSL-bediener
Toets vervolgens of die SSL-kodering werk.
Tik in jou blaaier die voorvoegsel http: // en dan jou domeinnaam:
Aangesien die sertifikaat nie reeds deur 'n vertroude sertifikaatowerheid onderteken is nie, kry u waarskynlik 'n waarskuwing soos hieronder:
U sal 'n waarskuwing sien wat kan verskyn, omdat die SSL-sertifikaat wat vroeër geskep is, nie deur 'n vertroude sertifikaatowerheid onderteken is nie:
Moenie bekommerd wees as u hierdie boodskap sien nie, dit is normaal. Die belangrikste ding is die koderingsfunksie van die sertifikaat. Kies die Gevorderde opsie en die skakel wat volg om na die gasheer voort te gaan.
U sal na u webwerf verwys word. In die blaaierbalk sien u miskien iets wat lyk soos 'n slot met 'n simbool "X" oor dit. Dit dui aan dat die sertifikaat nog nie gevalideer is nie en dat die kodering nog steeds aan die gang is.
Om te kontroleer of HTTP-inhoudherleiding behoorlik werk, tik die volgende in:
As die resultate van die sluitikoon dieselfde is, beteken dit dat die herleiding behoorlik funksioneer.
Stap 6: Wys op permanente aansture
As u seker is dat u slegs geïnkripteer verkeer wil toelaat, is dit belangrik om die Nginx-opstelling te verander om permanente aansture te skep.
Gebruik die opdrag hieronder om die bedienerblokkonfigurasie lêer oop te maak:
Vind terugkeer 302 en vervang dit met terugkeer 301:
return301 https: // $ server $ request_uri;
Bestudeer nou die konfigurasie vir moontlike sintaksfoute met behulp van die opdrag hieronder:
Herbegin Nginx om die wysigings te voltooi:
Daar het jy dit! U het Nginx suksesvol gekonfigureer om SSL / TLS-sertifikaat te gebruik. Dit is 'n veilige manier om versoeke van kliënte toe te laat en te verhoed dat ander partye toegang tot u verkeer kry.