GNU/Linux >> Znalost Linux >  >> Debian

Nainstalujte Lets Encrypt and Secure Nginx pomocí SSL/TLS v Debianu 9

Tento tutoriál vám ukáže, jak nainstalovat a zabezpečit webový server Nginx na Debianu 9 pomocí certifikátu TLS vydaného zdarma certifikační autoritou Let’s Encrypt. Kromě toho nakonfigurujeme automatické obnovení certifikátů Lets’ Encrypt TLS pomocí úlohy cron před vypršením platnosti certifikátů.

TLS, také známý jako Transport Layer Security, je síťový protokol, který používá certifikáty SSL k šifrování síťového provozu, který proudí mezi serverem a klientem nebo mezi webovým serverem, jako je server Nginx, a prohlížečem. Veškerá data vyměňovaná mezi těmito dvěma entitami jsou zabezpečena a spojení nelze dešifrovat, i když je zachyceno pomocí techniky, jako je útok muže ve středu nebo sniffování paketů. certbot package software je oficiální klientský nástroj poskytovaný Let’s Encrypt CA, který lze použít v procesu generování a stahování bezplatných certifikátů Let’s Encrypt v Debianu.

Požadavky

  • Nainstalujte LEMP Stack v Debianu 9.
  • Veřejný registrovaný název domény se správnými záznamy DNS (záznamy A nebo záznamy CNAME pro subdomény).
  • Přímý přístup ke konzole serveru nebo vzdálený přístup SSH k serveru.
  • Uživatelský účet s oprávněními root nebo přímý přístup k účtu root.

Instalovat nástroj klienta Certbot

Chcete-li nainstalovat Let’s Encrypt cerbot klientský nástroj v Debianu 9 z oficiálních repozitářů Debianu, otevřete terminál a zadejte následující příkaz s právy root, jak je znázorněno na následujícím snímku obrazovky.

apt-get install certbot

Debian apt utility, což je rozhraní příkazového řádku hlavního Správce balíčků Debianu, se vás po několika předběžných kontrolách zeptá, zda souhlasíte s pokračováním instalace balíčku certbot a všech jeho požadovaných závislostí. Chcete-li přijmout proces instalace softwaru, odpovězte ano (y) v příkazovém řádku konzoly serveru.

Získejte certifikát Let's Encrypt

Chcete-li vygenerovat a stáhnout certifikáty Let’s Encrypt pro doménu, nejprve se ujistěte, že je webový server Nginx spuštěn a že je alespoň port 80 dostupný z internetu. Chcete-li ověřit, zda je spuštěn Nginx, proveďte následující příkazy s oprávněními root.

sudo systemctl status nginx

Pokud server ještě neběží, spusťte démona Nginx pomocí níže uvedeného příkazu.

sudo systemctl spustit nginx

V případě, že máte v Debianu nainstalovaný běžný firewall, jako je UFW firewall, který blokuje všechna příchozí připojení na portu 80 a 443, zadejte níže uvedené příkazy k otevření portu HTTP a HTTPS v systému.

sudo ufw povolit 80/tcp
sudo ufw povolit 443/tcp

Chcete-li získat certifikáty pro svou doménu, spusťte cerbot příkaz v konzole s následujícími parametry a příznaky, jak je vysvětleno níže. Spusťte příkaz s oprávněními root a pomocí –d zadejte název své domény a všechny ostatní subdomény, pro které chcete získat certifikáty. vlajka. Dodejte také --standalone možnost, aby certbot nezasahoval do konfiguračních souborů Nginx. Při vydávání certifikátů pomocí této možnosti musí být server Nginx zastaven.

Syntaxe příkazu cerbot:

sudo certbot zcela jistě --standalone –d yourdomain.com –d www.yourdomain.com

Když poprvé spustíte příkaz certbot a získáte certifikát, budete vyzváni k přidání své e-mailové adresy a souhlasu s podmínkami služby Let’s Encrypt. Napište „a “, abyste souhlasili s podmínkami služby „ne“ abyste nesdíleli svou e-mailovou adresu s partnery Let’s Encrypt. Nakonec, až získáte certifikát pro svou doménu, přečtěte si poznámky v zápatí, abyste našli cestu k systému certifikátů a datum, kdy vyprší jejich platnost.

