Kif Tiżgura Nginx b'SSL u Ejja Encrypt fi FreeBSD


F'din il-gwida ser niddiskutu kif niżguraw is-server tal-web Nginx fi FreeBSD b'ċertifikati TLS/SSL offruti mill-Awtorità taċ-Ċertifikati Let's Encrypt. Aħna ser nuruk ukoll kif awtomatikament iġedded iċ-ċertifikati Lets’ Encrypt qabel id-data ta’ skadenza.

TLS, akronimu għal Transport Layer Security, huwa protokoll li jaħdem taħt protokoll HTTP u juża ċertifikati u ċwievet sabiex jinkapsulaw il-pakketti u jikkriptaw id-dejta skambjata bejn server u klijent, jew f'dan il-każ bejn server tal-web Nginx u klijent. browser, sabiex tiġi żgurata l-konnessjoni, sabiex parti terza, li tista' tinterċetta t-traffiku, ma tkunx tista' tiddikripta t-trażmissjoni.

Il-proċess tal-kisba ta 'ċertifikat Let's Encrypt b'xejn f'FreeBSD jista' jiġi ssimplifikat ħafna billi tiġi installata l-utilità tal-klijent certboot, li hija l-klijent uffiċjali Let's Encrypt użat għall-ġenerazzjoni u t-tniżżil ta 'ċertifikati.

  1. Installa FBEMP (Nginx, MariaDB u PHP) f'FreeBSD

Pass 1: Ikkonfigura Nginx TLS/SSL

1. B'mod awtomatiku, il-konfigurazzjoni tas-server TLS/SSL mhix attivata fi FreeBSD minħabba li d-dikjarazzjonijiet tal-blokk tas-server TLS huma kkummentati fil-fajl tal-konfigurazzjoni default Nginx.

Sabiex tattiva s-server TLS f'Nginx, iftaħ il-fajl ta 'konfigurazzjoni nginx.conf, fittex il-linja li tiddefinixxi l-bidu tas-server SSL u aġġorna l-blokk kollu biex tidher bħal fil-kampjun ta' hawn taħt.

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

Silta blokk HTTPS Nginx:

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

Il-blokk ta 'hawn fuq, minbarra l-blokk SSL, fih ukoll xi dikjarazzjonijiet biex jippermettu l-kompressjoni gzip u l-Maniġer tal-Proċess FastCGI, użati biex jgħaddu kodiċi PHP lill-portal PHP-FPM sabiex imexxu applikazzjonijiet tal-web dinamiċi.

Wara li tkun żidt il-kodiċi ta 'hawn fuq mal-fajl tal-konfigurazzjoni prinċipali ta' Nginx, terġax tibda d-daemon jew tapplika s-settings qabel ma tinstalla u tikseb ċertifikat Let's Encrypt għad-dominju tiegħek.

Pass 2: Installa Certbot Client fi FreeBSD

2. Il-proċess ta 'installazzjoni tal-utilità tal-klijent Ejja Encrypt certbot f'FreeBSD jinvolvi t-tniżżil tal-kodiċi tas-sors għal py-certbot u jikkompilah lokalment, billi toħroġ il-kmandi ta' hawn taħt.

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

3. Il-kumpilazzjoni tal-utilità py-certbot tieħu ħafna ħin meta mqabbla mal-installazzjoni ta 'pakkett binarju regolari. Matul dan iż-żmien, serje ta 'dipendenzi huma meħtieġa li jitniżżlu f'kumpilati lokalment fil-FreeBSD.

Barra minn hekk, se jidhru fuq l-iskrin tiegħek serje ta 'prompti, li jitolbuk tagħżel liema pakketti se jintużaw fil-ħin tal-kompilazzjoni għal kull dipendenza. Fl-ewwel skrin, agħżel l-għodod li ġejjin, billi tagħfas il-buttuna [spazju], għall-kompilazzjoni tad-dipendenza ta 'python27, kif muri fl-immaġni hawn taħt.

  • IPV6
  • LIBFFI
  • NLS
  • PYMALLOC
  • ĦIJIET
  • UCS4 għall-appoġġ Unicode

