Android

Secure nginx sa pag-encrypt natin sa debian 10 linux

Как получить и настроить LetsEncrypt SSL сертификат для сайта?

Как получить и настроить LetsEncrypt 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.

Ipinapakita ng tutorial na ito kung paano mag-install ng isang libreng Let’s Encrypt SSL certificate sa Debian 10, Buster 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

Tiyakin na ang mga sumusunod na kinakailangan ay natutugunan bago magpatuloy sa gabay:

  • Naka-log in bilang ugat o gumagamit na may mga pribilehiyo ng sudo.Ang domain kung saan nais mong makuha ang SSL sertipiko ay dapat ituro sa iyong pampublikong server ng IP. Gagamitin namin ang example.com .Nginx na naka-install.

Pag-install ng Certbot

Gagamitin namin ang tool na sertbot upang makakuha at mai-renew ang mga sertipiko.

Ang Certbot ay isang ganap na tampok at madaling gamitin na tool na awtomatiko ang mga gawain para sa pagkuha at pag-update ng I-encrypt ang SSL sertipiko at pag-configure ng mga web server upang magamit ang mga sertipiko.

Ang sertipikong pakete ay kasama sa default na mga repositibong Debian. Patakbuhin ang sumusunod na mga utos upang mag-install ng sertbot:

sudo apt update sudo apt install certbot

Bumubuo ng 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.

Kami ay bubuo ng isang bagong hanay ng mga 2048 bit DH mga parameter upang palakasin ang seguridad:

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

Maaari mo ring baguhin ang laki ng hanggang sa 4096 bits, ngunit 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 domain, gagamitin namin ang plugin ng Webroot. Gumagana ito sa pamamagitan ng paglikha ng isang pansamantalang file para sa pagpapatunay ng hiniling na domain sa ${webroot-path}/.well-known/acme-challenge direktoryo. 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.

/var/lib/letsencrypt namin ang lahat ng mga kahilingan ng HTTP para sa .well-known/acme-challenge sa isang solong direktoryo, /var/lib/letsencrypt .

Patakbuhin ang sumusunod na mga utos upang lumikha ng direktoryo at gawin itong nakasulat para sa Nginx server:

mkdir -p /var/lib/letsencrypt/.well-known chgrp www-data /var/lib/letsencrypt chmod g+s /var/lib/letsencrypt

Upang maiwasan ang pagdoble ng code, gagawa kami ng dalawang snippet na isasama sa lahat ng mga file ng block ng Nginx server.

Buksan ang iyong text editor at lumikha ng unang snippet, letsencrypt.conf :

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

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

Ang pangalawang snippet ssl.conf kasama ang mga ssl.conf inirerekomenda ni Mozilla, nagbibigay-daan sa OCSP Stapling, HTTP Strict Transport Security (HSTS), at nagpapatupad ng kaunting seguridad na nakatuon sa mga header ng

sudo nano /etc/nginx/snippets/ssl.conf /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.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;

Kapag tapos na, buksan ang file ng bloke ng domain server at isama ang letsencrypt.conf snippet tulad ng ipinakita sa ibaba:

sudo nano /etc/nginx/sites-available/example.com /etc/nginx/site-available/example.com

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

Lumikha ng isang simbolikong link sa direktoryo na sites-enabled ng mga sites-enabled upang paganahin ang block ng domain server:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

I-restart ang serbisyo ng Nginx para sa mga pagbabago na magkakabisa:

sudo systemctl restart nginx

Handa ka na ngayong makuha ang mga file ng sertipiko ng SSL sa pamamagitan ng pagpapatakbo ng sumusunod na utos:

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

Kung matagumpay na makuha ang sertipiko ng SSL, ang sumusunod na mensahe ay mai-print sa iyong terminal:

IMPORTANT NOTES: 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-02-22. 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:

I-edit ang block ng domain server at isama ang mga file ng sertipiko ng SSL tulad ng sumusunod:

sudo nano /etc/nginx/sites-available/example.com /etc/nginx/site-available/example.com

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 }

Ang pagsasaayos sa itaas ay nagsasabi kay Nginx na mag-redirect mula sa HTTP hanggang HTTPS at mula sa www hanggang sa di-www na bersyon.

I-restart o i-reload ang serbisyo ng Nginx para magkakabisa ang mga pagbabago:

sudo systemctl restart nginx

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 mag-expire, ang package ng certbot ay lumilikha ng isang cronjob na tumatakbo nang dalawang beses sa isang araw at awtomatikong ina-renew ang anumang sertipiko 30 araw bago ito mag-expire.

Sa pag-update ng serbisyo nginx ay dapat i-reloaded para sa server na mai-load ang sertipiko. Idagdag ang --renew-hook "systemctl reload nginx" sa /etc/cron.d/certbot file kaya ganito ang hitsura:

sudo nano /etc/cron.d/certbot /etc/cron.d/certbot

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"

Subukan ang awtomatikong proseso ng pag-renew, sa pamamagitan ng pagpapatakbo ng utos na ito:

sudo certbot renew --dry-run

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

Konklusyon

Ang pagkakaroon ng isang SSL sertipiko ay dapat na ngayon. Tinitiyak nito ang iyong website, pinatataas ang posisyon ng ranggo ng SERP, at pinapayagan kang paganahin ang HTTP / 2 sa iyong web server.

Sa tutorial na ito, ipinakita namin sa iyo kung paano makabuo at magpapanibago ng mga sertipiko ng SSL gamit ang script ng sertbot. Ipinakita namin sa iyo kung paano i-configure ang Nginx upang magamit ang mga sertipiko.

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

nginx debian hayaan nating i-encrypt ang certbot ssl