GNU/Linux >> Znalost Linux >  >> FreeBSD

Jak zabezpečit Nginx pomocí SSL a Let's Encrypt ve FreeBSD

V této příručce probereme, jak zabezpečit Nginx webový server v FreeBSD s TLS/SSL certifikáty nabízené Let’s Encrypt Certificate Authority . Ukážeme vám také, jak automaticky obnovit certifikáty Lets’ Encrypt před datem vypršení platnosti.

TLS , což je zkratka pro Transport Layer Security , je protokol, který běží pod HTTP protokol a používá certifikáty a klíče k zapouzdření paketů a šifrování dat vyměňovaných mezi serverem a klientem, nebo v tomto případě mezi Nginx webový server a prohlížeč klienta za účelem zabezpečení připojení, aby třetí strana, která by mohla zachytit provoz, nemohla přenos dešifrovat.

Přečtěte si také :Nainstalujte Let’s Encrypt for Apache na FreeBSD

Proces získání bezplatného Let’s Encrypt certifikát v FreeBSD lze výrazně zjednodušit instalací certboot klientský nástroj, což je oficiální klient Let’s Encrypt používaný pro generování a stahování certifikátů.

Požadavky

  1. Instalace zásobníku FBEMP (Nginx, MariaDB a PHP) ve FreeBSD

Krok 1:Nakonfigurujte Nginx TLS/SSL

1. Ve výchozím nastavení TLS/SSL konfigurace serveru není v FreeBSD povolena protože TLS příkazy blokování serveru jsou komentovány v Nginx výchozí konfigurační soubor.

Chcete-li aktivovat TLS server v Nginx , otevřete nginx.conf konfiguračního souboru, vyhledejte řádek, který definuje začátek SSL server a aktualizujte celý blok tak, aby vypadal jako v níže uvedené ukázce.

# nano /usr/local/etc/nginx/nginx.conf

Výňatek z bloku Nginx HTTPS:

Konfigurace Nginx HTTPS
server {
       listen 443 ssl  default_server;
       server_name  www.yourdomain.com;
	
	access_log /var/log/nginx/access.log;
	error_log /var/log/nginx/error.log;
	error_page   500 502 503 504  /50x.html;
        
	location = /50x.html {
            root   /usr/local/www/nginx-dist;
        }
	
	location / {
	    root   /usr/local/www/nginx;
       	    index  index.html index.htm;
	    try_files $uri $uri/ /index.php?$args;
				}

	ssl_certificate "/usr/local/etc/letsencrypt/live/www.yourdomain.com/cert.pem";
	ssl_certificate_key "/usr/local/etc/letsencrypt/live/www.yourdomain.com/privkey.pem";
	ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
	ssl_dhparam /usr/local/etc/nginx/dhparam.pem;
	ssl_session_cache shared:SSL:1m;
	ssl_session_timeout 10m;
	ssl_ciphers HIGH:!aNULL:!MD5;
	ssl_prefer_server_ciphers  on;

	# Use gzip compression
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 5;
gzip_buffers 16 8k;
gzip_http_version 1.0;

	# Set a variable to work around the lack of nested conditionals
	
	set $cache_uri $request_uri;
	
	location ~ /.well-known {
	allow all;
		}
    


        location ~ \.php$ {
        root	/usr/local/www/nginx;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        #fastcgi_param  SCRIPT_FILENAME /scripts$fastcgi_script_name;
        fastcgi_param SCRIPT_FILENAME $request_filename;    
		include        fastcgi_params;
        }	
    }

Výše uvedený blok kromě SSL blok, obsahuje také některé příkazy pro povolení komprese gzip a FastCGI Process Manager , který se používá k předávání kódu PHP do PHP-FPM brány za účelem spouštění dynamických webových aplikací.

Po přidání výše uvedeného kódu do Nginx hlavního konfiguračního souboru, nerestartujte démona ani nepoužívejte nastavení před instalací a získáním Let’s Encrypt certifikát pro vaši doménu.

Krok 2:Nainstalujte klienta Certbot do FreeBSD

2. Proces instalace Let’s Encrypt certbot klientský nástroj ve FreeBSD zahrnuje stažení zdrojového kódu pro py-certbot a lokálně jej zkompilujte zadáním níže uvedených příkazů.

# cd /usr/ports/security/py-certbot
# make install clean

3. Kompilace py-certbot obslužný program zabere mnoho času ve srovnání s instalací běžného binárního balíčku. Během této doby je nutné stáhnout řadu závislostí, které budou kompilovány lokálně ve FreeBSD.

