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.
Inhalt
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:
- So installieren Sie das Zertifikat SSL (HTTPS Verbindung) für eine Website, die auf einem NGINX-Server ohne cPanel oder gehostet wird VestaCP
- Neu kompilieren OpenSSL 1.1 & NGINX 1.25 für TLS 1.3 (CentOS 7)
- So verschieben Sie ein Blog oder eine Website WordPress ab HTTP HTTPS (NGIX)
- Alte Domains löschen Certbot certificates (Let's Encrypt-Zertifikat)
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.
- NGINX 1.13.x oder höher
- Ein Zertifikat TLS gültig
- Aktiver Domänenname mit ordnungsgemäß konfiguriertem DNS – im Internet erreichbar sein
- 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 OpenSSL-Abhängigkeiten zu überprüfen. Möglicherweise können wir auch die OpenSSL-Version überprüfen. 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'
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.