Android

Secure nginx sa pag-encrypt natin sa sentimo 8

Configuration of NGINX Web Server With TLS Encryption in RHEL 8 | NGINX Configuration With SSL

Configuration of NGINX Web Server With TLS Encryption in RHEL 8 | NGINX Configuration With SSL

Talaan ng mga Nilalaman:

Anonim

Hayaan ang Encrypt ay isang libre, awtomatiko, at bukas na awtoridad ng sertipiko na binuo ng Internet Security Research Group (ISRG) na nagbibigay ng mga libreng sertipiko ng SSL.

Ang mga sertipiko na inisyu ng Let Encrypt ay pinagkakatiwalaan ng lahat ng mga pangunahing browser at wasto para sa 90 araw mula sa petsa ng isyu.

Sa tutorial na ito, bibigyan kami ng isang hakbang sa pamamagitan ng mga tagubilin sa hakbang tungkol sa kung paano mag-install ng isang libreng Let’s Encrypt SSL certificate sa CentOS 8 na tumatakbo ng Nginx bilang isang web server. Ipapakita rin namin kung paano i-configure ang Nginx upang magamit ang SSL certificate at paganahin ang HTTP / 2.

Mga kinakailangan

Bago ka magpatuloy, siguraduhin na nakamit mo ang sumusunod na mga kinakailangan:

  • Mayroon kang isang domain name na tumuturo sa iyong pampublikong IP. Gagamitin namin ang example.com .Nag-install ka ng Nginx sa iyong CentOS server.Ang iyong firewall ay na-configure upang tanggapin ang mga koneksyon sa mga port 80 at 443.

Pag-install ng Certbot

Ang Certbot ay isang libreng tool na linya ng command-line na nagpapagaan sa proseso para sa pagkuha at pag-update ng I-encrypt Natin ang mga sertipiko ng SSL at paganahin ng auto-HTTPS sa iyong server.

Ang sertipikong pakete ay hindi kasama sa karaniwang mga repositori ng CentOS 8, ngunit maaari itong mai-download mula sa website ng nagbebenta.

Patakbuhin ang sumusunod na utos ng wget bilang root o sudo na gumagamit upang i-download ang script ng sertbot sa /usr/local/bin direktoryo:

sudo wget -P /usr/local/bin

Kapag kumpleto ang pag-download, gawin ang file maipapatupad:

sudo chmod +x /usr/local/bin/certbot-auto

Bumubuo ng Malakas na Dh (Diffie-Hellman) Grupo

Ang diffie-Hellman key exchange (DH) ay isang paraan ng ligtas na pagpapalitan ng mga key ng cryptographic sa isang hindi ligtas na channel ng komunikasyon.

Bumuo ng isang bagong hanay ng mga 2048 bit na mga parameter ng DH sa pamamagitan ng pag-type ng sumusunod na utos:

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Pagkuha ng isang I-encrypt na SSL sertipiko

Upang makakuha ng isang SSL sertipiko para sa domain, gagamitin namin ang plugin ng Webroot na gumagana sa pamamagitan ng paglikha ng isang pansamantalang file para sa pagpapatunay ng hiniling na domain sa ${webroot-path}/.well-known/acme-challenge . Ginagawa ng server ng Let's Encrypt ang mga kahilingan ng HTTP sa pansamantalang file upang mapatunayan na ang hiniling na domain ay nagpasiya sa server kung saan tumatakbo ang sertbot.

Upang gawing mas simple ay i-map namin ang lahat ng mga kahilingan sa HTTP para sa .well-known/acme-challenge sa isang solong direktoryo, /var/lib/letsencrypt .

Ang sumusunod na mga utos ay lilikha ng direktoryo at gagawin itong mai-sulat para sa server ng Nginx.

sudo mkdir -p /var/lib/letsencrypt/.well-known sudo chgrp nginx /var/lib/letsencrypt sudo chmod g+s /var/lib/letsencrypt

Upang maiwasan ang pagdoble ng code, lumikha ng sumusunod na dalawang snippet na isasama sa lahat ng mga file ng block ng Nginx server:

sudo mkdir /etc/nginx/snippets /etc/nginx/snippets/letsencrypt.conf

location ^~ /.well-known/acme-challenge/ { allow all; root /var/lib/letsencrypt/; default_type "text/plain"; try_files $uri =404; } /etc/nginx/snippets/ssl.conf

