Jak aktywować TLSv1.3 na NGINX. VestaCP pe CentOS z otwartymSSL

W tym samouczku zobaczymy jak Aktywuj TLSv1.3 na NGINX, zrozummy trochę co to znaczy to TLS 1.3, co pomaga i dlaczego potrzebujemy na serwerze internetowym jako TLS do aktywacji. Rozumiem, dlaczego na serwer z VestaCP (CentOS lub Ubuntu) jest trochę trudniejsze aktywować TLS 1.3 niż na serwerze cPanel. Lub na serwerze, na którym nie mamy oprogramowania do zarządzania hostingiem.

Dlaczego jest lepiej TLS 1.3 niż TLS 1.2?

TLS (Transport Layer Security) Czy protokół kryptograficzny co zapewnia bezpieczeństwo połączenia między komputerem a siecią, do której należy. TLS znajduje zastosowanie w aplikacjach takich jak: z opisem, wiadomości, rozmowy głosowe i wideo (VoIP), ale przede wszystkim w HTTPS. Zapewnienie bezpiecznej komunikacji między komputerem lub smartfonem użytkownika a serwerem WWW odwiedzanej strony.

TLSv1.3 oferuje wyższa prędkość klient - połączenie z serwerem 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 również w innych artykułach:

Jak aktywować TLSv1.3 na NGINX. Serwer z VestaCP zainstalowany na CentOS

Zanim zobaczymy, jak się aktywujemy TLSv1.3 na NGINX, musimy mieć minimalne wymagania programowe i obecne biblioteki.

  1. NGINX 1.13.x lub nowszy
  2. Certyfikat TLS ważny
  3. Aktywna nazwa domeny z poprawnie skonfigurowanym DNS - aby była dostępna w internecie
  4. Certyfikat TLS / SSL ważny. Może to być również Let's Encrypt.

Na VestaCP zainstalowany dawno temu, mamy tylko protokół TLS 1.2. Widziałem w wielu tutorialach, że wystarczy jak w nginx.conf dodajmy następujący wiersz, ponieważ 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 cu VestaCP, NGINX nie został skompilowany z minimalną wersją OpenSSL 1.1.1.1, ssl_protocols TLSv1.2 TLSv1.3; in nginx.conf w ogóle nam to 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

Dlatego w powyższym przykładzie Nginx 1.22.0 jest kompatybilny z TLSv1.3, ale biblioteka Open nam nie pomagaSSL 1.0.2k-fips.

Aktywować TLSv1.3 na Nginx, musimy najpierw zainstalować biblioteki dziecięce i pakiety rozwojowe. Narzędzia programistyczne. Biegniemy dalej 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 otwartaSSL 1.1.1p, ale z tego co zauważyłem jest już otwarteSSL 3. Źródła znajdziesz na OtwórzSSL. 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 podczas testu wystąpiły błędy, nie uruchamiaj make install dopóki błędy nie zostaną poprawione.

W następnym kroku tworzymy kopię zapasową bieżącego otwartego pliku binarnegossl i dodajemy dowiązanie symboliczne do nowego.

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

In /usr/local/openssl/bin wykonać ldd aby sprawdzić otwarte zależnościssl. Możemy też sprawdzić wersję otwartąssl. 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 wspierający TLSv1.3. Możemy sprawdzić wersje TLS / SSL obsługiwane przez biblioteki 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 są hostowane na VestaCP będą mieli natychmiast TLS 1.3. żaden macar Nginx nie jest jeszcze skompilowany dla nowej wersji OpenSSL.

Chociaż mamy zainstalowany OpenSSL 1.1.1p, Nginx jest skompilowany 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. Przekompiluj Nginx na VestaCP

W tym kroku musimy ponownie skompilować dla OpenSSL wersja Nginx już zainstalowana pe CentOS / VestaCP. Jak wspomniałem powyżej, w moim przypadku chodzi o nginx / 1.22.0. Będąc o serwerze internetowym, który ma VestaCP jako system adminPrzed rozpoczęciem rekompilacji dobrze jest wykonać kopię zapasową plików konfiguracyjnych nginx.

Bieżąca kopia zapasowa Nginx włączona VestaCP

Archiwizuj i przechowuj katalogi gdzieś na serwerze ”/etc/nginx"A"/usr/local/vesta/nginx".

wykonany 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 aktywować TLSv1.3 na NGINX
Jak aktywować TLSv1.3 na NGINX

Pobieramy i kompilujemy Nginx

Powtarzać. Jeśli masz VestaCP, pobierz wersję Nginx, którą już zainstalowałeś. Wszystkie archiwa z wersjami Nginx można znaleźć na 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

Jak aktywować TLSv1.3 dla domen na VestaCP

W / etc / nginx / pliknginx.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 dodając nową domenę (example.com) z włączoną opcją 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 Tobą restartmasz nginx, dobrze żeby przed testowaniem jego konfiguracji.

[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ę przydatny, a jeśli coś Ci się nie uda, zostaw szczegóły problemu w komentarzach.

Stealth

Pasjonat technologii, lubię testować i pisać tutoriale o systemach operacyjnych macOS, Linux, Windows, o WordPress, WooCommerce i konfigurowanie serwerów WWW LEMP (Linux, NGINX, MySQL i PHP). piszę dalej StealthSettings.com od 2006 roku, a kilka lat później zacząłem pisać na iHowTo.Tips tutoriale i newsy o urządzeniach w ekosystemie Apple: iPhoneiPad, Apple Oglądaj, HomePod, iMac, MacBook, AirPods i akcesoria.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.

Powiązane artykuły

/ / /
tagi: / / / / / /
Powrót do góry przycisk