Selle asemel, et osta oma veebisaidile ja muudele rakendustele SSL sertifikaat, saate oma saidile ja rakenduste turvamiseks kasutada Let’s Encrypti tasuta SSL sertifikaate. Let’s Encrypt SSL sertifikaadid kehtivad 90 päeva. Siiski saate luua automaatse protsessi, mida enne aegumist automaatselt uuendatakse.
Kui kavatsete hallata veebisaiti või peate oma rakenduse HTTPS-ga kaitsma, on Let’s Encrypt sertifikaadid suurepärased. Selle abil saate säästa palju raha.
Selle postituse jaoks kasutame Let’s Encrypt tasuta SSL sertifikaati, et tagada Nginxi veebiserveri toel töötav veebisait. Teie Nginxi veebisait saab suhelda HTTPS-i kaudu.
Rakenduse Let’s Encrypt kasutamise alustamiseks Ubuntu Linuxis Nginxi turvamiseks järgige alltoodud samme.
1. Kuidas paigaldada Certbot Ubuntu Linuxi
Certbot on käsureatööriist, mis automatiseerib Let’s Encrypt SSL sertifikaatide hankimise ja uuendamise. Samade ülesannete täitmiseks on ka teisi tööriistu, kuid Certbot on tõhus ja hõlpsasti kasutatav. Certboti paigaldamiseks Ubuntule käivitage alltoodud käsud.
sudo apt update
sudo apt install certbot
Nüüd kui Certbot on paigaldatud, saate alustada Let’s Encrypt SSL sertifikaatide loomist Ubuntu Linuxis.
Sertifikaadi loomise ja uuendamise automatiseerimiseks kasutame Webroot pistikprogrammi. See pistikprogramm kasutab veebiserveri juurkataloogis /.well-known/acme-challenge, et kinnitada, kas taotletud domeen lahendab Certbot töötava serveri.
Loome väljakutse/vastuse konfiguratsioonifaili, mis võimaldab Let’s Encryptil kontrollida serverit, mille jaoks sertifikaadid loodi. Selleks käivitage allolevad käsud, et luua kataloogis /etc/nginx/snippets konfiguratsioonifail nimega well-known.conf. See kataloog sisaldab kõiki konfiguratsioone, mida soovite Nginxi veebiserveriga kasutada. Lisage väljakutse/vastuse konfiguratsioonifail kindlasti kõikidesse serveriplokkidesse.
sudo nano /etc/nginx/snippets/well-known.conf
location ^~ /.well-known/acme-challenge/ { allow all; root /var/www/html/; default_type "text/plain"; try_files $uri =404; }
Enne SSL-i ja HTTPS-i peaks tüüpiline Nginxi serveriploki fail välja nägema nagu allpool. Lisage kindlasti ülaltoodud tuntud koodilõik.
server { listen 80; listen [::]:80; root /var/www/example.com; index index.php index.html index.htm; server_name example.com www.example.com; include snippets/well-known.conf; client_max_body_size 100M; autoindex off; location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
Diffie-Hellmani võtmevahetus (DH) on krüptograafiliste võtmete turvalise ja turvalise vahetamise meetod. Enamiku SSL konfiguratsioonide puhul soovite luua tugeva Diffie-Hellmani võtmegrupi. Käivitage allolevad käsud, et luua võti Ubuntu Linuxi kataloogis /etc/ssl/cert.
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Siinkohal peaksite olema valmis hankima Let’s Encryptilt tasuta sertifikaadi. Enne tasuta sertifikaatide loomist käivitage Nginxi serveriploki lubamiseks allolevad käsud.
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
sudo systemctl restart nginx
sudo certbot certonly --agree-tos --email admin@example.com --webroot -w /var/www/html -d example.com -d www.example.com
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 2021-09-07. 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" - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - 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
Teie uus konfiguratsioon pärast soovitatud SSL-i seadete lisamist peaks välja nägema sarnane allolevale.
- Esimene serveriplokk kuulab porti 80. See sisaldab 301 ümbersuunamist HTTP ümbersuunamiseks HTTPS-i.
- Teine serveriplokk kuulab porti 443. See sisaldab 301 ümbersuunamist, et suunata www ümber non-www domeeni.
server { listen 80; listen [::]:80; root /var/www/example.com; index index.php index.html index.htm; server_name example.com www.example.com; include snippets/well-known.conf; return 301 https://$host$request_uri; } server { listen 443 ssl http2; listen [::]:443 ssl http2; root /var/www/example.com; index index.php index.html index.htm; 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; ssl_protocols TLSv1 TLSv1.1 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; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains"; include snippets/well-known.conf; return 301 https://example.com$request_uri; } server { listen 443 ssl http2; listen [::]:443 ssl http2; root /var/www/example.com; index index.php index.html index.htm; 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; ssl_protocols TLSv1 TLSv1.1 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 on; ssl_session_cache shared:SSL:50m; ssl_session_timeout 1d; ssl_session_tickets off; ssl_stapling on; ssl_stapling_verify on; resolver 8.8.8.8 8.8.4.4 valid=300s; resolver_timeout 30s; ssl_dhparam /etc/ssl/certs/dhparam.pem; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains"; add_header X-Frame-Options SAMEORIGIN; add_header X-Content-Type-Options nosniff; include snippets/well-known.conf; client_max_body_size 100M; autoindex off; location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
Laadige Nginxi konfiguratsioonid uuesti, taaskäivitades serveri.
5. Kuidas Let’s Encrypti sertifikaate automaatselt uuendada
Nüüd kui sertifikaat on loodud, saate seadistada sertifikaatide automaatse uuendamise protsessi. Vaikimisi aegub see 90 päeva pärast. Protsessi seadistamine nii, et te ei pea meeles pidama uuendamist, on parim valik.
Sertifikaatide automaatseks uuendamiseks enne nende aegumist loob certboti pakett cronjobi ja systemd taimeri. Taimer uuendab sertifikaate automaatselt 30 päeva enne selle aegumist.
Crontab fail luuakse allolevas kohas.
cat /etc/cron.d/certbot
Nüüd saate HTTPS-i lubamiseks kasutada ülalpool viidatud sertifikaati ja võtmefaile oma Nginxi konfiguratsioonides.
----
NB! Kindlasti üle vaadata failisisude treppimine, kuna antud foorum lükkab kogu koodi paremasse serva.