Πώς ενεργοποιείτε το TLSv1.3 στο NGINX; VestaCP / CentOS ή Ubuntu

Σε αυτό το σεμινάριο θα μάθετε πώς επιτρέπουν TLSv1.3 στο NGINX. Τι σημαίνει TLSv 1.3, τι βοηθάει και γιατί χρειάζεσαι στον διακομιστή ιστού ως TLS μπορεί να ενεργοποιηθεί. Για διακομιστές με σύστημα διαχείρισης VestaCP (CentOS ή Ubuntu) είναι λίγο πιο δύσκολο να ενεργοποιείς TLS 1.3 παρά σε έναν διακομιστή cPanel, αλλά δεν είναι αδύνατο.

Γιατί είναι καλύτερα TLS 1.3 από TLS 1.2;

TLS (Transport Layer Security) είναι μια κρυπτογραφικό πρωτόκολλο που εξασφαλίζει ασφάλεια σύνδεσης μεταξύ του υπολογιστή και ενός δικτύου του οποίου αποτελεί μέρος. TLS χρησιμοποιείται σε εφαρμογές όπως: ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ, μηνυμάτων, φωνητικές και βιντεοκλήσεις (VoIP), αλλά κυρίως στο HTTPS. Διασφάλιση ασφαλούς επικοινωνίας μεταξύ του υπολογιστή ή του smartphone του χρήστη και του διακομιστή web της σελίδας στην οποία έχει πρόσβαση.

TLS 1.3 προσφέρει α μεγαλύτερη ταχύτητα σύνδεσης πελάτη – διακομιστή και α Επιπλέον ασφαλείας με την εξάλειψη ορισμένων αλγορίθμων. Οι διαφορές μεταξύ TLSv1.2 και TLSv1.3.

για HTTPS, SSL (Secure Sockets Layer) Είπα και σε άλλα άρθρα:

Πώς ενεργοποιείτε το TLS 1.3 στο NGINX; Διακομιστής με διαχείριση VestaCP / CentOS

Πριν δείτε πώς ενεργοποιείτε TLSv1.3 στο NGINX, πρέπει να λάβετε υπόψη κάποιες ελάχιστες απαιτήσεις για TLS 1.3.

  1. NGINX 1.13.x ή μεταγενέστερη έκδοση
  2. Ένα πιστοποιητικό TLS έγκυρος
  3. Ενεργό όνομα τομέα με σωστά διαμορφωμένο DNS – να είναι προσβάσιμο στο Διαδίκτυο
  4. Ένα πιστοποιητικό TLS / SSL έγκυρος. Μπορεί επίσης να είναι Let’s Encrypt.

Pe VestaCP εγκαταστάθηκε εδώ και πολύ καιρό, έχουμε μόνο το πρωτόκολλο διαθέσιμο TLS 1.2. Έχω δει σε πολλά tutorials ότι είναι αρκετό όπως στο nginx.conf ας προσθέσουμε την ακόλουθη γραμμή για ca 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;

Απομίμηση. Αν εξυπηρετητή CentOS με τη διαχείριση VestaCP, Το NGINX δεν έχει μεταγλωττιστεί με την ελάχιστη έκδοση OpenSSL 1.1.1.1, ssl_protocols TLSv1.2 TLSv1.3; σε nginx.conf .. δεν βοηθάει καθόλου.

