[Õpetus] Kuidas seadistada Lets Encrypt Ubuntus koos Nginx-ga

Collapse
X
 
  • Aeg
  • Show
Puhasta kõik
uued postitused
  • root
    Huviline
    • Oct 2021
    • 318

    [Õpetus] Kuidas seadistada Lets Encrypt Ubuntus koos Nginx-ga

    Saame teada, kuidas seadistada Let’s Encrypt tasuta SSL sertifikaate Ubuntu Linuxis Nginxi HTTP veebiserveriga. Let’s Encrypt on tasuta, automatiseeritud ja avatud sertifikaadi asutus, mille on loonud mittetulundusühing Internet Security Research Group (ISRG).

    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.
    Kood:
    sudo apt update
    Kood:
    sudo apt install certbot
    2. Kuidas luua Let’s Encrypt sertifikaate Ubuntu Linuxi jaoks

    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.
    Kood:
    sudo nano /etc/nginx/snippets/well-known.conf
    Seejärel kopeerige ja kleepige allolev sisu faili ja salvestage:
    HTML kood:
    location ^~ /.well-known/acme-challenge/ {
    allow all;
    root /var/www/html/;
    default_type "text/plain";
    try_files $uri =404;
    }
    Ülaltoodud konfiguratsioonifail võimaldab Let’s Encryptil veebiserverit Webroot pistikprogrammi abil valideerida.
    Enne SSL-i ja HTTPS-i peaks tüüpiline Nginxi serveriploki fail välja nägema nagu allpool. Lisage kindlasti ülaltoodud tuntud koodilõik.
    HTML kood:
    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;
    }
    }
    3. Kuidas luua Dh (Diffie-Hellmani) grupi

    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.
    Kood:
    sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
    4. Kuidas hankida Let’s Encrypt sertifikaate Ubuntu Linuxis

    Siinkohal peaksite olema valmis hankima Let’s Encryptilt tasuta sertifikaadi. Enne tasuta sertifikaatide loomist käivitage Nginxi serveriploki lubamiseks allolevad käsud.
    Kood:
    sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
    Kui olete lõpetanud, laadige Nginx uuesti, käivitades alloleva käsu:
    Kood:
    sudo systemctl restart nginx
    Nüüd olete valmis Let’s Encrypt SSL sertifikaate genereerima. Käivitage allolevad käsud, asendades näite example.com oma domeeniga, et luua Let’s Encrypt SSL sertifikaadid.
    Kood:
    sudo certbot certonly --agree-tos --email admin@example.com --webroot -w /var/www/html -d example.com -d www.example.com
    Eduka sertifikaadi genereerimise teade näeb välja sarnane allolevale.
    HTML kood:
    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
    Nüüd saate kasutada sertifikaati ja võtit oma Nginxi serveriploki konfiguratsioonides.
    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.
    HTML kood:
    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;
    }
    }
    Muutke ülalolevaid konfiguratsioone vastavalt oma vajadustele. Ülaltoodud sätted peaksid siiski töötama enamikus Nginxi keskkondades.
    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.
Töötlen...