Jak aktywować TLSv1.3 na NGINX? VestaCP / CentOS lub Ubuntu

W tym samouczku dowiesz się, jak to zrobić umożliwiać TLSv1.3 na NGINX. Co to znaczy TLSv 1.3, co to pomaga i dlaczego potrzebujesz na serwerze internetowym jako TLS można aktywować. Dla serwerów z systemem zarządzania VestaCP (CentOS lub Ubuntu) jest nieco trudniejsze aktywować TLS 1.3 niż na serwerze cPanel, ale nie jest to niemożliwe.

Dlaczego jest lepiej TLS 1.3 niż TLS 1.2?

TLS (Transport Layer Security) jest protokół kryptograficzny co zapewnia bezpieczeństwo połączenia między komputerem a siecią, której jest częścią. TLS jest używany w aplikacjach takich jak: E-mail, wiadomości, połączenia głosowe i wideo (VoIP), ale przede wszystkim o godz HTTPS. Zapewnienie bezpiecznej komunikacji między komputerem lub smartfonem użytkownika a serwerem WWW odwiedzanej strony.

TLS 1.3 oferuje wyższa prędkość połączenia klient – ​​serwer i a Ponadto bezpieczeństwo eliminując niektóre algorytmy. Różnice między TLSv1.2 i TLSv1.3.

despre HTTPS, SSL (Secure Sockets Layer) Powiedziałem też w innych artykułach:

Jak aktywować TLS 1.3 na NGINX? Serwer z zarządzaniem VestaCP / CentOS

Zanim zobaczysz, jak się aktywujesz TLSv1.3 na NGINX, musisz wziąć pod uwagę pewne minimalne wymagania TLS 1.3.

  1. NGINX 1.13.x lub nowszy
  2. Certyfikat TLS ważny
  3. Aktywna domena z odpowiednio skonfigurowanym DNS – bądź dostępna w Internecie
  4. Certyfikat TLS / SSL ważny. Może być również Let’s Encrypt.

Pe VestaCP zainstalowany dawno temu, mamy tylko protokół TLS 1.2. Widziałem w wielu tutorialach, że wystarczy jak w nginx.conf dodajmy następującą linię dla ca TLS 1.3 do aktywacji:

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;

Podróbka. Jeśli serwer CentOS z zarządzaniem VestaCP, NGINX nie został skompilowany z wersją minimalną OpenSSL 1.1.1.1, ssl_protocols TLSv1.2 TLSv1.3; în nginx.conf .. to wcale nie pomaga.

[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

Tak więc w powyższym przykładzie Nginx 1.22.0 jest kompatybilną wersją TLS 1.3, ale biblioteka nam nie pomaga OpenSSL 1.0.2k-fips.

Aktywować TLSv1.3 na Nginx, musisz najpierw zainstalować biblioteki potomne i pakiety programistyczne. Development Tools. Wchodzi CentOS 7 linii poleceń:

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. Zainstaluj najnowszą wersję OpenSSL

W tej chwili najnowsza wersja jest OpenSSL 1.1.1p, ale z tego co zauważyłem jest już i OpenSSL 3. Możesz znaleźć źródła na 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 

Bardzo ważne, aby biegać make test przed zainstalowaniem biblioteki. Jeśli test zawiera błędy, nie uruchamiaj go make install do czasu usunięcia błędów.

W kolejnym kroku wykonujemy kopię zapasową bieżącego pliku binarnego openssl i dodajemy symlink do nowego.

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

w /usr/local/openssl/bin wykonać ldd sprawdzić zależności openssl. Ewentualnie możemy też sprawdzić wersję openssl. Komenda 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

Obecnie mamy zainstalowaną najnowszą wersję OpenSSL który trwa TLSv1.3. Wersje możemy sprawdzić TLS / SSL wspierane przez księgarnie OpenSSL na zamówienie:

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

Nie oznacza to, że strony internetowe są hostowane z pomocą menedżera VestaCP będą mieli natychmiast TLS 1.3.

Chociaż zainstalowaliśmy OpenSSL 1.1.1p, Nginx jest kompilowany ze starą wersją 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. Ponownie skompiluj Nginx dla systemu VestaCP

W tym kroku musimy przekompilować dla OpenSSL wersja Nginx już zainstalowana w systemie CentOS / VestaCP. Jak pisałem wyżej, w moim przypadku chodzi o ok nginx/1.22.0. Ponieważ mówimy o serwerze WWW, który ma VestaCP systemu administracyjnego, zanim przystąpimy do rekompilacji dobrze jest wykonać kopię zapasową plików konfiguracyjnych nginx.

Wykonaj kopię zapasową prądu Nginx w systemie VestaCP

Zarchiwizuj i przechowuj gdzieś na serwerze katalogi "/etc/nginx" i "/usr/local/vesta/nginx".

URUCHOMIĆ nginx -V i zapisz istniejące moduły do ​​pliku.

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'
Jak się aktywujesz? TLSv1.3 na NGINX
Jak aktywować TLSv1.3 na NGINX

Jak ponownie skompilować Nginx w celu aktualizacji OpenSSL / CentOS 7

Powtarzam. Jeśli masz VestaCP, pobierz wersję Nginx, którą już zainstalowałeś. Możesz znaleźć wszystkie archiwa z włączonymi wersjami 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

Rekompilujemy moduły 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

Mamy teraz zainstalowany i skompilowany Nginx z najnowszą wersją OpenSSL w stanie wytrzymać 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

*jeśli nginx był już zainstalowany na serwerze, musisz go odinstalować. Kompilacja nie działa na aktualizacji nginx.

Jak aktywować TLSv1.3 dla domen w VestaCP?

W pliku /etc/nginx/nginx.conf dodajemy następujące wiersze:

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

Na poziomie domeny zmieniłem coś w szablonach VestaCP i włączyć HTTP/2. Więc kiedy dodaję nową domenę (example.com) z włączonym Let's Encrypt, mam następujący plik konfiguracyjny dla 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';

Przed ponownym uruchomieniem nginx dobrze jest najpierw przetestować jego konfigurację.

[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

Mam nadzieję, że ten samouczek okaże się pomocny, a jeśli utkniesz z czymś, zostaw szczegóły problemu w komentarzach.

Pasjonat technologii, z przyjemnością piszę na StealthSettings.com od 2006 roku. Mam bogate doświadczenie w systemach operacyjnych: macOS, Windows i Linux, a także w językach programowania oraz platformach blogowych (WordPress) i dla sklepów internetowych (WooCommerce, Magento, PrestaShop).

jak » Linux » Jak aktywować TLSv1.3 na NGINX? VestaCP / CentOS lub Ubuntu
Zostaw komentarz