Android

Secure nginx sa pag-encrypt natin sa sentimo 7

How to Install Let's Encrypt SSL on CentOS 7 | Free SSL | CentOS 7 | Let's Encrypt | Step by Step

How to Install Let's Encrypt SSL on CentOS 7 | Free SSL | CentOS 7 | Let's Encrypt | Step by Step

Talaan ng mga Nilalaman:

Anonim

Tayo ay Encrypt ay isang libre at bukas na awtoridad ng sertipiko na binuo ng Internet Security Research Group (ISRG). Ang mga sertipiko na inisyu ng Let Encrypt ay pinagkakatiwalaan ng halos lahat ng mga browser ngayon.

Sa tutorial na ito, bibigyan kami ng isang hakbang sa pamamagitan ng mga tagubilin sa hakbang tungkol sa kung paano ma-secure ang iyong Nginx gamit ang Letry Encrypt gamit ang sertbot na tool sa CentOS 7.

Mga kinakailangan

Tiyaking nakilala mo ang sumusunod na mga kinakailangan bago magpatuloy sa tutorial na ito:

  • Mayroon kang isang domain name na tumuturo sa iyong public server IP. Sa Tutorial na ito gagamitin namin ang example.com .Nagbigay-daan mo ang repositoryo ng EPEL at na-install ang Nginx sa pamamagitan ng pagsunod sa Paano Paano I-install ang Nginx sa CentOS 7.

I-install ang Certbot

Ang Certbot ay madaling gamitin na tool na maaaring awtomatiko ang mga gawain para sa pagkuha at pag-update ng I-encrypt Natin ang mga sertipiko ng SSL at i-configure ang mga web server.

Upang mai-install ang form na sertbot ng package ng EPEL repository run:

sudo yum install certbot

Bumuo 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 Kung gusto mo maaari mong baguhin ang laki ng hanggang sa 4096 bit, ngunit sa kasong iyon, ang henerasyon ay maaaring tumagal ng higit sa 30 minuto depende sa entropy ng system.

Pagkuha ng isang I-encrypt na SSL sertipiko

Upang makakuha ng isang SSL sertipiko para sa aming domain ay 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 namin sa lahat ng aming 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:50m; ssl_session_tickets off; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS'; ssl_prefer_server_ciphers on; 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=15768000; includeSubdomains; preload"; 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 bloke ng server ng domain at isama ang letsencrypt.conf snippet 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

Maaari mo na ngayong patakbuhin ang Certbot gamit ang plugin ng webroot at makuha ang mga file ng sertipiko ng SSL para sa iyong domain sa pamamagitan ng pagpapalabas:

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

Kung matagumpay na nakuha ang sertipiko ng 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 2018-06-11. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. 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:

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

Pag-update ng Auto I-encrypt ang SSL certificate

Ang mga sertipiko ng Encrypt ay may bisa sa loob ng 90 araw. Upang awtomatikong mai-renew ang mga sertipiko bago mag-expire, gagawa kami ng isang cronjob na tatakbo nang dalawang beses sa isang araw at awtomatikong mai-update ang anumang sertipiko 30 araw bago matapos ito.

Patakbuhin ang utos ng crontab upang lumikha ng isang bagong cronjob:

sudo crontab -e

Idikit ang mga sumusunod na linya:

0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && certbot -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, ginamit mo ang client ng Let Encrypt, sertbot upang i-download ang mga sertipiko ng SSL para sa iyong domain. Nilikha mo rin 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 na naka-set up ka ng isang cronjob para sa pag-renew ng awtomatikong sertipiko.

nginx sentimo sabihin i-encrypt ang sertbot ssl

Ang post na ito ay isang bahagi ng I-install ang LEMP Stack sa serye ng CentOS 7.

Iba pang mga post sa seryeng ito:

• Paano Mag-install ng Nginx sa CentOS 7 • Secure Nginx sa Pag-encrypt Natin sa CentOS 7 • I-install ang MariaDB sa CentOS 7 • I-install ang PHP 7 sa CentOS 7 • Paano Mag-set up ng Nginx Server Blocks sa CentOS 7