ssl_dhparam /etc/ssl/certs/dhparam.pem; ssl_session_timeout 1d; ssl_session_cache shared:SSL:10m; ssl_session_tickets off; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_prefer_server_ciphers off; ssl_stapling on; ssl_stapling_verify on; resolver 8.8.8.8 8.8.4.4 valid=300s; resolver_timeout 30s; add_header Strict-Transport-Security "max-age=63072000" always; add_header X-Frame-Options SAMEORIGIN; add_header X-Content-Type-Options nosniff;

Kasama sa snippet sa itaas ang mga tsinelas na inirerekomenda ni Mozilla, nagbibigay-daan sa OCSP Stapling, HTTP Strict Transport Security (HSTS), at nagpapatupad ng kaunting seguridad ‑ na nakatuon ang mga header ng

Kapag nilikha ang mga snippet, buksan ang block ng domain server at isama ang snippet ng letsencrypt.conf , tulad ng ipinakita sa ibaba:

/etc/nginx/conf.d/example.com.conf

server { listen 80; server_name example.com www.example.com; include snippets/letsencrypt.conf; }

Reload ang pagsasaayos ng Nginx para sa mga pagbabago na magkakabisa:

sudo systemctl reload nginx

Patakbuhin ang tool na sertbot gamit ang plugin ng webroot upang makuha ang mga file ng sertipiko ng SSL para sa iyong domain:

sudo /usr/local/bin/certbot-auto certonly --agree-tos --email [email protected] --webroot -w /var/lib/letsencrypt/ -d example.com -d www.example.com

Kung ito ang unang pagkakataon na certbot ka ng certbot , mai-install ng tool ang nawawalang mga dependencies.

Kapag matagumpay na nakuha ang sertipiko SSL, i-print ng sertbot ang sumusunod na mensahe:

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

Ngayon na mayroon ka ng mga file ng sertipiko, maaari mong mai-edit ang block ng iyong domain server tulad ng sumusunod:

/etc/nginx/conf.d/example.com.conf

server { listen 80; server_name www.example.com example.com; include snippets/letsencrypt.conf; return 301 https://$host$request_uri; } server { listen 443 ssl http2; server_name www.example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem; include snippets/ssl.conf; include snippets/letsencrypt.conf; return 301 https://example.com$request_uri; } server { listen 443 ssl http2; server_name example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem; include snippets/ssl.conf; include snippets/letsencrypt.conf; #… other code }

Gamit ang pagsasaayos sa itaas ay pinipilit natin ang HTTPS at muling pag-redirect sa bersyon ng www sa hindi www.

Sa wakas, i-reload ang serbisyo ng Nginx para sa mga pagbabago na magkakabisa:

sudo systemctl reload nginx

Ngayon, buksan ang iyong website gamit ang https:// , at mapapansin mo ang isang berdeng icon ng lock.

Pag-update ng Auto I-encrypt ang SSL certificate

Ang mga sertipiko ng Encrypt ay may bisa sa loob ng 90 araw. Upang awtomatikong i-renew ang mga sertipiko bago sila mag-expire, lumikha ng isang cronjob na tatakbo nang dalawang beses sa isang araw at awtomatikong i-renew ang anumang sertipiko 30 araw bago mag-expire.

Gamitin ang crontab utos upang lumikha ng isang bagong cronjob:

sudo crontab -e

Idikit ang sumusunod na linya:

0 */12 * * * root test -x /usr/local/bin/certbot-auto -a \! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && /usr/local/bin/certbot-auto -q renew --renew-hook "systemctl reload nginx"

I-save at isara ang file.

Upang masubukan ang proseso ng pag-renew, maaari mong gamitin ang utos ng sertbot na sinusundan ng --dry-run :

sudo certbot renew --dry-run

Kung walang mga pagkakamali, nangangahulugan ito na matagumpay ang proseso ng pag-renew ng pagsubok.

Konklusyon

Sa tutorial na ito, ipinakita namin sa iyo kung paano gamitin ang kliyente ng I-encrypt, upang mag-download ng SSL sertipiko para sa iyong domain. Nilikha rin namin ang mga snippet ng Nginx upang maiwasan ang pagdoble ng code at na-configure ang Nginx upang magamit ang mga sertipiko. Sa pagtatapos ng tutorial, nag-set up kami ng isang cronjob para sa pag-renew ng awtomatikong sertipiko.

Upang malaman ang higit pa tungkol sa Certbot, bisitahin ang kanilang pahina ng dokumentasyon.

nginx sentimo sabihin i-encrypt ang sertbot ssl