Alternativní způsob získání certifikátu Let's encrypt SSL

Chcete-li získat certifikát Let’s Encrypt prostřednictvím „webroot " plugin použijte níže uvedenou syntaxi. Přidejte webový kořenový adresář Nginx, který se ve výchozím nastavení nachází v /var/www/html/ systémovou cestu, při vydávání příkazu certbot s --webroot a –w vlajky. Také se ujistěte, že Nginx má plná oprávnění k zápisu do webového kořenového adresáře, aby bylo možné vytvořit /.well-known adresář.

The --webrot volba pro cerbot vás také požádá o přidání vaší e-mailové adresy pro obnovení certifikátu a bezpečnostní upozornění. Certbot klient má vestavěný kód, který dokáže detekovat falešnou e-mailovou adresu. Abyste mohli pokračovat v získávání certifikátu, musíte zadat veřejně přístupnou e-mailovou adresu.

certbot certonly --webroot –w /var/www/html/ -d yourdomain.com –d www.yourdomain.com

 

Ukládání protokolu ladění do /var/log/letsencrypt/letsencrypt.log 
Zadejte e-mailovou adresu (používá se pro naléhavá upozornění na obnovení a zabezpečení) (zadejte „c“ do 
cancel):[email protected]  #Bude zjištěna falešná e-mailová adresa  
Zdá se, že s touto adresou jsou problémy  . Zadejte e-mailovou adresu (používá se pro 
upozornění na naléhavé obnovení a zabezpečení)  Pokud to opravdu chcete přeskočit, můžete 
spusťte klienta s --register-unsafely-without-email, ale ujistěte se, že potom 
zálohujte si klíč účtu z /etc/letsencrypt/accounts   (zadejte „c“ pro zrušení):[email protected] 
 
-------------------------------------------- ----------------------------------- 
Přečtěte si smluvní podmínky na adrese 
https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf. Musíte souhlasit 
za účelem registrace na serveru ACME na adrese 
https://acme-v01.api.letsencrypt.org/directory 
-------------------------------------------- ----------------------------------- 
(A)souhlasit/(C)zrušit:a  
 
-------------------------------------------- ----------------------------------- 
Byli byste ochotni sdílet svou e-mailovou adresu s Electronic Frontier 
Nadace, zakládající partner projektu Let's Encrypt a neziskové organizace 
organizace, která vyvíjí Certbot? Rádi bychom vám zaslali e-mail o EFF a 
naše práce na šifrování webu, ochraně jeho uživatelů a ochraně digitálních práv. 
-------------------------------------------- ----------------------------------- 
(Y)es/(N)ne:n  
Získání nového certifikátu 
Provádění následujících úkolů: 
Výzva http-01 pro www.domain.com 
Použití cesty webroot /var/www/html/  pro všechny neshodné domény. 
Čekání na ověření... 
Uklízení výzev 
 
DŮLEŽITÉ POZNÁMKY: 
 - Gratulujeme! Váš certifikát a řetězec byly uloženy na 
    /etc/letsencrypt/live/www.yourdomain.com/fullchain.pem. Váš 
   platnost certifikátu vyprší 28. 12. 2017. Chcete-li získat novou nebo vylepšenou verzi 
   tohoto certifikátu v budoucnu jednoduše spusťte certbot znovu. To 
   neinteraktivně obnovte *všechny* své certifikáty, spusťte "certbot 
   obnovit" 
 – Vaše přihlašovací údaje k účtu byly uloženy do vašeho Certbota 
   konfigurační adresář v /etc/letsencrypt. Měli byste 
   nyní vytvořte bezpečnou zálohu této složky. Tato konfigurace 
   adresář bude také obsahovat získané certifikáty a soukromé klíče 
   od Certbota, takže pravidelné zálohování této složky je ideální. 
 – Pokud máte rádi Certbota, zvažte prosím podporu naší práce: 
 
   Darování ISRG / Let's Encrypt:   https://letsencrypt.org/donate 
   Darování EFF:                     https://eff.org/donate-le 

 

