Як активувати TLSv1.3 на NGINX. VestaCP pe CentOS з відкритимSSL

У цьому підручнику ми побачимо, як це зробити активувати TLSv1.3 на NGINX, давайте трохи розберемося що це означає це TLS 1.3, що допомагає і чому нам потрібно на веб-сервері як TLS бути активованим. Давайте розберемося, чому на а сервер с VestaCP (CentOS або Ubuntu) трохи складніше щоб активувати TLS 1.3 ніж на сервері cPanel. Або на сервері, де у нас немає програмного забезпечення для керування хостингом.

Чому краще TLS 1.3 ніж TLS 1.2?

TLS (Transport Layer Security) Є криптографічний протокол що забезпечує безпека підключення між комп’ютером і мережею, до якої він належить. TLS використовується в таких програмах, як: e-mail, обмін повідомленнями, голосові та відеодзвінки (VoIP), але особливо на HTTPS. Забезпечення безпечного зв’язку між комп’ютером або смартфоном користувача та веб-сервером сторінки, до якої здійснюється доступ.

TLSv1.3 пропонує більш високу швидкість з'єднання клієнт - сервер і a До того ж безпеку шляхом усунення деяких алгоритмів. Відмінності між TLSv1.2 і TLSv1.3.

Про HTTPS, SSL (Secure Sockets Layer) Я також сказав в інших статтях:

Як активувати TLSv1.3 на NGINX. Сервер с VestaCP встановлений на CentOS

Перш ніж ми побачимо, як ми активуємо TLSv1.3 на NGINX, ми повинні мати мінімальні вимоги до програмного забезпечення та бібліотек.

  1. NGINX 1.13.x або новішої версії
  2. Сертифікат TLS дійсний
  3. Активне доменне ім’я з правильно налаштованим DNS – для доступу в Інтернеті
  4. Сертифікат TLS / SSL дійсний. Це також може бути Let's Encrypt.

На VestaCP встановлено давно, у нас тільки протокол TLS 1.2. У багатьох підручниках я бачив, що цього достатньо, як у 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;

Підробка. Якщо сервер CentOS cu VestaCP, NGINX не скомпільовано з мінімальною версією OpenSSL 1.1.1.1, ssl_protocols TLSv1.2 TLSv1.3; in 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 сумісний із TLSv1.3, але бібліотека Open нам не допомагаєSSL 1.0.2k-fips.

Для активації TLSv1.3 на Nginx, ми повинні спочатку встановити дитячі бібліотеки та пакети розробки. Засоби розробки. Біжимо далі 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, але з того, що я помітив, там уже відкритоSSL 3. Ви можете знайти джерела на відкритийSSL. 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 до виправлення помилок.

На наступному кроці ми створюємо резервну копію поточного відкритого бінарного файлуssl і ми додаємо символічне посилання до нового.

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

In /usr/local/openssl/bin виконувати ldd щоб перевірити наявність відкритих залежностейssl. Ми також можемо перевірити відкриту версіюssl. Команда 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 підтримується Open librariesSSL на замовлення:

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

Це не означає, що веб-сайти розміщені на VestaCP вони отримають негайно TLS 1.3. ні macar Nginx ще не скомпільовано для нової версії OpenSSL.

Хоча у нас встановлено 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 уже встановлена pe CentOS / VestaCP. Як я вже сказав вище, в моєму випадку мова йде про nginx / 1.22.0. Маючи на увазі веб-сервер, який має VestaCP як система adminПеред початком перекомпіляції бажано створити резервні копії конфігураційних файлів 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

Повторіть. Якщо у вас є 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

Як активувати 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';

Перед вами restartу вас є 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

Сподіваюся, ви знайдете цей урок корисним, а якщо у вас щось не вийде, залиште подробиці проблеми в коментарях.

Stealth

Захоплюючись технологіями, я люблю тестувати та писати підручники про операційні системи macOS, Linux, Windows, про WordPress, WooCommerce і налаштувати веб-сервери LEMP (Linux, NGINX, MySQL і PHP). Я пишу далі StealthSettings.com з 2006 року, а через кілька років я почав писати на iHowTo.Tips підручники та новини про пристрої в екосистемі Apple: iPhone, iPad, Apple Годинник, HomePod, iMac, MacBook, AirPods та аксесуари.

залишити коментар

Ваша електронна адреса address не буде опубліковано.

Статті по темі

/ / /
Ключові слова: / / / / / /
Догори кнопки