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 2048Nakonec 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 -trestart 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 POSLOUCHATMě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/defaultPří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 nginxZá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 –eCron úloha pro obnovení certifikátu.
0 2 * * * certbot obnovit>> /var/log/letsencrypt.logTo 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/.
Jak nainstalovat Sogo Groupware Server na Debian Nainstalujte centralizovaný server protokolů s Rsyslog v Debianu 9Debian