I denne opplæringen lærer du hvordan activezi TLSv1.3 eller NGINX. Hva betyr det TLSv 1.3, hva hjelper det og hvorfor du trenger på webserver ca TLS kan aktiveres. For servere med styringssystem Vestacp (CentOS eller Ubuntu) er litt vanskeligere for å aktivere TLS 1.3 enn på en cPanel-server, men det er ikke umulig.
Innhold
Hvorfor er TLS 1.3 bedre enn TLS 1.2?
TLS (Transport Layer Security) Det er en kryptografisk protokoll som sikrer tilkoblingssikkerhet mellom datamaskinen og et nettverk den er en del av. TLS den brukes i applikasjoner som: e-post, bud, tale- og videosamtaler (VoIP), men spesielt kl HTTPS. Sikre sikker kommunikasjon mellom brukerens datamaskin eller smarttelefon og webserveren til siden som åpnes.
TLS 1.3 tilbyr en høyere hastighet klientinnlogging – server og en pluss sikkerhet ved å eliminere noen algoritmer. Forskjeller mellom TLSv1.2 og TLSv1.3.
Om HTTPS, SSL (Secure Sockets Layer) Jeg sa også i andre artikler:
- Hvordan installere SSL-sertifikat (HTTPS Connection) for et nettsted som er vert på en NGINX-server uten cPanel eller VestaCP
- RECOMPILARE OPENSSL 1.1 & Ningin 1,25 for TLS 1,3 (Centos 7)
- Hvordan flytte en WordPress-blogg eller nettsted fra HTTP til HTTPS (NGINX)
- Slett gamle domener Certbot Certificate (Let’s Encrypt Certificate)
Slik aktiverer du TLS 1.3 på NGINX. Server med VestaCP / CentOS-administrasjon
Før du ser på hvordan du aktiverer TLSv1.3 på NGINX, er det noen minimumskrav å vurdere TLS 1.3.
- NGINX 1.13.x eller nyere
- Et gyldig TLS-sertifikat
- Aktivt domenenavn med riktig konfigurert DNS – være tilgjengelig på Internett
- Et gyldig TLS/SSL-sertifikat. Det kan det også være Let’s Encrypt.
På VestaCP installert for lenge siden har vi kun protokollen tilgjengelig TLS 1.2. Jeg har sett i mange tutorials at det er nok som i nginx.conf legg til følgende linje for å aktivere TLS 1.3:
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;
Falsk. Hvis på en server CentOS cu-administrasjon Vestacp, NGINX ble ikke kompilert med minimumsversjonen OpenSSL 1.1.1.1, ssl_protocols TLSv1.2 TLSv1.3; i nginx.conf .. det hjelper ikke i det hele tatt.
[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
Så i eksemplet ovenfor er Nginx 1.22.0 kompatibel med TLS versjon 1.3, men biblioteket vårt hjelper ikke OpenSSL 1.0.2k-fips.
For å aktivere TLSv1.3 på Nginx, må du først installere barnebibliotekene og utviklingspakkene. Development Tools. Kjør kommandolinjene i CentOS 7:
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. Installer den nyeste versjonen OpenSSL
På dette tidspunktet er den nyeste versjonen OpenSSL 1.1.1p, men så vidt jeg har sett, fantes det allerede OpenSSL 3. Kildene finner du på 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
Veldig viktig å løpe make test før du installerer biblioteket. Hvis testen har feil, ikke kjør make install til feilene er rettet.
I neste trinn tar vi en sikkerhetskopi av gjeldende binærfil openssl og vi legger til symlink til den nye.
mv /usr/bin/openssl /usr/bin/openssl-backup
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
I /usr/local/openssl/bin henrette ldd for å sjekke openssl-avhengigheter. Vi kan muligens også sjekke versjonen av openssl. Kommando 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
Vi har for øyeblikket den nyeste versjonen installert OpenSSL som holder ut TLSv1.3. Vi kan sjekke versjonene TLS / SSL støttet av bokhandlere OpenSSL etter bestilling:
[root@north bin]# openssl ciphers -v | awk '{print $2}' | sort | uniq
SSLv3
TLSv1
TLSv1.2
TLSv1.3
[root@north bin]#
Dette betyr ikke at nettsteder hostes med hjelp av lederen VestaCP de vil ha umiddelbart TLS 1.3.
Selv om vi har installert OpenSSL 1.1.1p, Nginx er kompilert med den gamle versjonen 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. Kompiler Nginx på nytt for systemet VestaCP
I dette trinnet må vi rekompilere for OpenSSL versjon av Nginx allerede installert på systemet CentOS / VestaCP. Som jeg sa ovenfor, i mitt tilfelle handler det om nginx/1.22.0. Siden vi snakker om en webserver som har VestaCP administrasjonssystem, før vi begynner å rekompilere er det greit å ta en sikkerhetskopi av nginx-konfigurasjonsfilene.
Sikkerhetskopier Nginx gjeldende på systemet VestaCP
Arkiver og oppbevar katalogene et sted på serveren “/etc/nginx” og “/usr/local/vesta/nginx“.
LØP nginx -V og lagre eksisterende moduler til en fil.
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'

Hvordan rekompilere Nginx for OpenSSL / CentOS 7-oppgradering
Jeg gjentar. Hvis du har Vestacp, last ned versjonen av Nginx du allerede har installert. Du kan finne alle arkiver med Nginx-versjoner på 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
Vi rekompilerer nginx-modulene:
./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
Vi har nå Nginx installert og kompilert med den nyeste versjonen av OpenSSL kan støtte 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
*hvis nginx allerede var installert på serveren, må du avinstallere den. Kompiler fungerer ikke på nginx-oppgradering.
Slik aktiverer du TLSv1.3 for domener på VestaCP
I filen /etc/nginx/nginx.conf vi legger til følgende linjer:
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';
På domenenivå endret jeg noe i malene VestaCP og for å aktivere HTTP/2. Så når jeg legger til et nytt domene (example.com) med Let's Encrypt aktivert, har jeg følgende konfigurasjonsfil for 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';
Før du starter nginx på nytt, er det greit å teste konfigurasjonen først.
[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
Jeg håper du finner denne veiledningen nyttig, og hvis du står fast med noe, legg igjen problemdetaljene i kommentarene.