SSL bilen Nginx-i nädip goramaly we FreeBSD-de şifrlemeli


Bu gollanmada, Geliň şifrlemek şahadatnamasy edarasy tarapyndan hödürlenýän TLS/SSL şahadatnamalary bilen FreeBSD-de Nginx web serwerini nädip goramalydygyny ara alyp maslahatlaşarys. Şeýle hem, möhleti gutarýança “Lets” şifrlemek şahadatnamalaryny awtomatiki täzelemegiň usullaryny görkezeris.

Transport Layer Security-iň gysgaldylan TLS, HTTP protokolyna laýyklykda işleýän we paketleri jemlemek we serwer bilen müşderiniň arasynda alyş-çalyş edilen maglumatlary şifrlemek ýa-da bu ýagdaýda Nginx web serweri bilen müşderiniň arasynda şahadatnamalary we düwmeleri ulanýan protokoldyr. Baglanyşygy üpjün etmek üçin brauzer, traffigi saklap bilýän üçünji tarapyň geçirişini açyp bilmezligi üçin.

FreeBSD-de mugt “Let Encrypt” şahadatnamasyny almak prosesi, şahadatnamalary döretmek we göçürip almak üçin ulanylýan resmi “Let Encrypt” müşderisi bolan “certboot” müşderi hyzmatyny gurmak arkaly has aňsatlaşdyrylyp bilner.

  1. FreeBD-de FBEMP (Nginx, MariaDB we PHP) stakany guruň

1-nji ädim: Nginx TLS/SSL-i sazlaň

1. Düzgüne görä, TLS/SSL serwer konfigurasiýasy FreeBSD-de işlemeýär, sebäbi TLS serwer blok jümleleri Nginx deslapky konfigurasiýa faýlynda düşündirilýär.

Nginx-de TLS serwerini işjeňleşdirmek üçin nginx.conf konfigurasiýa faýlyny açyň, SSL serweriniň başlangyjyny kesgitleýän setiri gözläň we aşakdaky nusgadaky ýaly ähli bloky täzeläň.

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

Nginx HTTPS blok bölegi:

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

Aboveokardaky blok, SSL blokundan başga-da, dinamiki web programmalaryny işletmek üçin PHP koduny PHP-FPM şlýuzasyna geçirmek üçin ulanylýan gzip gysyşyny we FastCGI Prosess Dolandyryjysyny açmak üçin käbir jümleleri öz içine alýar.

Nginx esasy konfigurasiýa faýlyna ýokardaky kody goşanyňyzdan soň, domeniňiz üçin “Geliň şifrlemek” şahadatnamasyny gurmazdan we almazdan ozal daemony täzeden açmaň ýa-da sazlamalary ulanmaň.

2-nji ädim: FreeBSD-de Certbot müşderisini guruň

2. “FreeBSD” -de “Let Encrypt certbot” müşderi programmasyny gurmak prosesi, py-certbot üçin deslapky kody göçürip almagy we aşakdaky buýruklary bermek bilen ýerli görnüşde düzmegi öz içine alýar.

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

3. Py-certbot kömekçi programmasyny düzmek, adaty ikilik paketini gurmak bilen deňeşdirilende köp wagt alýar. Bu döwürde, FreeBSD-de ýerli görnüşde düzülen birgiden garaşlylygy göçürip almaly.

Mundan başga-da, her garaşlylyk üçin kompilýasiýa wagtynda haýsy paketleriň ulanyljakdygyny saýlamagyňyzy talap edip, ekranyňyzda birnäçe teklip peýda bolar. Birinji ekranda, aşakdaky suratda görkezilişi ýaly, python27 garaşlylygyny düzmek üçin [boşluk] düwmesini basyp, aşakdaky gurallary saýlaň.

  • IPV6
  • LIBFFI
  • NLS
  • PYMALLOC
  • ÜÇÜNLER
  • Unicode goldawy üçin UCS4

4. Ondan soň, gettext-gurallara garaşlylygy üçin DOCS we THREADS saýlaň we aşakdaky suratda görkezilişi ýaly dowam etmek üçin OK basyň.

5. Indiki ekranda libffi-3.2.1 üçin TESTS opsiýasyny ýapyň we has öňe gitmek üçin OK basyň.

6. Ondan soň, bu gural üçin resminamalary gurjak py27-enum34 garaşlylygy üçin DOCS saýlamak üçin giňişlige basyň we aşakdaky skrinshotda görkezilişi ýaly dowam etmek üçin OK basyň.

7. Netijede, [giňişlik] düwmesini basyp, py27-openssl garaşlylygy üçin mysal nusgalaryny gurmagy saýlaň we py-certbot müşderisi üçin düzmek we gurnamak işini tamamlamak üçin OK basyň.

8. Py-certbot kömekçi programmasyny düzmek we gurmak prosesi gutarandan soň, aşakdaky ekran suratlarynda görkezilişi ýaly bukjanyň iň soňky wersiýasynda guraly täzelemek üçin aşakdaky buýrugy işlediň.

# pkg install py27-certbot

9. Mugt geliň şifrlemek şahadatnamasyny alanyňyzda ýüze çykyp biljek käbir meselelerden gaça durmak üçin iň köp ýaýran ýalňyşlyk\pkg_resources.DistributionNotFound, ulgamda aşakdaky iki garaşlylygyň hem bardygyna göz ýetiriň: py27-duz we py27- acme.

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

3-nji ädim: FreeBSD-de Nginx üçin şifrlemek şahadatnamasyny guruň

10. Domeniňiz üçin “Şifrlemek” özbaşdak şahadatnamasyny almak üçin aşakdaky buýrugy işlediň we domen adyny we -d baýdagyny görkezmek bilen şahadatnama almak isleýän ähli subdomenleriňizi beriň.

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

