Wie aktiviert man TLSv1.3 auf NGINX? VestaCP/CentOS oder Ubuntu.

In diesem Tutorial erfahren Sie, wie ermöglichen TLSv1.3 auf NGINX. Was bedeutet das TLSv 1.3, was hilft es und warum du brauchst auf dem Webserver als TLS aktiviert werden kann. Für Server mit Managementsystem VestaCP (CentOS oder Ubuntu) ist etwas schwieriger aktivieren TLS 1.3 als auf einem cPanel-Server, aber es ist nicht unmöglich.

Warum ist es besser TLS 1.3 als TLS 1.2?

TLS (Transport Layer Security) ein kryptografisches Protokoll was sicherstellt Verbindungssicherheit zwischen dem Computer und einem Netzwerk, zu dem er gehört. TLS Es wird in Anwendungen verwendet wie: E-Mail, Messaging, Sprach- und Videoanrufe (VoIP), aber vor allem bei HTTPS. Gewährleistung einer sicheren Kommunikation zwischen dem Computer oder Smartphone des Nutzers und dem Webserver der aufgerufenen Seite.

TLS 1.3 Bietet ein höhere Geschwindigkeit der Verbindung von Client – ​​Server und a Außerdem Sicherheit indem einige Algorithmen eliminiert werden. Die Unterschiede zwischen TLSv1.2 und TLSv1.3.

über HTTPS, SSL (Secure Sockets Layer) Ich habe auch in anderen Artikeln gesagt:

Wie aktiviert man TLS 1.3 auf NGINX? Server mit VestaCP-Verwaltung / CentOS.

Bevor Sie sehen, wie Sie aktivieren TLSv1.3 auf NGINX müssen Sie einige Mindestanforderungen berücksichtigen TLS 1.3.

  1. NGINX 1.13.x oder höher
  2. Ein Zertifikat TLS gültig
  3. Aktiver Domänenname mit ordnungsgemäß konfiguriertem DNS – im Internet erreichbar sein
  4. Ein Zertifikat TLS / SSL gültig. Es kann auch sein Let’s Encrypt.

Pe VestaCP vor langer Zeit installiert, wir haben nur das Protokoll zur Verfügung TLS 1.2. Ich habe in vielen Tutorials gesehen, dass es wie folgt ausreicht nginx.conf Fügen wir die folgende Zeile für ca. hinzu TLS 1.3 zu aktivieren:

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;

Gefälscht. Wenn Server CentOS mit der Geschäftsführung VestaCP, NGINX wurde nicht kompiliert mit der Mindestversion OpenSSL 1.1.1.1, ssl_protocols TLSv1.2 TLSv1.3; în nginx.conf .. es hilft überhaupt nicht.

[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

Im obigen Beispiel ist Nginx 1.22.0 also die kompatible Version TLS 1.3, aber die Bibliothek hilft uns nicht weiter OpenSSL 1.0.2k-fips.

Aktivieren TLSv1.3 auf Nginx müssen Sie zuerst die untergeordneten Bibliotheken und Entwicklungspakete installieren. Development Tools. Es läuft ein CentOS 7 Befehlszeilen:

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. Installieren Sie die neueste Version OpenSSL

Zu diesem Zeitpunkt ist die neueste Version OpenSSL 1.1.1p, aber soweit ich es mitbekommen habe, gibt es bereits und OpenSSL 3. Die Quellen finden Sie auf OpenSSL.org €XNUMX.

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 

Sehr wichtig zum Laufen make test bevor Sie die Bibliothek installieren. Wenn der Test Fehler aufweist, führen Sie ihn nicht aus make install bis die Fehler behoben sind.

Im nächsten Schritt erstellen wir ein Backup der aktuellen Binärdatei openssl und wir fügen hinzu symlink zum neuen.

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

In /usr/local/openssl/bin ausführen ldd um Abhängigkeiten zu prüfen openssl. Möglicherweise können wir auch die Version von überprüfen openssl. Befehl 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

Wir haben derzeit die neueste Version installiert OpenSSL was Bestand hat TLSv1.3. Wir können die Versionen überprüfen TLS / SSL unterstützt durch Buchhandlungen OpenSSL nach Reienfolge:

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

Dies bedeutet nicht, dass Websites mit Hilfe des Managers gehostet werden VestaCP sie werden sofort haben TLS 1.3.

Obwohl wir installiert haben OpenSSL 1.1.1p, Nginx wird mit der alten Version kompiliert 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. Kompilieren Sie Nginx für das System neu VestaCP

In diesem Schritt müssen wir neu kompilieren OpenSSL Version von Nginx bereits installiert auf dem System CentOS / VestaCP. Wie ich oben sagte, geht es in meinem Fall um nginx/1.22.0. Da es sich um einen Webserver handelt, der dies getan hat VestaCP Bevor wir mit der Neukompilierung beginnen, empfiehlt es sich, eine Sicherungskopie der Nginx-Konfigurationsdateien zu erstellen.

Sichern Sie Nginx aktuell auf dem System VestaCP

Archivieren Sie die Verzeichnisse und bewahren Sie sie irgendwo auf dem Server auf./etc/nginx"Und"/usr/local/vesta/nginx".

LAUFEN nginx -V und speichern Sie vorhandene Module in einer Datei.

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'
Wie aktivierst du? TLSv1.3 auf NGINX
So aktivieren Sie TLSv1.3 auf NGINX

So kompilieren Sie Nginx für ein Upgrade neu OpenSSL / CentOS 7

Ich wiederhole. Wenn Sie haben VestaCP, laden Sie die Version von Nginx herunter, die Sie bereits installiert haben. Sie können alle Archive mit Nginx-Versionen finden 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

Wir kompilieren die Nginx-Module neu:

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

Wir haben jetzt Nginx installiert und mit der neuesten Version von kompiliert OpenSSL standhalten können 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

*Wenn Nginx bereits auf dem Server installiert war, müssen Sie es deinstallieren. Kompilieren funktioniert beim Nginx-Upgrade nicht.

Wie aktiviert man TLSv1.3 für Domänen in VestaCP?

In der Datei /etc/nginx/nginx.conf Wir fügen die folgenden Zeilen hinzu:

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

Auf Domänenebene habe ich etwas an den Vorlagen geändert VestaCP und um HTTP/2 zu aktivieren. Wenn ich also eine neue Domain (example.com) mit aktiviertem Let's Encrypt hinzufüge, habe ich die folgende Konfigurationsdatei für 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';

Bevor Sie Nginx neu starten, sollten Sie zunächst die Konfiguration 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

Ich hoffe, dass Sie dieses Tutorial hilfreich finden und wenn Sie bei etwas nicht weiterkommen, hinterlassen Sie die Problemdetails in den Kommentaren.

Technikbegeistert, schreibe ich seit 2006 gerne auf StealthSettings.com. Ich habe reichhaltige Erfahrung in Betriebssystemen: macOS, Windows und Linux, sowie in Programmiersprachen und Blogging-Plattformen (WordPress) und für Online-Shops (WooCommerce, Magento, PrestaShop).

So erreichen » Linux » Wie aktiviert man TLSv1.3 auf NGINX? VestaCP/CentOS oder Ubuntu.
Hinterlasse einen Kommentar