V tomto tutoriálu vám krok za krokem ukážu, jak nainstalovat a nakonfigurovat webový server Nginx s certifikátem Letsencrypt. Tato příručka vám řekne o instalaci webového serveru Nginx, instalaci nástroje let's encrypt, generování certifikátu SSL umožňujícího šifrování, konfiguraci virtuálního hostitele nginx pomocí SSL a vytvoření další konfigurace SSL, abyste získali A+ z testovacích laboratoří SSL SSL.
Předpoklady
- Linux Server – Ubuntu 18.04 nebo CentOS 7.5
- Oprávnění uživatele root
Co uděláme?
- Nainstalujte webový server Nginx
- Konfigurace brány firewall UFW/Firewalld
- Nainstalujte Lets encrypt and Generate SSL Certificate
- Nakonfigurujte zabezpečené SSL
- Nakonfigurujte virtuálního hostitele Nginx s SSL
- Testování
Krok 1 – Instalace webového serveru Nginx
V tomto tutoriálu vás provedeme instalací a konfigurací webového serveru Nginx s Letsencrypt na obou serverech Linux – Ubuntu 18.04 a CentOS 7.5.
V Ubuntu 18.04.
Aktualizujte úložiště a poté nainstalujte nginx pomocí příkazu apt níže.
aktualizace sudo apt
instalace sudo apt nginx -y
V systému CentOS 7.5
Nainstalujte úložiště EPEL do systému CentOS a nainstalujte Nginx pomocí příkazu yum.
sudo yum install epel-release -y
sudo yum install nginx -y
Po dokončení instalace spusťte službu Nginx a povolte její spuštění při každém spuštění systému.
systemctl spustit nginx
systemctl povolit nginx
Webový server Nginx je nyní nainstalován a běží na výchozím portu HTTP 80. Zkontrolujte jej pomocí příkazu netstat níže.
netstat -plntu
Krok 2 – Konfigurace firewallu UFW – Firewall
Doporučuje se zapnout Firewall na serveru a otevřít konkrétní port podle potřeby. V tomto kroku si ukážeme, jak otevřít porty SSH, HTTP a HTTPS na linuxových serverech Ubuntu 18.04 pomocí UFW firewallu a Firewallu na systému CentOS 7.5.
V Ubuntu 18.04 – UFW Firewall
Před povolením brány UFW Firewall na systému Ubuntu se ujistěte, že je v konfiguraci brány firewall v seznamu povolen port SSH.
Přidejte port služby SSH do konfigurace brány firewall pomocí příkazu ufw a poté povolte službu brány firewall UFW.
ufw povolit ssh
ufw povolit
Nyní přidejte služby HTTP a HTTPS.
ufw povolit http
ufw povolit https
Porty služeb SSH, HTTP a HTTPS byly přidány do seznamu služeb brány UFW Firewall, zkontrolujte, zda používáte příkaz níže.
Stav ufw
V systému CentOS 7.5 – Firewalld
Před přidáním portu a služeb do firewallu se ujistěte, že je služba firewallu spuštěna a spuštěna.
Spusťte službu firewalld a povolte její spuštění při každém spuštění systému.
systemctl spustit firewalld
systemctl povolit firewalld
Poznámka:
- Služba SSH bude v seznamu služeb Firewald ve výchozím nastavení povolena.
Nyní přidejte služby HTTP a HTTPS pomocí příkazu firewall-cmd níže.
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
Znovu načtěte konfiguraci brány firewall a zkontrolujte seznam služeb.
firewall-cmd --reload
firewall-cmd --list-services
A na seznamu získáte služby SSH, HTTP a HTTPS.
Krok 3 – Instalace Letsencrypt a vygenerování certifikátů
V tomto kroku nainstalujeme nástroj letsencrypt a pomocí příkazu cerbot vygenerujeme silné SSL certifikáty Letsencrypt.
V Ubuntu 18.04
Nainstalujte balíčky letsencrypt pomocí příkazu apt níže.
sudo apt install letsencrypt -y
V systému CentOS 7.5
Nyní nainstalujte balíčky letsencrypt na CentOS 7 pomocí příkazu yum níže.
sudo yum nainstalovat certbot -y
Po dokončení instalace vytvoříme novou konfiguraci, která bude použita pro generování souborů certifikátu SSL.
V Ubuntu 18.04
Přejděte do konfiguračního adresáře '/etc/nginx' a vytvořte nový konfigurační soubor 'cerbot.conf' v adresáři 'snippets'.
cd /etc/nginx/
úryvky vim/certbot.conf
Zde vložte následující konfiguraci.
umístění /.well-known { alias /var/www/html/.well-known; }
Uložte a ukončete.
Nyní upravte výchozí soubor virtuálního hostitele Nginx.
vim sites-available/default
Přidejte následující konfiguraci pod bloky 'server {..}'.
include snippets/certbot.conf;
Uložte a ukončete.
V systému CentOS 7.5
Přejděte do konfiguračního adresáře '/etc/nginx' a vytvořte nový konfigurační soubor 'certbot.conf' v adresáři 'default.d'.
cd /etc/nginx/
vim default.d/certbot.conf
Vložte konfiguraci níže.
umístění /.well-known { alias /usr/share/nginx/html/.well-known; }
Uložte a ukončete.
Nyní otestujte konfiguraci nginx a ujistěte se, že nedošlo k chybě, poté restartujte službu nginx.
nginx -t
systemctl restart nginx
Dále vygenerujte certifikáty SSL letsencrypt pomocí příkazu certbot.
V Ubuntu 18.04
certbot certonly --rsa-key-size 4096 --webroot --agree-tos --no-eff-email --email [e-mail protected] -w /var/www/html -d hakase-labs.io
V systému CentOS 7.5
certbot certonly --rsa-key-size 4096 --webroot --agree-tos --no-eff-email --email [e-mail protected] -w /usr/share/nginx/html -d hakase-labs .io
Poznámka:
- Zadáme velikost klíče RSA pro naši doménu na '4096' a definujeme metodu ověřování pro výchozí webový kořenový adresář '/var/www/html' v systému Ubuntu a '/usr/share/ nginx/html' pro systém CentOS 7.
Po dokončení získáte všechny soubory certifikátu SSL pro název domény v adresáři '/etc/letsencrypt/live'.
Abychom získali další zabezpečení, vygenerujeme klíč DHPARAM '4096' pomocí příkazu OpenSSL, jak je uvedeno níže.
openssl dhparam -out /etc/nginx/dhparam.pem 4096
Klíč DHPARAM byl vygenerován do adresáře '/etc/nginx'.
Krok 4 – Konfigurace SSL
V tomto kroku definujeme konfiguraci SSL pro webový server Nginx. Vytvoříme novou konfiguraci 'ssl.conf', která obsahuje vylepšené zabezpečení konfigurace SSL zaměřené na webový server Nginx.
V Ubuntu 18.04
Přejděte do konfiguračního adresáře '/etc/nginx/' a vytvořte novou konfiguraci SSL 'ssl.conf' v adresáři 'snippets'.
cd /etc/nginx/
úryvky vim/ssl.conf
V systému CentOS 7.5
Přejděte do konfiguračního adresáře '/etc/nginx/' a vytvořte novou konfiguraci SSL 'ssl/conf' v adresáři 'default.d'.
cd /etc/nginx/
vim default.d/ssl.conf
Zde vložte následující konfiguraci SSL.
# Specifikujte verze TLSssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_prefer_server_ciphers on;# Doporučení pro šifrovací sady od chiper.li# Pomocí této sady čipů získáte 100 bodů testu SSLabs# Některá zařízení nebudou podporovat#ssl_HE-ciphers RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES2846"ssuit# Mozilla Doporučení# Použijte toto pro všechna zařízení, která podporují ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-13CHAES1005:ECDHE-POLSAYCHADHE200 -GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256'ECDHE-použití#285RSA6 klíč DHPARAM a křivka ECDH>=256bitssl_ecdh_curve secp384r1;ssl_dhparam /etc/nginx/dhparam.pem;server_tokens off;ssl_session_timeout 1d;ssl_session_cache shared;SSL_session_cache have shared;SSL_SportseSkettic HTTP-STTran#Skettic; ubdoména vašeho webu,# buďte opatrní a použijte volby 'includeSubdomains'add_header Strict-Transport-Security "max-age=63072000; includeSubdomény; preload";# Povolit sešívání OSCP pro webový server Nginx# Pokud používáte SSL od Letsencrypt,# použijte 'chain.pem' certificatessl_stapling on;ssl_stapling_verify on;ssl_trusted_certificate /etc/letsencrypt/live/hakase-labs.io chain.pem;resolver 8.8.8.8 8.8.4.4 valid=300s;resolver_timeout 5s;# Ochrana XSS pro webový server Nginxadd_header X-Frame-Options DENY;add_header X-XSS-Protection "1; mode=block";add_header X-Content-Type-Options nosniff;add_header X-Robots-Tag none;
Uložte a ukončete.
Poznámka:
- Upřesněte verze TLS pro web, přijměte pouze TLSv1 TLSv1.1 TLSv1.2.
- Uveďte šifrovací sadu SSL a pro zajištění kompatibility všech zařízení se doporučuje používat šifrovací sadu SSL podle návrhu Mozilly.
- Povolte HSTS, sešívání OSCP a přidání ochrany XSS.
Krok 5 – Konfigurace virtuálního hostitele Nginx s SSL
V tomto kroku vytvoříme soubor virtuálního hostitele pro název domény. Vytvoříme nového virtuálního hostitele, doménu s názvem hakase-labs.io, a jeho webový kořenový adresář bude umístěn v adresáři '/var/www/site01'.
Vytvořte nový adresář '/var/www/site01' a uvnitř vytvořte soubor 'index.html'.
mkdir -p /var/www/site01
echo ''> /var/www/site01/index.html
Nginx - Letsencrypt - A+ Nyní přejděte do konfiguračního adresáře '/etc/nginx' a vytvořte nový soubor virtuálního hostitele s názvem 'hakase-labs.io' pro ubuntu a 'hakase-labs.conf' pro systém CentOS 7.
V Ubuntu 18.04
cd /etc/nginx/
vim sites-available/hakase-labs.ioV systému CentOS 7.5
cd /etc/nginx/
vim conf.d/hakase-labs.confZde vložte následující ukázkovou konfiguraci virtuálního hostitele Nginx.
server { poslouchat 80; poslouchej [::]:80; název_serveru hakase-labs.io; return 301 https://$host$request_uri;}server { listen 443 ssl http2; poslouchej [::]:443 ssl http2; root /var/www/site01; index index.html index.php index.htm; název_serveru hakase-labs.io; error_log /var/log/nginx/hakase-error.log warning; ssl_certificate /etc/letsencrypt/live/hakase-labs.io/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/hakase-labs.io/privkey.pem; #SSL Configuration include snippets/ssl.conf; umístění ~ /.známý { povolit vše; } umístění / { try_files $uri $uri/ =404; } umístění =/favicon.ico { log_not_found off; access_log off; } umístění =/robots.txt { povolit vše; log_not_found off; access_log off; } umístění ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { expiruje max; log_not_found off; }}Uložte a ukončete.
Poznámka:
- Změňte 'include snippets/ssl.conf;' čára. Pokud používáte Ubuntu, ponechte jej jako výchozí. A pokud používáte CentOS, změňte adresář na 'default.d/ssl.conf'
Pouze v systému Ubuntu
Povolte nový soubor virtuálního hostitele a otestujte konfiguraci a ujistěte se, že nedošlo k chybě.
ln -s /etc/nginx/sites-available/hakase-labs.io /etc/nginx/sites-enabled/
nginx -t
Nyní restartujte službu nginx.
systemctl restart nginx
Byl vytvořen nový virtuální hostitel s povoleným HTTPS a další konfigurací SSL.
Zkontrolujte pomocí příkazu netstat a v seznamu získáte port HTTPS 443.
netstat -plntu
Krok 6 – Testování
Otevřete webový prohlížeč a zadejte název své domény, moje je 'http://hakase-labs.io'.
A budete přesměrováni na připojení HTTPS.
Nyní přejděte na testovací web SSL „https://www.ssllabs.com/ssltest/“ a zadejte název své vlastní domény a počkejte na výsledky.
Následuje můj výsledek použití 'Doporučení Mozilla Ciphersuite'.
A následuje můj výsledek používání 'Cipher.li Ciphersuite Recommendation'.
Uvidíte, že všechny výsledky mají výsledky 'A+' a liší se pouze v 'Síle šifry' v doporučeních Mozilly a v doporučení Cipherli.st.
Chcete-li zkontrolovat sešívání OSCP a HSTS na serveru, posuňte stránku s výsledky testu a získáte výsledek, jak je uvedeno níže.
Pokud chcete zkontrolovat sešívání OSCP z příkazového řádku, zkontrolujte jej pomocí následujícího příkazu.
echo UKONČIT | openssl s_client -connect hakase-labs.io:443 -status 2> /dev/null | grep -A 17 'OCSP odpověď:' | grep -B 17 'Další aktualizace'
Pro testování HSTS to zkontrolujte pomocí příkazu curl níže.
curl -s -D- https://hakase-labs.io | grep -i Strict
Instalace a konfigurace webového serveru Nginx pomocí SSL Letsencrypt a také získání A+ z testu SSLabs byly úspěšně dokončeny.
Odkazy
- https://community.letsencrypt.org/
- https://mozilla.github.io/
- https://cipherli.st/