Konfigurace Nginx pro TLS (SSL)

Úplný výchozí konfigurační soubor TLS Nginx pro doménu by měl vypadat jako v níže uvedeném úryvku.

/etc/nginx/sites-enabled/default-ssl ukázka souboru:

    server {
                    poslouchejte 443 ssl default_server;
                    poslouchat [::]:443 ssl default_server;
      
                název_serveru  www.yourdomain.com yourdomain.com;
                #název_serveru _;
                               
                kořen /var/www/html;
                               
                access_log /var/log/nginx/access.log;
                error_log /var/log/nginx/error.log;
              
               #SSL certifikáty
                ssl_certificate "/etc/letsencrypt/live/www.yourdomain.com/cert.pem";
                ssl_certificate_key "/etc/letsencrypt/live/www. yourdomain.com/privkey.pem";
                ssl_dhparam /etc/nginx/dhparam.pem;
               
                ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
                #ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
 
                ssl_session_cache shared:SSL:1m;
               ssl_session_timeout 10 m;
                ssl_ciphers HIGH:!aNULL:!MD5;
                ssl_prefer_server_ciphers  on;
               
                add_header Strict-Transport-Security "max-age=31536000;
    #includeSubDomains" vždy;
 
                poloha / {
        index index.php index.html index.htm;
                    try_files $uri $uri/ /index.php?$args $uri/ =404;
                }
 
               
                nastavit $cache_uri $request_uri;
               
                umístění ~ /.známá {
                povolit vše;
                                }
              
                #
                #             # S php-fpm (nebo jinými unixovými sockety):
                                fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
                #             # S php-cgi (nebo jinými tcp sockety):
                #             fastcgi_pass 127.0.0.1:9000;
                }

               # odepřít přístup k souborům .htaccess, pokud je kořen dokumentu Apache
                # souhlasí s nginxem
                #
                #location ~ /\.ht {
                #             odmítnout vše;
                #}
               
    }

Řádky kódu pro zpracování PHP skriptů pomocí FastCGI Process Manager lze také nalézt v tomto úryvku a jsou reprezentovány následujícími řádky.

umístění ~ \.php$ {
                                include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
                }

Instalace Let’s Encrypt Certificates v Nginx

Certifikáty a klíče Let’s Encrypt jsou uloženy v /etc/letsencrypt/live/www.yourdomain.com/ adresář v Debianu. ls příkaz proti výše uvedenému adresáři odhalí všechny součásti certifikátu, jako je soubor řetězce, soubor fullchain, soukromý klíč a soubor certifikátu.

ls /etc/letsencrypt/live/www.yourdomain.com/

Chcete-li nainstalovat certifikát Let's Encrypt do konfiguračního souboru TLS webového serveru Nginx, otevřete Nginx default-ssl soubor a aktualizujte níže uvedené řádky tak, aby odrážely cesty k souboru certifikátu Let’s Encrypt pro vaši doménu, jak je znázorněno na níže uvedeném úryvku.

nano /etc/nginx/sites-enabled/default-ssl

Změňte následující řádky, jak je uvedeno níže:

                ssl_certificate "/etc/letsencrypt/live/www.yourdomain.com/cert.pem ";
                ssl_certificate_key "/etc/letsencrypt"com";prikey.pyourcrypt/domain.www.>

 

Také pokud ssl_dhparam Pokud je v konfiguraci Nginx SSL přítomen příkaz, musíte vygenerovat nový 2048bitový klíč Diffie–Hellman zadáním následujícího příkazu. Generování klíčových parametrů Diffie–Hellman by mělo chvíli trvat v závislosti na náhodnosti nebo entropii vašeho systému.

openssl dhparam –out /etc/nginx/dhparam.pem 2048

