Si të sigurojmë Nginx me Let's Encrypt në CentOS 7


Prezantimi

Let's Encrypt është një Autoritet i ri Certifikate (CA) që ofron një mënyrë për të marrë dhe instaluar certifikata falas TLS/SSL, duke mundësuar kështu HTTPS të koduar në serverët e uebit. Ai thjeshton procesin duke ofruar një klient softuer, Certbot, që përpiqet të automatizojë shumicën (nëse jo të gjithë) nga hapat e kërkuar. Aktualisht, i gjithë procesi i marrjes dhe instalimit të një certifikate është plotësisht i automatizuar në serverët e internetit Apache dhe Nginx.

Në këtë tutorial, ne do t'ju tregojmë se si të përdorni klientin certbot Let's Encrypt për të marrë një certifikatë SSL falas dhe ta përdorim atë me Nginx në CentOS 7. Gjithashtu do t'ju tregojmë se si të rinovoni automatikisht certifikatën tuaj SSL .

Parakushtet

Përpara se të ndiqni këtë tutorial, do t'ju duhen disa gjëra.

  • Një server CentOS 7 me një përdorues jo-root që ka privilegje sudo. Mund të mësoni se si të konfiguroni një llogari të tillë përdoruesi duke ndjekur hapat 1-3 në udhëzuesin tonë fillestar të konfigurimit të serverit për CentOS 7.
  • Ju duhet të zotëroni ose kontrolloni emrin e domain-it të regjistruar me të cilin dëshironi të përdorni certifikatën. Nëse nuk keni tashmë një emër domaini të regjistruar, mund ta regjistroni një me një nga regjistruesit e shumtë të emrave të domenit atje (p.sh. Namecheap, GoDaddy, etj.).
  • Një DNS Një rekord që drejton domenin tuaj në adresën IP publike të serverit tuaj. Kjo kërkohet për shkak të mënyrës se si Let's Encrypt vërteton që ju zotëroni domenin për të cilin po lëshon një certifikatë. Për shembull, nëse doni të merrni një certifikatë për example.com, ai domen duhet të zgjidhet në serverin tuaj që procesi i vlefshmërisë të funksionojë. Konfigurimi ynë do të përdorë www.example.com si emra domenesh, kështu që kërkohen të dy regjistrimet DNS.

Pasi t'i keni të gjitha parakushtet jashtë rrugës, le të kalojmë në instalimin e softuerit të klientit Let's Encrypt.

Hapi 1 - Instalimi i klientit Certbot Let's Encrypt

Hapi i parë për të përdorur Let's Encrypt për të marrë një certifikatë SSL është instalimi i softuerit certbot në serverin tuaj. Aktualisht, mënyra më e mirë për ta instaluar këtë është përmes depove EPEL.

Aktivizoni hyrjen në depo EPEL në serverin tuaj duke shtypur:

  1. sudo yum install epel-release

Pasi të jetë aktivizuar depoja, mund të merrni paketën certbot-nginx duke shtypur:

  1. sudo yum install certbot-nginx

Klienti certbot Let's Encrypt është instaluar tani dhe gati për t'u përdorur.

Hapi 2 - Konfigurimi i Nginx

Nëse nuk e keni instaluar ende Nginx, mund ta bëni këtë tani. Depoja EPEL duhet të jetë tashmë e aktivizuar nga seksioni i mëparshëm, kështu që mund të instaloni Nginx duke shtypur:

  1. sudo yum install nginx

Më pas, nisni Nginx duke përdorur systemctl:

  1. sudo systemctl start nginx

Certbot mund të konfigurojë automatikisht SSL për Nginx, por duhet të jetë në gjendje të gjejë bllokun e saktë server në konfigurimin tuaj. Këtë e bën duke kërkuar një direktivë emri_server që përputhet me domenin për të cilin po kërkoni një certifikatë. Nëse po filloni me një instalim të ri Nginx, mund të përditësoni skedarin e paracaktuar të konfigurimit duke përdorur vi ose redaktuesin tuaj të preferuar të tekstit:

  1. sudo vi /etc/nginx/nginx.conf

Gjeni linjën ekzistuese emri_server:

server_name _;

Zëvendësoni nënvizimin _ me emrin e domenit tuaj:

server_name example.com www.example.com;

Ruani skedarin dhe hiqni dorë nga redaktori juaj. Nëse jeni duke përdorur vi, shkruani :x, pastaj y kur të kërkohet, për të ruajtur dhe për t'u larguar. Verifikoni sintaksën e modifikimeve tuaja të konfigurimit me:

  1. sudo nginx -t

Nëse kjo funksionon pa gabime, ringarkoni Nginx për të ngarkuar konfigurimin e ri:

  1. sudo systemctl reload nginx

Certbot tani do të jetë në gjendje të gjejë bllokun e saktë server dhe ta përditësojë atë. Tani do të përditësojmë murin tonë të zjarrit për të lejuar trafikun HTTPS.

Hapi 3 - Përditësimi i Firewall-it

