Weboldal keresés

Az Nginx biztonságossá tétele SSL-lel és titkosítással a FreeBSD-ben


Ebben az útmutatóban megvitatjuk, hogyan lehet biztonságossá tenni az Nginx webszervert FreeBSD-ben a Let's Encrypt Certificate által kínált TLS/SSL tanúsítványokkal. Hatóságra. Azt is megmutatjuk, hogyan lehet automatikusan megújítani a Lets’ Encrypt tanúsítványokat a lejárati dátum előtt.

A TLS, a Transport Layer Security mozaikszó, egy olyan protokoll, amely HTTP protokoll alatt fut, és tanúsítványokat és kulcsokat használ a csomagok és a csomagok beágyazására. titkosítja a szerver és a kliens, vagy ebben az esetben az Nginx webszerver és a kliens böngészője között kicserélt adatokat a kapcsolat biztonságossá tétele érdekében, hogy a forgalmat esetleg elfogó harmadik fél ne tudja visszafejteni a titkosítást az átvitelt.

Olvassa el még: Telepítse a Let's Encrypt for Apache alkalmazást FreeBSD-re

Az ingyenes Let's Encrypt tanúsítvány megszerzésének folyamata a FreeBSDben jelentősen leegyszerűsíthető a certboot kliens segédprogram telepítésével, amely a hivatalos Let's Encrypt kliens. tanúsítványok generálására és letöltésére.

Követelmények

  1. Telepítse az FBEMP-t (Nginx, MariaDB és PHP) a FreeBSD-ben

1. lépés: Konfigurálja az Nginx TLS/SSL-t

1. Alapértelmezés szerint a TLS/SSL szerverkonfiguráció nincs engedélyezve a FreeBSD-ben, mert a TLS szerver blokkolja az utasításokat. megjegyzéssel vannak ellátva az Nginx alapértelmezett konfigurációs fájlban.

A TLS szerver Nginxben való aktiválásához nyissa meg az nginx.conf konfigurációs fájlt, keresse meg azt a sort, amely meghatározza az kezdetét. SSLszervert, és frissítse a teljes blokkot az alábbi minta szerint.

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

Nginx HTTPS blokkrészlet:

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;
        }	
    }

A fenti blokk az SSL blokkon kívül tartalmaz néhány utasítást a gzip tömörítés és a FastCGI Process Manager engedélyezésére, amelyek a PHP kód továbbítására szolgálnak a PHP-FPM< számára. átjárót dinamikus webalkalmazások futtatásához.

Miután hozzáadta a fenti kódot az Nginx fő konfigurációs fájlhoz, ne indítsa újra a démont, és ne alkalmazza a beállításokat, mielőtt telepítené és megszerezné a Titkosítsuk tanúsítványt a domainjéhez.

2. lépés: Telepítse a Certbot klienst a FreeBSD-ben

2. A Let's Encrypt certbot kliens segédprogram telepítése a FreeBSD-ben a py-certbot forráskódjának letöltésével és helyi fordításával történik. az alábbi parancsokat.

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

3. A py-certbot segédprogram fordítása sok időt vesz igénybe egy normál bináris csomag telepítéséhez képest. Ez idő alatt egy sor függőséget le kell tölteni helyileg a FreeBSD-ben.

Ezenkívül egy sor prompt jelenik meg a képernyőn, amelyek megkövetelik, hogy válassza ki, milyen csomagokat használjon a fordítás során az egyes függőségekhez. Az első képernyőn válassza ki a következő eszközöket a [szóköz] billentyű lenyomásával a python27 függőség összeállításához, az alábbi képen látható módon.

  • IPV6
  • LIBFFI
  • NLS
  • PYMALLOC
  • SZÁLAK
  • UCS4 Unicode támogatáshoz

4. Ezután válassza a DOCS és a THREADS lehetőséget a gettext-tools függőséghez, majd nyomja meg az OK gombot. > folytassa az alábbi képen látható módon.

5. A következő képernyőn hagyja letiltva a TESZTEK opciót a libffi-3.2.1 esetén, majd nyomja meg az OK gombot az áthelyezéshez. további.

6. Ezután nyomja meg a szóköz billentyűt a DOCS kiválasztásához a py27-enum34 függőséghez, amely telepíti az ehhez tartozó dokumentációt. eszközt, és nyomja meg az OK gombot a folytatáshoz, az alábbi képernyőképen látható módon.

7. Végül a [szóköz] billentyű lenyomásával és az OK gomb megnyomásával válassza ki a példa minták telepítését a py27-openssl függőséghez. > a py-certbot kliens fordítási és telepítési folyamatának befejezéséhez.

8. A py-certbot segédprogram fordításának és telepítésének befejezése után futtassa az alábbi parancsot, hogy frissítse az eszközt a csomag legújabb verziójára, amint azt a képernyőképek alatt.

pkg install py27-certbot

9. Bizonyos problémák elkerülése érdekében előfordulhat, hogy ingyenes Titkosítsuk tanúsítvány beszerzése közben, a leggyakoribb hiba a „pkg_resources.DistributionNotFound” , győződjön meg arról, hogy a következő két függőség is jelen van a rendszerben: py27-salt és py27-acme.

pkg install py27-salt
pkg install py27-acme

3. lépés: Telepítse a Let’s Encrypt Certificate for Nginx programot FreeBSD-re

10. Annak érdekében, hogy egy Let's Encrypt önálló tanúsítványt szerezzen a domainjéhez, futtassa a következő parancsot, és adja meg a domain nevet és az összes aldomaint, amelyhez tanúsítványt szeretne szerezni a -d zászló.

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