Nakonec před aktivací konfigurace Nginx TLS restartováním démona Nginx, aby se změny projevily, nejprve zkontrolujte, zda konfigurace Nginx neobsahují potenciální chyby syntaxe. Poté, pokud je test konfiguračního souboru Nginx úspěšný, restartujte démona Nginx a načtěte novou konfiguraci spolu s certifikáty Let’s Encrypt vydáním níže uvedených příkazů.

nginx -t
restart služby nginx

Chcete-li ověřit, zda služba nginx vlastní otevřený soket ve stavu naslouchání na portu 443, spusťte netstat příkaz, jak je znázorněno na níže uvedeném úryvku.

netstat –tulpn | grep -e 443 -e POSLOUCHAT

Měli byste také otevřít prohlížeč a přejít na název své domény prostřednictvím protokolu HTTPS. Pokud jsou certifikáty Let’s Encrypt úspěšně aplikovány v Nginx, SSL handshake by měl fungovat hladce, aniž by způsoboval nějaké chyby.

https://www.yourdomain.com

Vynucení webového provozu na HTTPS

Chcete-li přinutit návštěvníky vaší domény, aby procházeli váš web pouze prostřednictvím protokolu HTTPS, otevřete výchozí konfigurační soubor s povolenými weby Nginx a přidejte následující řádek, který vynutí přesměrování všech požadavků, které zasáhnou port 80, se stavovým kódem 301 (trvale přesunuto) na port. 443.

nano /etc/nginx/sites-enabled/default

Příkaz přesměrování by měl vypadat tak, jak je uvedeno v níže uvedeném úryvku.

název_serveru www.yourdomain.com yourdomain.com;
návrat         301 https://$server_name$request_uri;

Následně restartujte démona Nginx, abyste aplikovali změnu, zadáním níže uvedeného příkazu.

restart služby nginx

Závěrečné kontroly

Chcete-li dále prozkoumat certifikáty generované Let’s Encrypt CA, můžete použít moderní webový prohlížeč, jako je Chrome. Navštivte svou doménu z prohlížeče Chrome a stisknutím funkční klávesy F12 otevřete Nástroje pro vývojáře. Přejděte na kartu Zabezpečení a klikněte na Zobrazit certifikát k otevření certifikátu, jak je znázorněno na následujících snímcích obrazovky.

Další užitečnou pomůckou při vyšetřování SSL certifikátů je openssl nástroj příkazového řádku. Chcete-li zobrazit další informace pro certifikát Let's Encrypt CA, spusťte níže uvedený příkaz v konzole Linux.

openssl s_client –připoj www.yourdomain.com:443

Automatické obnovení certifikátu Let's Encrypt

Chcete-li automaticky obnovit certifikát vydaný Let’s Encrypt CA před datem vypršení platnosti, naplánujte spuštění úlohy crontab jednou denně ve 2:00 pomocí následujícího příkazu. Výstup provedené úlohy cron bude přesměrován do souboru protokolu uloženého v /var/log/letsencrypt.log

crontab –e

Cron úloha pro obnovení certifikátu.

0 2 * * *  certbot obnovit>> /var/log/letsencrypt.log 

To je vše! Další pokročilejší konfigurace týkající se certifikátů a nástroje Let’s Encrypt naleznete v oficiální dokumentaci na následující internetové adrese https://certbot.eff.org/docs/.


Debian
  1. Zabezpečte Nginx pomocí Lets Encrypt na Debianu 9

  2. Zabezpečte Nginx pomocí Lets Encrypt na Debian 10 Linux

  3. Zabezpečte Apache pomocí Lets Encrypt na Debianu 10

  1. Nainstalujte Automad CMS s Nginx a Lets Encrypt SSL na Debian 10

  2. Jak nainstalovat OpenCart s Nginx a Lets Encrypt na Debian 10

  3. Jak nainstalovat Drupal 9 s Nginx a nechat šifrovat SSL na Debian 10

  1. Jak nainstalovat Joomla s Apache a nechat šifrovat SSL na Debian 10

  2. Jak nainstalovat Drupal s Apache a nechat šifrovat SSL na Debian 11

  3. Nainstalujte TaskBoard s Apache a nechte šifrovat SSL na Debianu 11