Kaip aktyvuoti TLSv1.3 NGINX'e? VestaCP / CentOS arba Ubuntu

Šioje pamokoje sužinosite, kaip aktyvinti TLS1.3 versija NGINX. Ką tai reiškia TLSv 1.3, kuo tai padeda ir kodėl Tau reikia žiniatinklio serveryje kaip TLS galima aktyvuoti. Serveriams su valdymo sistema VestaCP (CentOS arba Ubuntu) yra šiek tiek sunkesnis suaktyvinti TLS 1.3 nei cPanel serveryje, bet tai nėra neįmanoma.

Kodėl geriau TLS 1.3 nei TLS 1.2?

TLS (Transport Layer Security) yra kriptografinis protokolas kuri užtikrina ryšio saugumas tarp kompiuterio ir tinklo, kurio dalis jis yra. TLS jis naudojamas tokiose programose kaip: email, Žinutės, balso ir vaizdo skambučiai (VoIP), bet ypač HTTPS. Saugaus ryšio tarp vartotojo kompiuterio ar išmaniojo telefono ir atverto puslapio žiniatinklio serverio užtikrinimas.

TLS 1.3 siūlo a didesnis greitis sujungimo klientas – serveris ir a Be to saugumas pašalinus kai kuriuos algoritmus. Skirtumai tarp TLSv1.2 ir TLSv1.3.

Apie HTTPS, SSL (Secure Sockets Layer) Taip pat sakiau kituose straipsniuose:

Kaip aktyvuoti TLS 1.3 NGINX'e? Serveris su VestaCP valdymu / CentOS

Prieš pamatydami, kaip suaktyvinate TLSv1.3 NGINX, turite atsižvelgti į kai kuriuos minimalius reikalavimus TLS 1.3.

  1. NGINX 1.13.x arba naujesnė versija
  2. Sertifikatas TLS galioja
  3. Aktyvus domeno vardas su tinkamai sukonfigūruotu DNS – būkite pasiekiami internete
  4. Sertifikatas TLS / SSL galioja. Taip pat gali būti Let’s Encrypt.

Pe VestaCP įdiegtas seniai, turime tik protokolą TLS 1.2. Daugelyje vadovėlių mačiau, kad užtenka taip, kaip nurodyta nginx.conf pridėkime šią eilutę maždaug TLS 1.3, kurį reikia suaktyvinti:

server {

  listen 443 ssl http2;
  listen [::]:443 ssl http2;

  server_name example.com;
  root /var/www/example.com/public;

  ssl_certificate /path/to/your/certificate.crt;
  ssl_certificate_key /path/to/your/private.key;

  ssl_protocols TLSv1.2 TLSv1.3;

Netikras. Jeigu serveris CentOS su vadovybe VestaCP, NGINX nebuvo sudarytas su minimalia versija OpenSSL 1.1.1.1, ssl_protocols TLSv1.2 TLSv1.3; viduje nginx.conf .. tai visai nepadeda.

[root@north ~]# nginx -V
nginx version: nginx/1.22.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled

Taigi aukščiau pateiktame pavyzdyje Nginx 1.22.0 yra suderinama versija TLS 1.3, bet biblioteka mums nepadeda OpenSSL 1.0.2k-fips.

Norėdami suaktyvinti TLS1.3 versija Nginx, pirmiausia turite įdiegti antrines bibliotekas ir kūrimo paketus. Development Tools. Jis subėga CentOS 7 komandų eilutės:

yum install gcc gcc-c++ pcre-devel zlib-devel make unzip gd-devel perl-ExtUtils-Embed libxslt-devel openssl-devel perl-Test-Simple
yum groupinstall 'Development Tools'

1. Įdiekite naujausią versiją OpenSSL

Šiuo metu yra naujausia versija OpenSSL 1.1.1p, bet kiek pastebėjau yra jau ir OpenSSL 3. Šaltinius galite rasti adresu OpenSSL. Org.

cd /usr/src
wget https://www.openssl.org/source/openssl-1.1.1p.tar.gz
tar xvf openssl-1.1.1p.tar.gz 
mv openssl-1.1.1p openssl
cd openssl
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl --libdir=/lib64 shared zlib-dynamic
make -j4
make test 
make install 

Labai svarbu bėgti make test prieš diegiant biblioteką. Jei teste yra klaidų, nevykdykite make install kol bus ištaisytos klaidos.

Kitame žingsnyje sukuriame dabartinio dvejetainio failo atsarginę kopiją openssl ir pridedame symlink į naują.

mv /usr/bin/openssl /usr/bin/openssl-backup
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl

į /usr/local/openssl/bin vykdyti ldd kad patikrintų priklausomybes openssl. Taip pat galime patikrinti versiją openssl. komandą openssl version.

[root@north bin]# ldd openssl
	linux-vdso.so.1 =>  (0x00007ffd20bd7000)
	libssl.so.1.1 => /lib64/libssl.so.1.1 (0x00007fab09b62000)
	libcrypto.so.1.1 => /lib64/libcrypto.so.1.1 (0x00007fab09675000)
	libdl.so.2 => /lib64/libdl.so.2 (0x00007fab09471000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fab09255000)
	libc.so.6 => /lib64/libc.so.6 (0x00007fab08e87000)
	/lib64/ld-linux-x86-64.so.2 (0x00007fab09df5000)
[root@north bin]# openssl version
OpenSSL 1.1.1p  21 Jun 2022

Šiuo metu turime naujausią versiją OpenSSL kuris ištveria TLSv1.3. Galime patikrinti versijas TLS / SSL remia knygynai OpenSSL pagal užsakymą:

[root@north bin]# openssl ciphers -v | awk '{print $2}' | sort | uniq
SSLv3
TLSv1
TLSv1.2
TLSv1.3
[root@north bin]# 

Tai nereiškia, kad svetainės talpinamos su vadovo pagalba VestaCP jie turės iš karto TLS 1.3.

Nors mes įdiegėme OpenSSL 1.1.1p, Nginx yra sudarytas naudojant senąją versiją OpenSSL 1.0.2k-fips.

[root@north bin]# nginx -V
nginx version: nginx/1.22.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie'
[root@north bin]# openssl version
OpenSSL 1.1.1p  21 Jun 2022
[root@north bin]# 

2. Perkompiliuokite Nginx sistemai VestaCP

Šiame žingsnyje turime iš naujo kompiliuoti OpenSSL jau įdiegta Nginx versija sistemoje CentOS / VestaCP. Kaip jau sakiau aukščiau, mano atveju tai yra apie nginx/1.22.0. Kadangi mes kalbame apie žiniatinklio serverį, kuris turi VestaCP administravimo sistemą, prieš pradedant perkompiliuoti, verta pasidaryti nginx konfigūracijos failų atsarginę kopiją.

Atsarginė Nginx srovės kopija sistemoje VestaCP

Suarchyvuokite ir laikykite kur nors serveryje katalogus "/etc/nginx"ir"/usr/local/vesta/nginx".

BĖGTI nginx -V ir išsaugoti esamus modulius į failą.

configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie'
Kaip suaktyvinti? TLS1.3 versija NGINX
Kaip suaktyvinti TLS1.3 versija NGINX

Kaip iš naujo kompiliuoti „Nginx“, kad būtų galima atnaujinti OpenSSL / CentOS 7

Aš kartoju. Jei turite VestaCP, atsisiųskite jau įdiegtą Nginx versiją. Galite rasti visus archyvus su „Nginx“ versijomis nginx.org.

cd /usr/src
wget https://nginx.org/download/nginx-1.22.0.tar.gz 
tar xvf nginx-1.22.0.tar.gz
cd nginx-1.22.0

Mes iš naujo sukompiliuojame nginx modulius:

./configure --prefix=/etc/nginx \
--sbin-path=/usr/sbin/nginx \ 
--modules-path=/usr/lib64/nginx/modules \ 
--conf-path=/etc/nginx/nginx.conf \ 
--error-log-path=/var/log/nginx/error.log  \
--http-log-path=/var/log/nginx/access.log  \
--pid-path=/var/run/nginx.pid  \
--lock-path=/var/run/nginx.lock  \
--http-client-body-temp-path=/var/cache/nginx/client_temp  \
--http-proxy-temp-path=/var/cache/nginx/proxy_temp  \
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp  \
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp  \
--http-scgi-temp-path=/var/cache/nginx/scgi_temp  \
--user=nginx  \
--group=nginx  \
--with-compat  \
--with-file-aio  \
--with-threads  \
--with-http_addition_module  \
--with-http_auth_request_module  \
--with-http_dav_module  \
--with-http_flv_module  \
--with-http_gunzip_module  \
--with-http_gzip_static_module  \
--with-http_mp4_module  \
--with-http_random_index_module  \
--with-http_realip_module  \
--with-http_secure_link_module  \
--with-http_slice_module  \
--with-http_ssl_module  \
--with-http_stub_status_module  \
--with-http_sub_module  \
--with-http_v2_module  \
--with-mail  \
--with-mail_ssl_module  \
--with-stream  \
--with-stream_realip_module  \
--with-stream_ssl_module  \
--with-stream_ssl_preread_module  \
--with-openssl=/usr/src/openssl  \
--with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong  \
--param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC'  \
--with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie'
make -j4
make install

Dabar įdiegėme „Nginx“ ir sukompiliavome su naujausia versija OpenSSL galintis atlaikyti TLSv1.3.

[root@north bin]# nginx -V
nginx version: nginx/1.22.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
built with OpenSSL 1.1.1p  21 Jun 2022
TLS SNI support enabled

*jei nginx jau buvo įdiegtas serveryje, turėsite jį pašalinti. Kompiliacija neveikia nginx naujinimo metu.

Kaip aktyvuoti TLSv1.3 domenams VestaCP sistemoje?

Byloje /etc/nginx/nginx.conf pridedame šias eilutes:

ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';

Domeno lygiu kažką pakeičiau šablonuose VestaCP ir įjungti HTTP/2. Taigi, kai pridedu naują domeną (example.com) su įjungta funkcija Encrypt, turiu šį konfigūracijos failą SSL:

cat /home/vestacpuser/conf/web/example.com.nginx.ssl.conf 

server {
    listen      IP.IP.IP.IP:443 ssl http2;
    server_name example.com www.example.com;
    root        /home/vestacpuser/web/example.com/public_html;
    index       index.php index.html index.htm;
    access_log  /var/log/nginx/domains/example.com.log combined;
    access_log  /var/log/nginx/domains/example.com.bytes bytes;
    error_log   /var/log/nginx/domains/example.com.error.log error;

    ssl_certificate      /home/vestacpuser/conf/web/ssl.example.com.pem;
    ssl_certificate_key  /home/vestacpuser/conf/web/ssl.example.com.key;

....

ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';

Prieš paleidžiant nginx iš naujo, pirmiausia verta išbandyti jo konfigūraciją.

[root@north web]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@north web]# systemctl restart nginx

Tikiuosi, kad ši pamoka jums bus naudinga, o jei kažkas įstrigo, palikite išsamią informaciją apie problemą komentaruose.

Technologijų entuziastas, nuo 2006 metų su malonumu rašau „StealthSettings.com“. Turiu išsamią patirtį su operacinėmis sistemomis: macOS, „Windows“ ir „Linux“, taip pat programavimo kalbomis ir blogo platformomis („WordPress“) bei internetinės parduotuvės platformomis („WooCommerce“, „Magento“, „PrestaShop“).

kaip » Linux » Kaip aktyvuoti TLSv1.3 NGINX'e? VestaCP / CentOS arba Ubuntu
Palikite komentarą