Na vaší obrazovce se také objeví řada výzev, které po vás budou vyžadovat výběr balíčků, které budou použity při kompilaci pro každou závislost. Na první obrazovce vyberte následující nástroje stisknutím [mezera] klíč pro kompilaci python27 závislost, jak je znázorněno na obrázku níže.

  • IPV6
  • LIBFFI
  • NLS
  • PYMALLOC
  • Vlákna
  • Podpora UCS4 pro Unicode

4. Dále vyberte DOCS a THREADS pro gettext-tools závislosti a stiskněte OK pokračujte podle obrázku níže.

5. Na další obrazovce ponechte TESTY možnost deaktivována pro libffi-3.2.1 a stiskněte OK posunout dále.

6. Dále stiskněte mezera vyberte DOCS pro py27-enum34 závislost, která nainstaluje dokumentaci k tomuto nástroji, a stiskněte OK pokračujte, jak je znázorněno na níže uvedeném snímku obrazovky.

7. Nakonec zvolte instalaci ukázkových ukázek pro py27-openssl závislost stisknutím [mezera] a stiskněte OK dokončete proces kompilace a instalace pro py-certbot klient.

8. Po procesu kompilace a instalace py-certbot nástroj skončí, spusťte níže uvedený příkaz a upgradujte nástroj na nejnovější verzi balíčku, jak je znázorněno na níže uvedených snímcích obrazovky.

# pkg install py27-certbot

9. Aby se předešlo některým problémům, může k tomu dojít při získávání bezplatného Let’s Encrypt certifikát, nejběžnější chyba je „pkg_resources.DistributionNotFound “, ujistěte se, že ve vašem systému jsou také následující dvě závislosti:py27-salt a py27-acme .

# pkg install py27-salt
# pkg install py27-acme

Krok 3:Nainstalujte Let’s Encrypt Certificate pro Nginx na FreeBSD

10. Chcete-li pro svou doménu získat samostatný certifikát Let's Encrypt, spusťte následující příkaz a zadejte název domény a všechny subdomény, pro které chcete certifikáty získat, a to pomocí -d vlajka.

# certbot certonly --standalone -d yourdomain.com -d www.yourdomain.com

11. Při generování certifikátu budete požádáni o zadání vaší e-mailové adresy a souhlas s podmínkami služby Let’s Encrypt. Zadejte a z klávesnice, abyste souhlasili a pokračovali, a budete také dotázáni, zda chcete svou e-mailovou adresu sdílet s partnery Let’s Encrypt.

V případě, že nechcete svou e-mailovou adresu sdílet, stačí napsat no slovo ve výzvě a stiskněte [enter] klíč pro pokračování. Po úspěšném získání certifikátů pro vaši doménu obdržíte několik důležitých poznámek, které vás informují o tom, kde jsou certifikáty ve vašem systému uloženy a kdy vyprší jejich platnost.

12. V případě, že chcete získat certifikát Let’s Encrypt pomocí „webroot ” plugin přidáním webroot adresář serveru Nginx pro vaši doménu, zadejte následující příkaz s --webroot a -w vlajky. Ve výchozím nastavení, pokud jste nezměnili cestu webroot Nginx, měla by být umístěna v /usr/local/www/nginx/ systémová cesta.

# certbot certonly --webroot -w /usr/local/www/nginx/ -d yourdomain.com -d www.yourdomain.com

Stejně jako v --strandalone postup pro získání certifikátu, --webroot procedura vás také požádá o zadání e-mailové adresy pro obnovení certifikátu a upozornění na zabezpečení, stiskněte a souhlasit s podmínkami Let’s Encrypt a no nebo yes sdílet nebo nesdílet e-mailovou adresu partnerům Let’s Encrypt, jak je znázorněno na níže uvedené ukázce.

Uvědomte si, že klient certbot dokáže detekovat falešnou e-mailovou adresu a nedovolí vám pokračovat ve generování certifikátu, dokud nezadáte skutečnou e-mailovou adresu.

Ukázka Cerbot:
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel):[email protected]  #A fake email address will be detected
There seem to be problems with that address. Enter email address (used for
urgent renewal and security notices)  If you really want to skip this, you can
run the client with --register-unsafely-without-email but make sure you then
backup your account key from /etc/letsencrypt/accounts   (Enter 'c' to cancel):[email protected]

-------------------------------------------------------------------------------
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf. You must agree
in order to register with the ACME server at
https://acme-v01.api.letsencrypt.org/directory
-------------------------------------------------------------------------------
(A)gree/(C)ancel: a ------------------------------------------------------------------------------- Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about EFF and our work to encrypt the web, protect its users and defend digital rights. ------------------------------------------------------------------------------- (Y)es/(N)o: n Obtaining a new certificate Performing the following challenges: http-01 challenge for www.domain.com Using the webroot path /usr/local/www/nginx/ for all unmatched domains. Waiting for verification... Cleaning up challenges IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /usr/local/etc/letsencrypt/live/www.yourdomain.com/fullchain.pem. Your cert will expire on 2017-12-28. 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 /usr/local/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