11. Şahadatnama döredilende size e-poçta salgyňyzy girizmek we “Geliň şifrlemek” hyzmat şertleri bilen razylaşmagyňyz soralar. Razy bolmak we dowam etmek üçin klawiaturadan a ýazyň we e-poçta salgyňyzy Let's Encrypt hyzmatdaşlary bilen paýlaşmak isleýärsiňizmi?

E-poçta salgyňyzy paýlaşmak islemeýän bolsaňyz, gyssagly ýagdaýda ýok sözüni ýazyň we dowam etmek üçin [enter] düwmesine basyň. Domeniňiz üçin şahadatnamalar üstünlikli alnandan soň, şahadatnamalaryň ulgamyňyzda nirede saklanýandygyny we möhleti gutaranda size möhüm bellikleri alarsyňyz.

12. Domeniňiz üçin Nginx serweriniň webroot katalogyny goşup, “webroot” pluginini ulanyp, şifrlemek şahadatnamasyny almak isleseňiz, --webroot we bilen aşakdaky buýrugy beriň. -w baýdaklary. Düzgüne görä, Nginx webroot ýoluny üýtgetmedik bolsaňyz,/usr/ýerli/www/nginx/ulgam ýolunda bolmaly.

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

Şahadatnama almak üçin --strandalone prosedurasynda bolşy ýaly, --webroot prosedurasy, şahadatnamanyň täzelenmegi we howpsuzlyk habarnamalary üçin e-poçta salgysyny bermegiňizi, basmak üçin a şertleri we şertleri şifrläliň we aşakdaky nusgada görkezilişi ýaly e-poçta salgysyny paýlaşmak ýa-da paýlaşmazlyk üçin ýok ýa-da hawa bilen ylalaşmak.

Certbot müşderisiniň galp e-poçta salgysyny tapyp biljekdigine we hakyky e-poçta salgysyny berýänçäňiz şahadatnama döretmäge ýol bermejekdigine göz ýetiriň.

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-nji ädim: Nginx TLS şahadatnamalaryny täzeläň

13. FreeBSD-de alnan şifrlemek şahadatnamalarynyň we açarlarynyň ýerleşýän ýeri /usr/local/etc/letsencrypt/live/www.yourdomain.com/ ulgam ýoludyr. “Let Encrypt” şahadatnamanyň böleklerini görkezmek üçin ls buýrugy: aşakdaky mysalda görkezilişi ýaly zynjyr faýly, doly faýl, şahsy açar we şahadatnama faýly.

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

14. Geliň, domeniňiz üçin Nginx web serwerinde şifrlemek şahadatnamalaryny gurmak üçin, aýratyn faýl bolsa, Nginx esasy konfigurasiýa faýlyny ýa-da Nginx TLS serweri üçin konfigurasiýa faýly açyň we şifrlemegiň ýoluny görkezmek üçin aşakdaky setirleri üýtgediň. aşakda görkezilişi ýaly şahadatnamalar berdi.

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

Bu nusgadaky ýaly görünmek üçin aşakdaky setirleri täzeläň:

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. Şeýle hem, ssl_dhparam setiri Nginx SSL konfigurasiýasynda bar bolsa, aşakdaky buýruk bilen täze 2048 bit Diffie - Hellman açaryny döretmeli:

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

16. Netijede, Nginx TLS konfigurasiýasyny işjeňleşdirmek üçin ilki sintaksis säwlikleri üçin Nginx global konfigurasiýasyny barlaň we aşakdaky buýruklary bermek bilen SSL konfigurasiýasyny ulanmak üçin Nginx hyzmatyny täzeden açyň.

# nginx -t
# service nginx restart

17. Nginx daemonynyň ulgamdaky ähli açylan tor rozetkalaryny diňläp bilýän aşakdaky buýruklary bermek bilen 443 portda hökmanydygyny ýa-da ýokdugyny tassyklaň.

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

18. Şeýle hem, brauzer açyp, HTTPS protokolynyň üsti bilen domen adresiňize girip bilersiňiz we Geliň şifrlemek şahadatnamalarynyň garaşylyşy ýaly işleýändigini tassyklamak üçin aşakdaky adresi ýazyp bilersiňiz. Dogry şahadatnama edarasy tarapyndan döredilen şahadatnamalary ulanýandygyňyz üçin brauzerde hiç hili ýalňyşlyk görkezilmeli däldir.

https://www.yourdomain.com

19. “Openssl” kömekçi programmasy, aşakdaky opsiýalar bilen buýrugy işledip, “Let Encrypt CA” -dan alnan şahadatnama barada maglumat tapmaga kömek edip biler.

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

Nginx-i 80-nji portdaky domeniňiz üçin alnan https haýyşlaryna HTTPS-e gönükdirmäge, Nginx konfigurasiýa faýlyny açmaga, 80-nji port üçin serwer görkezmesini tapmaga we aşakdaky mysalda görkezilişi ýaly serwer_name beýanyndan soň aşakdaky setiri goşmaga mejbur etmek isleseňiz. .

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

20. Geliň, şifrlemek guramasy tarapyndan berlen şahadatnama üçin möhleti gutarmanka awtomatik täzelenmegi gurmak, aşakdaky buýrugy bermek bilen günde bir gezek işlemek üçin kron işini meýilleşdirmek arkaly amala aşyrylyp bilner.

# crontab -e

Şahadatnamany täzelemek üçin kron meselesi.

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

Bu hemmesi! Nginx indi “Geliň şifrlemek” mugt şahadatnamalaryny ulanyp, girýänleriňize ygtybarly web programmalaryny hyzmat edip biler.