Πώς ενεργοποιείτε το TLSV1.3 σε ninx. Vestacp / centos ή ubuntu

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

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

TLS (Transport Layer Security) Είναι ένα κρυπτογραφικό πρωτόκολλο που εξασφαλίζει ασφάλεια σύνδεσης μεταξύ του υπολογιστή και ενός δικτύου του οποίου αποτελεί μέρος. TLS χρησιμοποιείται σε εφαρμογές όπως: e-mail, αγγελιαφόρος, φωνητικές και βιντεοκλήσεις (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.

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

Ψευδής. Αν σε διακομιστή Διαχείριση cu 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.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 

Πολύ σημαντικό να τρέχεις 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 για αναβάθμιση 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

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

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

Home Η πηγή σας σε μαθήματα, χρήσιμες συμβουλές και νέα. Πώς ενεργοποιείτε το TLSV1.3 σε ninx. Vestacp / centos ή ubuntu
Αφήστε ένα σχόλιο