Nëse keni të aktivizuar një mur zjarri, sigurohuni që portat 80 dhe 443 të jenë të hapura për trafikun në hyrje. Nëse nuk po ekzekutoni një mur zjarri, mund të kaloni përpara.

Nëse keni një mur zjarri firewalld që funksionon, mund t'i hapni këto porte duke shkruar:

  1. sudo firewall-cmd --add-service=http
  2. sudo firewall-cmd --add-service=https
  3. sudo firewall-cmd --runtime-to-permanent

Nëse funksionon një mur zjarri iptables, komandat që duhet të ekzekutoni varen shumë nga grupi aktual i rregullave. Për një grup rregullash fillestare, mund të shtoni akses HTTP dhe HTTPS duke shtypur:

  1. sudo iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT
  2. sudo iptables -I INPUT -p tcp -m tcp --dport 443 -j ACCEPT

Tani jemi gati të ekzekutojmë Certbot dhe të marrim certifikatat tona.

Hapi 4 - Marrja e një certifikate

Certbot ofron një sërë mënyrash për të marrë certifikata SSL, përmes shtojcave të ndryshme. Shtojca Nginx do të kujdeset për rikonfigurimin e Nginx dhe ringarkimin e konfigurimit sa herë që është e nevojshme:

  1. sudo certbot --nginx -d example.com -d www.example.com

Ky funksionon certbot me shtojcën --nginx, duke përdorur -d për të specifikuar emrat për të cilët dëshirojmë që certifikata të jetë e vlefshme.

Nëse kjo është hera e parë që ekzekutoni certbot, do t'ju kërkohet të vendosni një adresë emaili dhe të pranoni kushtet e shërbimit. Pasi ta bëjë këtë, certbot do të komunikojë me serverin Let's Encrypt, më pas do të ekzekutojë një sfidë për të verifikuar që ju kontrolloni domenin për të cilin po kërkoni një certifikatë. Konfigurimi do të përditësohet dhe Nginx do të ringarkohet për të marrë cilësimet e reja. certbot do të përfundojë me një mesazh që ju tregon se procesi ishte i suksesshëm dhe ku ruhen certifikatat tuaja:

Output
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/your_domain/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/your_domain/privkey.pem Your certificate will expire on 2022-10-20. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le

Certifikatat tuaja shkarkohen, instalohen dhe ngarkohen. Provoni të ringarkoni faqen tuaj të internetit duke përdorur https:// dhe vini re treguesin e sigurisë së shfletuesit tuaj. Duhet të tregojë se siti është i siguruar siç duhet, zakonisht me një ikonë të bllokimit të gjelbër.

Hapi 5 - Vendosja e rinovimit automatik

Certifikatat e Let's Encrypt janë të vlefshme vetëm për nëntëdhjetë ditë. Kjo është për të inkurajuar përdoruesit të automatizojnë procesin e rinovimit të certifikatës së tyre. Do të na duhet të konfigurojmë një komandë të ekzekutuar rregullisht për të kontrolluar për certifikata të skaduara dhe për t'i rinovuar ato automatikisht.

Për të kryer kontrollin e rinovimit çdo ditë, ne do të përdorim cron, një shërbim standard i sistemit për ekzekutimin e punëve periodike. Ne i tregojmë cron se çfarë të bëjë duke hapur dhe modifikuar një skedar të quajtur crontab.

  1. sudo crontab -e

Redaktori juaj i tekstit do të hapë crontab-in e paracaktuar që është një skedar teksti bosh në këtë pikë. Ngjitni në rreshtin e mëposhtëm, më pas ruajeni dhe mbylleni:

. . .
15 3 * * * /usr/bin/certbot renew --quiet

Pjesa 15 3 * * * e kësaj rreshti do të thotë \ekzekutoni komandën e mëposhtme në orën 3:15 të mëngjesit, çdo ditë. Mund të zgjidhni në çdo kohë.

Komanda rinovoj për Certbot do të kontrollojë të gjitha certifikatat e instaluara në sistem dhe do të përditësojë ato që janë caktuar të skadojnë në më pak se tridhjetë ditë. --qetë i thotë Certbot të mos nxjerrë informacion ose të presë për hyrjen e përdoruesit.

cron tani do ta ekzekutojë këtë komandë çdo ditë. Të gjitha certifikatat e instaluara do të rinovohen automatikisht dhe do të ringarkohen kur të kenë tridhjetë ditë ose më pak përpara se të skadojnë.

Për më shumë informacion se si të krijoni dhe planifikoni punë cron, mund të kontrolloni Si të përdorni Cron për të automatizuar detyrat në një udhëzues VPS.

konkluzioni

Në këtë tutorial ne kemi instaluar klientin Let's Encrypt certbot, kemi shkarkuar certifikata SSL për domenin tonë, kemi konfiguruar Nginx për të përdorur këto certifikata dhe kemi vendosur rinovimin automatik të certifikatës. Nëse keni pyetje të mëtejshme në lidhje me përdorimin e Certbot, dokumentacioni i tyre është një vend i mirë për të filluar.