Krok 4:Aktualizujte certifikáty Nginx TLS

13. Umístění získaných certifikátů a klíčů Let’s Encrypt ve FreeBSD je /usr/local/etc/letsencrypt/live/www.yourdomain.com/ systémová cesta. Příkaz Issue ls, aby se zobrazily součásti vašeho certifikátu Let’s Encrypt:soubor řetězce, soubor fullchain, soukromý klíč a soubor certifikátu, jak ukazuje následující příklad.

# ls /usr/local/etc/letsencrypt/live/www.yourdomain.com/

14. Chcete-li nainstalovat certifikáty Let's Encrypt pro vaši doménu na webový server Nginx, otevřete hlavní konfigurační soubor Nginx nebo konfigurační soubor pro server Nginx TLS, pokud se jedná o samostatný soubor, a upravte níže uvedené řádky tak, aby odrážely cestu k vydaným certifikátům let's Encrypt. jak je znázorněno níže.

# nano /usr/local/etc/nginx/nginx.conf

Aktualizujte následující řádky, aby vypadaly jako v této ukázce:

ssl_certificate "/usr/local/etc/letsencrypt/live/www.yourdomain.com/cert.pem";
	ssl_certificate_key "/usr/local/etc/letsencrypt/live/www.yourdomain.com/privkey.pem";

15. Také v případě, že řádek ssl_dhparam je přítomen v Nginx SSL konfiguraci, měli byste vygenerovat nový 2048 bit Diffie–Hellman pomocí následujícího příkazu:

# openssl dhparam –out /usr/local/etc/nginx/dhparam.pem 2048 

16. Nakonec, abyste mohli aktivovat konfiguraci Nginx TLS, nejprve zkontrolujte globální konfiguraci Nginx na možné syntaktické chyby a poté restartujte službu Nginx, aby se použila konfigurace SSL vydáním následujících příkazů.

# nginx -t
# service nginx restart

17. Potvrďte, zda je démon Nginx vázán na 443 port vydáním následujících příkazů, které mohou vypsat všechny otevřené síťové zásuvky v systému ve stavu naslouchání.

# netstat -an -p tcp| grep LISTEN
# sockstat -4 

18. Adresu své domény můžete také navštívit prostřednictvím HTTPS otevřete prohlížeč a zadejte následující adresu, abyste potvrdili, že certifikáty Let’s Encrypt fungují podle očekávání. Protože používáte certifikáty vygenerované platnou certifikační autoritou, neměla by se v prohlížeči zobrazovat žádná chyba.

https://www.yourdomain.com

19. Nástroj Openssl vám také může pomoci najít informace o certifikátu získaném od Let’s Encrypt CA spuštěním příkazu s následujícími možnostmi.

# openssl s_client -connect www.yourdomain.com:443

V případě, že chcete přinutit Nginx, aby směroval všechny požadavky http na https přijaté pro vaši doménu na portu 80 na HTTPS , otevřete konfigurační soubor Nginx, vyhledejte direktivu serveru pro port 80 a přidejte řádek níže za příkaz server_name, jak je znázorněno v příkladu níže.

rewrite ^(.*) https://www.yourdomain.com$1 permanent;

20. Nastavení automatického obnovení certifikátu vydaného autoritou Let’s Encrypt před vypršením platnosti lze provést naplánováním úlohy cron tak, aby se spouštěla ​​jednou denně, zadáním následujícího příkazu.

# crontab -e

Cron úkol obnovit certifikát.

0 0 * * * certbot renew >> /var/log/letsencrypt.log

To je vše! Nginx nyní může vašim návštěvníkům poskytovat zabezpečené webové aplikace pomocí bezplatných certifikátů Let’s Encrypt.


FreeBSD
  1. Zabezpečte Nginx pomocí Lets Encrypt na CentOS 7

  2. Zabezpečte Nginx pomocí Let's Encrypt SSL na Debianu 10/11

  3. Jak nainstalovat Let's Encrypt SSL na Ubuntu 18.04 s Nginx

  1. Jak zabezpečit webový server Apache pomocí Let's Encrypt na RHEL 8

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

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

  1. Jak nastavit Let's Encrypt SSL certifikát s Nginx na Debian 10 / Debian 9

  2. Jak nainstalovat Drupal s Nginx a zašifrovat SSL na Debian 11

  3. Jak nainstalovat Joomla s Nginx a Let's Encrypt SSL na Debian 11