4. Sussegwentement, agħżel DOCS u THREADS għad-dipendenza fuq gettext-tools u agħfas OK biex tkompli kif muri fl-immaġni hawn taħt.

5. Fuq l-iskrin li jmiss ħalli l-għażla TESTIJIET diżattivata għal libffi-3.2.1 u agħfas OK biex timxi aktar.

6. Sussegwentement, agħfas l-ispazju biex tagħżel DOCS għad-dipendenza py27-enum34, li se tinstalla d-dokumentazzjoni għal din l-għodda, u agħfas OK biex tkompli, kif muri fil-screenshot hawn taħt.

7. Fl-aħħarnett, agħżel li tinstalla kampjuni ta 'eżempji għad-dipendenza py27-openssl billi tagħfas il-buttuna [spazju] u agħfas OK biex tispiċċa l-proċess ta' kumpilazzjoni u installazzjoni għall-klijent py-certbot.

8. Wara li jintemm il-proċess tal-kompilazzjoni u l-installazzjoni tal-utilità py-certbot, mexxi l-kmand ta 'hawn taħt sabiex taġġorna l-għodda fl-aħħar verżjoni tal-pakkett kif muri fil-screenshots ta' hawn taħt.

# pkg install py27-certbot

9. Sabiex jiġu evitati xi kwistjonijiet jista 'jseħħ waqt li tikseb ċertifikat Let's Encrypt b'xejn, l-iżball l-aktar komuni jkun \pkg_resources.DistributionNotFound, kun żgur li ż-żewġ dipendenzi li ġejjin huma wkoll preżenti fis-sistema tiegħek: py27-salt u py27- acme.

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

Pass 3: Installa Let's Encrypt Certificate għal Nginx fuq FreeBSD

10. Sabiex tikseb ċertifikat standalone Let's Encrypt għad-dominju tiegħek, mexxi l-kmand li ġej u agħtik l-isem tad-dominju u s-sottodominji kollha li tixtieq tikseb ċertifikati għalihom billi timplika l-marka -d.

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

11. Waqt li tiġġenera ċ-ċertifikat inti tintalab iddaħħal l-indirizz elettroniku tiegħek u taqbel mat-termini ta’ servizz Let’s Encrypt. Ittajpja a mit-tastiera biex taqbel u tkompli u tkun mistoqsi wkoll jekk intix lest li taqsam l-indirizz tal-email tiegħek mal-imsieħba Let's Encrypt.

Fil-każ li ma tridx taqsam l-indirizz tal-email tiegħek, ittajpja no kelma fil-pront u agħfas il-buttuna [enter] biex tkompli. Wara li ċ-ċertifikati għad-dominju tiegħek ikunu nkisbu b'suċċess, inti tirċievi xi noti importanti li jinfurmawk fejn iċ-ċertifikati huma maħżuna fis-sistema tiegħek u meta jiskadu.

12. Fil-każ li trid tikseb ċertifikat Let's Encrypt billi tuża l-plugin “webroot” billi żżid id-direttorju tal-webroot tas-server Nginx għad-dominju tiegħek, agħti l-kmand li ġej bil---webroot u -wbnadar. B'mod awtomatiku, jekk ma bdiltx il-mogħdija tal-webroot Nginx, għandha tkun tinsab fil-mogħdija tas-sistema /usr/local/www/nginx/.

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

Bħal fil-proċedura --strandalone għall-kisba ta' ċertifikat, il-proċedura --webroot titlob ukoll li tipprovdi indirizz elettroniku għat-tiġdid taċ-ċertifikat u avviżi ta' sigurtà, biex tagħfas a biex taqbel mat-termini u l-kundizzjonijiet Let's Encrypt u le jew iva biex taqsam jew ma taqsamx l-indirizz tal-email Ejja Kriptaġġ imsieħba kif muri fil-kampjun hawn taħt.