[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

Έτσι στο παραπάνω παράδειγμα το Nginx 1.22.0 είναι συμβατή έκδοση TLS 1.3, αλλά η βιβλιοθήκη δεν μας βοηθά OpenSSL 1.0.2k-fips.

Να ενεργοποιείς TLSv1.3 στο Nginx, πρέπει πρώτα να εγκαταστήσετε τις θυγατρικές βιβλιοθήκες και τα πακέτα ανάπτυξης. Development Tools. Τρέχει μέσα 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. Εγκαταστήστε την πιο πρόσφατη έκδοση OpenSSL

Αυτή τη στιγμή είναι η πιο πρόσφατη έκδοση OpenSSL 1.1.1p, αλλά από όσο έχω παρατηρήσει υπάρχει ήδη και OpenSSL 3. Μπορείτε να βρείτε τις πηγές στο OpenSSL. Οργ.

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 

Πολύ σημαντικό να τρέχεις make test πριν εγκαταστήσετε τη βιβλιοθήκη. Εάν η δοκιμή έχει σφάλματα, μην την εκτελέσετε make install μέχρι να διορθωθούν τα λάθη.

Στο επόμενο βήμα κάνουμε ένα αντίγραφο ασφαλείας του τρέχοντος δυαδικού αρχείου openssl και προσθέτουμε symlink στο νέο.

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

σε /usr/local/openssl/bin εκτέλεση ldd για να ελέγξετε τις εξαρτήσεις openssl. Μπορούμε επίσης να ελέγξουμε την έκδοση του openssl. Εντολή 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

Αυτήν τη στιγμή έχουμε εγκατεστημένη την πιο πρόσφατη έκδοση OpenSSL που αντέχει TLSv1.3. Μπορούμε να ελέγξουμε τις εκδόσεις TLS / SSL υποστηρίζεται από βιβλιοπωλεία OpenSSL με παραγγελία:

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

Αυτό δεν σημαίνει ότι οι ιστότοποι φιλοξενούνται με τη βοήθεια του διαχειριστή VestaCP θα έχουν αμέσως TLS 1.3.

Αν και έχουμε εγκαταστήσει OpenSSL 1.1.1p, το Nginx έχει μεταγλωττιστεί με την παλιά έκδοση 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. Κάντε εκ νέου μεταγλώττιση του Nginx για το σύστημα VestaCP

Σε αυτό το βήμα πρέπει να κάνουμε εκ νέου μεταγλώττιση για OpenSSL η έκδοση του Nginx είναι ήδη εγκατεστημένη στο σύστημα CentOS / VestaCP. Όπως είπα παραπάνω, στη δική μου περίπτωση πρόκειται για nginx/1.22.0. Μιας και μιλάμε για webserver που έχει VestaCP σύστημα διαχείρισης, πριν ξεκινήσουμε την εκ νέου μεταγλώττιση, καλό είναι να κάνουμε ένα αντίγραφο ασφαλείας των αρχείων διαμόρφωσης nginx.

Δημιουργία αντιγράφων ασφαλείας του ρεύματος Nginx στο σύστημα VestaCP

Αρχειοθετήστε και κρατήστε τους καταλόγους κάπου στον διακομιστή "/etc/nginx" και "/usr/local/vesta/nginx".

ΤΡΕΞΙΜΟ nginx -V και αποθηκεύστε τις υπάρχουσες μονάδες σε ένα αρχείο.

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'
Πώς ενεργοποιείτε; TLSv1.3 στο NGINX
Πώς να ενεργοποιήσετε TLSv1.3 στο NGINX

Πώς να μεταγλωττίσετε ξανά το Nginx για αναβάθμιση OpenSSL / CentOS 7

Επαναλαμβάνω. Εάν έχετε VestaCP, κατεβάστε την έκδοση του Nginx που έχετε ήδη εγκαταστήσει. Μπορείτε να βρείτε όλα τα αρχεία με τις εκδόσεις Nginx 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

Μεταγλωττίζουμε ξανά τις ενότητες nginx:

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

Τώρα έχουμε το Nginx εγκατεστημένο και μεταγλωττισμένο με την πιο πρόσφατη έκδοση του OpenSSL ικανός να αντέξει 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

*αν το nginx ήταν ήδη εγκατεστημένο στον διακομιστή, θα χρειαστεί να το απεγκαταστήσετε. Η μεταγλώττιση δεν λειτουργεί σε αναβάθμιση nginx.

Πώς ενεργοποιείτε το TLSv1.3 για τομείς στο VestaCP;

Στο αρχείο /etc/nginx/nginx.conf προσθέτουμε τις ακόλουθες γραμμές:

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

Σε επίπεδο τομέα, άλλαξα κάτι στα πρότυπα VestaCP και για να ενεργοποιήσετε το HTTP/2. Έτσι, όταν προσθέτω έναν νέο τομέα (example.com) με ενεργοποιημένο το Let's Encrypt, έχω το ακόλουθο αρχείο διαμόρφωσης για το 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';

Πριν επανεκκινήσετε το nginx, καλό είναι να δοκιμάσετε πρώτα τη διαμόρφωσή του.

[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

Ελπίζω να βρείτε αυτό το σεμινάριο χρήσιμο και αν έχετε κολλήσει με κάτι, αφήστε τις λεπτομέρειες του προβλήματος στα σχόλια.

Παθιασμένος με την τεχνολογία, γράφω με ευχαρίστηση στο StealthSettings.com από το 2006. Έχω εκτενή εμπειρία σε λειτουργικά συστήματα: macOS, Windows και Linux, καθώς και σε γλώσσες προγραμματισμού και πλατφόρμες για blogs (WordPress) και για online καταστήματα (WooCommerce, Magento, PrestaShop).

πώς να » Linux » Πώς ενεργοποιείτε το TLSv1.3 στο NGINX; VestaCP / CentOS ή Ubuntu
Αφήστε ένα σχόλιο