In deze tutorial leer je hoe in staat stellen TLSv1.3 op NGINX. Wat betekent het TLSv 1.3, wat helpt het en waarom jij hebt nodig op de webserver als TLS kan worden geactiveerd. Voor servers met beheersysteem VestaCP (CentOS of Ubuntu) is iets moeilijker activeren TLS 1.3 dan op een cPanel-server, maar het is niet onmogelijk.
Inhoud
Waarom is het beter? TLS 1.3 dan TLS 1.2?
TLS (Transport Layer Security) een cryptografisch protocol wat zorgt voor verbindingsbeveiliging tussen de computer en een netwerk waarvan deze deel uitmaakt. TLS het wordt gebruikt in toepassingen zoals: email, messaging, spraak- en video-oproepen (VoIP), maar vooral bij HTTPS. Zorgen voor veilige communicatie tussen de computer of smartphone van de gebruiker en de webserver van de bezochte pagina.
TLS 1.3 biedt een hogere snelheid van het verbinden van client – server en een Bovendien beveiliging door enkele algoritmen te elimineren. De verschillen tussen TLSv1.2 en TLSv1.3.
over HTTPS, SSL (Secure Sockets Layer) Ik zei ook in andere artikelen:
- Hoe een certificaat te installeren SSL (HTTPS verbinding) voor een website die wordt gehost op een NGINX-server zonder cPanel of VestaCP
- Hercompileren OpenSSL 1.1 & NGINX 1.25 voor TLS 1.3 (CentOS 7)
- Een blog of website verplaatsen WordPress vanaf HTTP aan HTTPS (Nginx)
- Oude domeinen verwijderen Certbot certificates (Laten we het certificaat versleutelen)
Hoe activeer je TLS 1.3 op NGINX? Server met VestaCP-beheer / CentOS
Voordat je ziet hoe je activeert TLSv1.3 op NGINX, moet u rekening houden met enkele minimumvereisten voor TLS 1.3.
- NGINX 1.13.x of hoger
- Een certificaat TLS geldig
- Actieve domeinnaam met correct geconfigureerde DNS – toegankelijk zijn op internet
- Een certificaat TLS / SSL geldig. Het kan ook zijn Let’s Encrypt.
Pe VestaCP lang geleden geïnstalleerd, we hebben alleen het protocol beschikbaar TLS 1.2. Ik heb in veel tutorials gezien dat het genoeg is zoals in nginx.conf
laten we de volgende regel toevoegen voor ca TLS 1.3 te activeren:
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;
Nep. Als server CentOS met beheer VestaCP, NGINX is niet gecompileerd met de minimale versie OpenSSL 1.1.1.1, ssl_protocols TLSv1.2 TLSv1.3;
în nginx.conf
.. het helpt helemaal niet.
[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
Dus in het bovenstaande voorbeeld is Nginx 1.22.0 een compatibele versie TLS 1.3, maar de bibliotheek helpt ons niet OpenSSL 1.0.2k-fips.
Activeren TLSv1.3 op Nginx, moet u eerst de onderliggende bibliotheken en ontwikkelingspakketten installeren. Development Tools. Het loopt naar binnen CentOS 7 opdrachtregels:
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. Installeer de nieuwste versie OpenSSL
Op dit moment is de laatste versie OpenSSL 1.1.1p, maar voor zover ik heb gemerkt is er al en OpenSSL 3. Je vindt de bronnen op 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
Heel belangrijk om te rennen make test
voordat u de bibliotheek installeert. Als de test fouten bevat, voer deze dan niet uit make install
totdat de fouten zijn hersteld.
In de volgende stap maken we een back-up van het huidige binaire bestand openssl
en wij voegen toe symlink
naar de nieuwe.
mv /usr/bin/openssl /usr/bin/openssl-backup
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
în /usr/local/openssl/bin
uitvoeren ldd
om afhankelijkheden te controleren openssl. We kunnen eventueel ook de versie van controleren openssl. Opdracht 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
We hebben momenteel de nieuwste versie geïnstalleerd OpenSSL die doorstaat TLSv1.3. We kunnen de versies controleren TLS / SSL gesteund door boekhandels OpenSSL op bestelling:
[root@north bin]# openssl ciphers -v | awk '{print $2}' | sort | uniq
SSLv3
TLSv1
TLSv1.2
TLSv1.3
[root@north bin]#
Dit betekent niet dat websites worden gehost met behulp van de beheerder VestaCP ze zullen onmiddellijk hebben TLS 1.3.
Hoewel we hebben geïnstalleerd OpenSSL 1.1.1p, is Nginx gecompileerd met de oude versie 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. Hercompileer Nginx voor het systeem VestaCP
In deze stap moeten we opnieuw compileren voor OpenSSL versie van Nginx al geïnstalleerd op het systeem CentOS / VestaCP. Zoals ik hierboven al zei, in mijn geval gaat het om nginx/1.22.0. Aangezien we het hebben over een webserver die heeft VestaCP administratiesysteem, voordat we beginnen met hercompileren is het goed om een back-up te maken van de nginx-configuratiebestanden.
Maak een back-up van Nginx-stroom op het systeem VestaCP
Archiveer en bewaar de mappen ergens op de server "/etc/nginx
"En"/usr/local/vesta/nginx
'.
LOOP nginx -V
en sla bestaande modules op in een bestand.
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'
Hoe Nginx opnieuw te compileren voor een upgrade OpenSSL / CentOS 7
Ik herhaal. Als je hebt VestaCP, download de versie van Nginx die je al hebt geïnstalleerd. Je kunt alle archieven met Nginx-versies vinden 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
We hercompileren de nginx-modules:
./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
We hebben nu Nginx geïnstalleerd en gecompileerd met de nieuwste versie van OpenSSL in staat om te weerstaan 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
*als nginx al op de server was geïnstalleerd, moet u deze verwijderen. Compileren werkt niet bij nginx-upgrade.
Hoe activeer je TLSv1.3 voor domeinen op VestaCP?
In het bestand /etc/nginx/nginx.conf
we voegen de volgende regels toe:
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';
Op domeinniveau heb ik iets veranderd in de templates VestaCP en om HTTP/2 in te schakelen. Dus bij het toevoegen van een nieuw domein (example.com) met Let's Encrypt ingeschakeld, heb ik het volgende configuratiebestand voor de 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';
Voordat je nginx herstart, is het goed om eerst de configuratie te testen.
[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
Ik hoop dat je deze tutorial nuttig vindt en als je ergens mee vastzit, laat dan de probleemdetails achter in de comments.