Kun konxju li l-klijent certbot jista 'jsib indirizz elettroniku falz u mhux se jħallik tkompli tiġġenera ċertifikat sakemm tipprovdi indirizz elettroniku reali.

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

Pass 4: Aġġorna ċ-Ċertifikati Nginx TLS

13. Il-post taċ-ċertifikati u ċ-ċwievet Ejja Encrypt miksuba fil-FreeBSD huwa /usr/local/etc/letsencrypt/live/www.yourdomain.com/ passaġġ tas-sistema. Oħroġ il-kmand ls sabiex turi l-komponenti taċ-ċertifikat Let's Encrypt tiegħek: il-fajl tal-katina, il-fajl tal-katina sħiħa, iċ-ċavetta privata u l-fajl taċ-ċertifikat, kif muri fl-eżempju li ġej.

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

14. Sabiex tinstalla ċertifikati Let's Encrypt għad-dominju tiegħek fis-server tal-web Nginx, iftaħ il-fajl tal-konfigurazzjoni prinċipali Nginx jew il-fajl tal-konfigurazzjoni għas-server Nginx TLS, f'każ li jkun fajl separat, u mmodifika l-linji ta 'hawn taħt biex jirriflettu l-mogħdija ta' ejja Encrypt ħarġu ċertifikati kif muri hawn taħt.

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

Aġġorna l-linji li ġejjin biex tidher bħal f'dan il-kampjun:

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. Ukoll, jekk il-linja ssl_dhparam tkun preżenti fil-konfigurazzjoni Nginx SSL, għandek tiġġenera ċavetta Diffie–Hellman ta' 2048 bit ġdida bil-kmand li ġej:

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

16. Fl-aħħarnett, sabiex tattiva l-konfigurazzjoni Nginx TLS, l-ewwel iċċekkja l-konfigurazzjoni globali Nginx għal żbalji ta 'sintassi possibbli u, imbagħad, terġa' tibda s-servizz Nginx biex tapplika l-konfigurazzjoni SSL billi toħroġ il-kmandi li ġejjin.

# nginx -t
# service nginx restart

17. Ikkonferma jekk daemon Nginx jorbotx fuq il-port 443 billi toħroġ il-kmandi li ġejjin li jistgħu jelenkaw is-sokits tan-netwerk miftuħa kollha fis-sistema fl-istat ta 'smigħ.

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

18. Tista 'wkoll iżżur l-indirizz tad-dominju tiegħek permezz tal-protokoll HTTPS billi tiftaħ browser u ttajpja l-indirizz li ġej sabiex tikkonferma li ċ-ċertifikati Let's Encrypt qed jaħdmu kif mistenni. Minħabba li qed tuża ċertifikati ġġenerati minn Awtorità taċ-Ċertifikati valida, l-ebda żball m'għandu jintwera fil-browser.

https://www.yourdomain.com

19. L-utilità Openssl tista 'wkoll tgħinek issib informazzjoni dwar ċertifikat miksub minn Let's Encrypt CA, billi tħaddem il-kmand bl-għażliet li ġejjin.

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

F'każ li trid iġiegħel lil Nginx jidderieġi t-talbiet kollha http to https riċevuti għad-dominju tiegħek fuq il-port 80 għal HTTPS, iftaħ il-fajl ta 'konfigurazzjoni Nginx, sib id-direttiva tas-server għall-port 80 u żid il-linja ta' hawn taħt wara d-dikjarazzjoni server_name kif muri fl-eżempju hawn taħt. .

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

20. It-twaqqif ta 'tiġdid awtomatiku għal ċertifikat maħruġ mill-awtorità Let's Encrypt qabel ma jiskadu jista' jsir billi jiġi skedat xogħol cron biex jaħdem darba kuljum billi joħroġ il-kmand li ġej.

# crontab -e

Kompitu Cron biex iġġedded iċ-ċertifikat.

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

Dak kollox! Nginx issa jista 'jservi applikazzjonijiet tal-web siguri lill-viżitaturi tiegħek billi tuża ċertifikati b'xejn Let's Encrypt.