U ovom ćete vodiču naučiti kako aktivirati TLSv1.3 na NGINX. Što to znači TLSv 1.3, što pomaže i zašto trebaš na web poslužitelju kao TLS može se aktivirati. Za poslužitelje sa sustavom upravljanja VestaCP (CentOS ili Ubuntu) malo je teže za aktiviranje TLS 1.3 nego na cPanel poslužitelju, ali nije nemoguće.
Kuprini
Zašto je bolje TLS 1.3 nego TLS 1.2?
TLS (Transport Layer Security) je kriptografski protokol koji osigurava sigurnost veze između računala i mreže čiji je dio. TLS koristi se u aplikacijama kao što su: e-mail, Poruke, glasovne i video pozive (VoIP), ali posebno kod HTTPS. Osiguravanje sigurne komunikacije između računala ili pametnog telefona korisnika i web poslužitelja stranice kojoj se pristupa.
TLS 1.3 nudi a veća brzina povezivanja klijent – server i a Štoviše sigurnost eliminacijom nekih algoritama. Razlike između TLSv1.2 i TLSv1.3.
Despre HTTPS, SSL (Secure Sockets Layer) Također sam rekao u drugim člancima:
- Kako instalirati certifikat SSL (HTTPS Veza) za web mjesto smješteno na NGINX poslužitelju bez cPanela ili VestaCP
- Ponovno kompajlirati OpenSSL 1.1 & NGINX 1.25 za TLS 1.3 (CentOS 7)
- Kako premjestiti blog ili web stranicu WordPress od HTTP-a dalje HTTPS (Nginx)
- Izbrišite stare domene Certbot certificates (Let's Encrypt Certificate)
Kako aktivirati TLS 1.3 na NGINX-u? Poslužitelj s upravljanjem VestaCP / CentOS
Prije nego što vidite kako aktivirate TLSv1.3 na NGINX-u, morate uzeti u obzir neke minimalne zahtjeve TLS 1.3.
- NGINX 1.13.x ili noviji
- Potvrda TLS važeći
- Naziv aktivne domene s pravilno konfiguriranim DNS-om – biti dostupan na internetu
- Potvrda TLS / SSL važeći. Također može biti Let’s Encrypt.
Pe VestaCP instaliran davno, imamo samo protokol dostupan TLS 1.2. Vidio sam u mnogim tutorijalima da je dovoljno kao u nginx.conf
dodajmo sljedeći redak za ca TLS 1.3 koji se treba aktivirati:
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žna. Ako server CentOS s upravom VestaCP, NGINX nije kompajliran s minimalnom verzijom OpenSSL 1.1.1.1, ssl_protocols TLSv1.2 TLSv1.3;
în nginx.conf
.. ništa ne pomaže.
[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
Dakle, u gornjem primjeru Nginx 1.22.0 je kompatibilna verzija TLS 1.3, ali knjižnica nam ne pomaže OpenSSL 1.0.2k-fips.
Za aktiviranje TLSv1.3 na Nginxu, prvo morate instalirati dječje biblioteke i razvojne pakete. Development Tools. Ulazi CentOS 7 naredbenih linija:
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. Instalirajte najnoviju verziju OpenSSL
Trenutno je najnovija verzija OpenSSL 1.1.1p, ali koliko sam primijetio već postoji i OpenSSL 3. Izvore možete pronaći 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
Vrlo važno trčati make test
prije instaliranja knjižnice. Ako test ima pogreške, nemojte ga pokretati make install
dok se greške ne isprave.
U sljedećem koraku napravimo sigurnosnu kopiju trenutne binarne datoteke openssl
i dodajemo symlink
novom.
mv /usr/bin/openssl /usr/bin/openssl-backup
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
u /usr/local/openssl/bin
izvršiti ldd
za provjeru ovisnosti openssl. Eventualno možemo provjeriti i verziju openssl. Naredba 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 instaliranu najnoviju verziju OpenSSL koja podnosi TLSv1.3. Možemo provjeriti verzije TLS / SSL uz potporu knjižara OpenSSL po redu:
[root@north bin]# openssl ciphers -v | awk '{print $2}' | sort | uniq
SSLv3
TLSv1
TLSv1.2
TLSv1.3
[root@north bin]#
To ne znači da web stranice hostiraju uz pomoć upravitelja VestaCP imat će odmah TLS 1.3.
Iako smo instalirali OpenSSL 1.1.1p, Nginx je kompiliran sa starom verzijom 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 kompajlirajte Nginx za sustav VestaCP
U ovom koraku moramo ponovno kompajlirati za OpenSSL već instalirana verzija Nginxa na sustavu CentOS / VestaCP. Kao što sam već rekao, u mom slučaju radi se o nginx/1.22.0. Budući da govorimo o web poslužitelju koji ima VestaCP administrativni sustav, prije nego počnemo rekompilirati dobro je napraviti sigurnosnu kopiju nginx konfiguracijskih datoteka.
Sigurnosna kopija trenutnog Nginxa na sustavu VestaCP
Arhivirajte i držite negdje na poslužitelju direktorije "/etc/nginx
"i"/usr/local/vesta/nginx
".
TRČANJE nginx -V
i spremite postojeće module u datoteku.
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 ponovno kompajlirati Nginx za nadogradnju OpenSSL / CentOS 7
Ponavljam. Ako imate VestaCP, preuzmite verziju Nginxa koju ste već instalirali. Sve arhive s verzijama Nginxa možete pronaći 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 kompajliramo nginx module:
./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
Sada imamo instaliran Nginx i kompajliran s najnovijom verzijom OpenSSL u stanju izdrž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
*ako je nginx već instaliran na poslužitelju, morat ćete ga deinstalirati. Kompajliranje ne radi na nginx nadogradnji.
Kako aktivirati TLSv1.3 za domene na VestaCP-u?
U dosjeu /etc/nginx/nginx.conf
dodajemo sljedeće retke:
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 razini domene promijenio sam nešto u predlošcima VestaCP i omogućiti HTTP/2. Dakle, kada dodajem novu domenu (example.com) s omogućenom funkcijom Let's Encrypt, imam sljedeću konfiguracijsku datoteku 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';
Prije ponovnog pokretanja nginxa, dobro je prvo testirati njegovu konfiguraciju.
[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
Nadam se da će vam ovaj vodič biti od pomoći, a ako ste zapeli s nečim, ostavite detalje problema u komentarima.