Kako omogočiti TLSv1.3 na NGINX-u? VestaCP / CentOS ali Ubuntu

V tej vadnici boste izvedeli, kako aktiviranje TLSv1.3 na NGINX. Kaj to pomeni TLSv 1.3, kaj pomaga in zakaj potrebujete na spletnem strežniku kot TLS se lahko aktivira. Za strežnike s sistemom upravljanja VestaCP (CentOS ali Ubuntu) je nekoliko težje za aktiviranje TLS 1.3 kot na strežniku cPanel, ni pa nemogoče.

Zakaj je bolje TLS 1.3 kot TLS 1.2?

TLS (Transport Layer Security) je kriptografski protokol ki zagotavlja varnost povezave med računalnikom in omrežjem, katerega del je. TLS uporablja se v aplikacijah, kot so: E-naslov, Sporočila, glasovne in video klice (VoIP), predvsem pa pri HTTPS. Zagotavljanje varne komunikacije med uporabnikovim računalnikom ali pametnim telefonom in spletnim strežnikom dostopane strani.

TLS 1.3 ponuja a večja hitrost povezave odjemalec – strežnik in a Poleg varnosti z odpravo nekaterih algoritmov. Razlike med TLSv1.2 in TLSv1.3.

O HTTPS, SSL (Secure Sockets Layer) V drugih člankih sem rekel tudi:

Kako omogočiti TLS 1.3 na NGINX-u? Strežnik z upravljanjem VestaCP / CentOS

Preden vidite, kako aktivirate TLSv1.3 na NGINX, morate upoštevati nekatere minimalne zahteve TLS 1.3.

  1. NGINX 1.13.x ali novejši
  2. Potrdilo TLS veljavno
  3. Aktivno ime domene s pravilno konfiguriranim DNS – dostopno na internetu
  4. Potrdilo TLS / SSL veljaven. Lahko je tudi Let’s Encrypt.

Pe VestaCP nameščen že zdavnaj, imamo na voljo samo protokol TLS 1.2. V številnih vadnicah sem videl, da je dovolj kot v nginx.conf dodajmo naslednjo vrstico za ca TLS 1.3 za aktiviranje:

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;

Lažne. če strežnik CentOS z vodstvom VestaCP, NGINX ni bil preveden z minimalno različico OpenSSL 1.1.1.1, ssl_protocols TLSv1.2 TLSv1.3; în nginx.conf .. nič ne pomaga.

[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

V zgornjem primeru je torej Nginx 1.22.0 združljiva različica TLS 1.3, vendar nam knjižnica ne pomaga OpenSSL 1.0.2k-fips.

Za aktiviranje TLSv1.3 na Nginx, morate najprej namestiti podrejene knjižnice in razvojne pakete. Development Tools. Teče noter CentOS 7 ukaznih vrstic:

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. Namestite najnovejšo različico OpenSSL

Trenutno je najnovejša različica OpenSSL 1.1.1p, ampak kolikor sem opazil že obstaja in OpenSSL 3. Vire najdete na 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 

Zelo pomembno teči make test pred namestitvijo knjižnice. Če ima test napake, ga ne zaženite make install dokler se napake ne odpravijo.

V naslednjem koraku naredimo varnostno kopijo trenutne binarne datoteke openssl in dodajamo symlink do novega.

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

v /usr/local/openssl/bin izvršiti ldd za preverjanje odvisnosti openssl. Morebiti lahko preverimo tudi različico openssl. Ukaz 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

Trenutno imamo nameščeno zadnjo različico OpenSSL ki zdrži TLSv1.3. Lahko preverimo različice TLS / SSL podpirajo knjigarne OpenSSL po naročilu:

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

To ne pomeni, da spletne strani gostujejo s pomočjo upravitelja VestaCP bodo imeli takoj TLS 1.3.

Čeprav smo namestili OpenSSL 1.1.1p, Nginx je preveden s staro različico 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. Ponovno prevedite Nginx za sistem VestaCP

V tem koraku moramo znova prevesti za OpenSSL različica Nginx je že nameščena na sistemu CentOS / VestaCP. Kot sem rekel zgoraj, gre v mojem primeru za nginx/1.22.0. Ker govorimo o spletnem strežniku, ki ima VestaCP skrbniški sistem, preden začnemo s ponovnim prevajanjem, je dobro narediti varnostno kopijo konfiguracijskih datotek nginx.

Varnostno kopirajte trenutni Nginx v sistemu VestaCP

Arhivirajte in hranite nekje na strežniku imenike "/etc/nginx"in"/usr/local/vesta/nginx".

TECI nginx -V in shranite obstoječe module v datoteko.

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'
Kako se aktiviraš? TLSv1.3 na NGINX
Kako aktivirati TLSv1.3 na NGINX

Kako znova prevesti Nginx za nadgradnjo OpenSSL / CentOS 7

Ponavljam. Če imate VestaCP, prenesite različico Nginxa, ki jo že imate. Vse arhive z različicami Nginx najdete na 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

Ponovno prevedemo module nginx:

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

Zdaj imamo nameščen in preveden Nginx z najnovejšo različico OpenSSL sposoben zdržati 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

*če je bil nginx že nameščen na strežniku, ga boste morali odstraniti. Prevajanje ne deluje pri nadgradnji nginx.

Kako omogočiti TLSv1.3 za domene na VestaCP-u?

V datoteki /etc/nginx/nginx.conf dodamo naslednje vrstice:

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

Na ravni domene sem nekaj spremenil v predlogah VestaCP in omogočiti HTTP/2. Torej, ko dodajam novo domeno (example.com) z omogočeno funkcijo Let's Encrypt, imam naslednjo konfiguracijsko datoteko za 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';

Pred ponovnim zagonom nginxa je dobro najprej preizkusiti njegovo konfiguracijo.

[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

Upam, da vam bo ta vadnica v pomoč, in če se vam kaj zatakne, pustite podrobnosti o težavi v komentarjih.

Strasten do tehnologije, z veseljem pišem na StealthSettings.com od leta 2006. Imam bogate izkušnje s operacijskimi sistemi: macOS, Windows in Linux, ter programskimi jeziki in platformami za bloganje (WordPress) in za spletne trgovine (WooCommerce, Magento, PrestaShop).

kako » Linux » Kako omogočiti TLSv1.3 na NGINX-u? VestaCP / CentOS ali Ubuntu
Pustite komentar