11. A tanúsítvány generálásakor meg kell adnia e-mail címét, és el kell fogadnia a Let’s Encrypt szolgáltatási feltételeit. A jóváhagyáshoz és a folytatáshoz írja be az a billentyűzetet, és a rendszer megkérdezi, hogy hajlandó-e megosztani e-mail címét a Let’s Encrypt partnerekkel.

Ha nem szeretné megosztani e-mail címét, írja be a no szót a promptba, és nyomja meg az [enter] billentyűt a folytatáshoz. Miután sikeresen megszerezte a domain tanúsítványait, néhány fontos megjegyzést fog kapni, amelyek tájékoztatják, hogy a tanúsítványok hol vannak a rendszerben, és mikor járnak le.

12. Ha Let's Encrypt tanúsítványt szeretne beszerezni a „webroot” beépülő modul használatával, hozzáadja a domainhez tartozó Nginx-szerver webroot könyvtárát , adja ki a következő parancsot a --webroot és a -w jelzőkkel. Alapértelmezés szerint, ha nem módosította az Nginx webroot elérési útját, akkor annak a /usr/local/www/nginx/ rendszerútvonalon kell lennie.

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

A tanúsítvány megszerzéséhez használt --strandalone eljáráshoz hasonlóan a --webroot eljárás is megkéri Önt, hogy adjon meg egy e-mail címet a tanúsítvány megújítására és a biztonsági értesítésekre, majd nyomja meg a < gombot.a, hogy elfogadja a Let's Encrypt általános szerződési feltételeit, valamint a nem vagy igen e-mail-cím megosztását vagy megtagadását a Let's Encrypt partnerek e-mail címének megosztására, az alábbi mintán látható módon.

Ne feledje, hogy a certbot kliens képes észlelni a hamis e-mail címet, és nem engedi tovább a tanúsítvány generálását, amíg meg nem ad egy valódi e-mail címet.

Cerbot minta:
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel):[email   #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 

-------------------------------------------------------------------------------
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

4. lépés: Frissítse az Nginx TLS-tanúsítványokat

13. A megszerzett Let’s Encrypt tanúsítványok és kulcsok helye a FreeBSD-ben a /usr/local/etc/letsencrypt/live/www.yourdomain.com/ rendszerútvonal. Adja ki az ls parancsot a Let’s Encrypt tanúsítvány összetevőinek megjelenítéséhez: a láncfájlt, a teljes láncfájlt, a privát kulcsot és a tanúsítványfájlt, a következő példában látható módon.

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

14. A Let's Encrypt tanúsítványok telepítéséhez a domainhez az Nginx webszerveren, nyissa meg az Nginx fő konfigurációs fájlját vagy az Nginx TLS szerver konfigurációs fájlját, ha az egy külön fájl, és módosítsa az alábbi sorokat hogy tükrözze a kiadott tanúsítványok titkosítási útvonalát az alábbiak szerint.

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

Frissítse a következő sorokat, hogy úgy nézzenek ki, mint ebben a mintában:

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. Továbbá, ha az ssl_dhparam sor megtalálható az Nginx SSL konfigurációban, akkor létre kell hoznia egy új 2048 bitet. Diffie–Hellman billentyű a következő paranccsal:

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

16. Végül az Nginx TLS-konfiguráció aktiválásához először ellenőrizze az Nginx globális konfigurációját lehetséges szintaktikai hibák tekintetében, majd indítsa újra az Nginx szolgáltatást az SSL-konfiguráció alkalmazásához a következő parancsok kiadásával.

nginx -t
service nginx restart

17. Erősítse meg, hogy az Nginx démon kötődik-e a 443-as porthoz. Ehhez adja ki a következő parancsokat, amelyek listázhatják az összes nyitott hálózati socketet a rendszerben figyelési állapotban.

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

18. A domain címét a HTTPS protokollon keresztül is meglátogathatja. Ehhez nyissa meg a böngészőt, és írja be a következő címet, hogy megbizonyosodjon arról, hogy a Let’s Encrypt tanúsítványok a várt módon működnek. Mivel Ön egy érvényes tanúsító hatóság által generált tanúsítványokat használ, a böngészőben nem jelenhet meg hiba.

https://www.yourdomain.com

19. Az Openssl segédprogram a Let’s Encrypt CA-tól kapott tanúsítványokkal kapcsolatos információk megtalálásában is segíthet, ha futtatja a parancsot a következő opciókkal.

openssl s_client -connect www.yourdomain.com:443

Ha arra szeretné kényszeríteni az Nginxet, hogy a 80-as porton a HTTPS-re irányítsa a domainjéhez érkezett összes http-ről https-kérést, nyissa meg az Nginx konfigurációs fájlját, és keresse meg a 80-as porthoz tartozó szerver direktívát. és adja hozzá az alábbi sort a szerver_neve utasítás után az alábbi példában látható módon.

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

20. A Let’s Encrypt jogosultság által kibocsátott tanúsítványok lejárata előtti automatikus megújításának beállítása úgy végezhető el, hogy ütemezi a cron-feladat napi egyszeri futtatását a következő parancs kiadásával.

crontab -e

Cron feladat a tanúsítvány megújításához.

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

Ez minden! Az Nginx mostantól biztonságos webalkalmazásokat tud kiszolgálni látogatói számára a Let’s Encrypt ingyenes tanúsítványok használatával.