Како се активирате? TLSв1.3 на НГИНКС-у. VestaCP / CentOS или Убунту

У овом водичу ћете научити како активирати TLSв1.3 на НГИНКС. Шта то значи TLSv 1.3, шта то помаже и зашто Потребан вам је на веб серверу као TLS може се активирати. За сервере са системом управљања VestaCP (CentOS или Убунту) је мало теже да активирате TLS 1.3 него на цПанел серверу, али то није немогуће.

Зашто је боље TLS 1.3 него TLS КСНУМКС?

TLS (Transport Layer Security) је криптографски протокол што обезбеђује сигурност везе између рачунара и мреже чији је део. TLS користи се у апликацијама као што су: емајл, Поруке, гласовне и видео позиве (VoIP), али посебно на HTTPS. Обезбеђивање безбедне комуникације између рачунара или паметног телефона корисника и веб сервера странице којој се приступа.

TLS 1.3 нуди а већа брзина повезивања клијент – сервер и а Штавише безбедност елиминисањем неких алгоритама. Разлике између TLSв1.2 и TLSвКСНУМКС.

Око HTTPS, SSL (Secure Sockets Layer) Такође сам рекао у другим чланцима:

Како се активирате? TLS 1.3 на НГИНКС-у. Сервер са управљањем VestaCP / CentOS

Пре него што видите како се активирате TLSв1.3 на НГИНКС-у, морате узети у обзир неке минималне захтеве за TLS 1.3.

  1. НГИНКС 1.13.к или новији
  2. Потврда TLS важећи
  3. Активно име домена са правилно конфигурисаним ДНС-ом – будите доступни на Интернету
  4. Потврда TLS / SSL валидан. Такође може бити Let’s Encrypt.

Pe 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 са менаџментом VestaCP, НГИНКС није компајлиран са минималном верзијом 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

Дакле, у горњем примеру Нгинк 1.22.0 је компатибилна верзија TLS 1.3, али нам библиотека не помаже OpenSSL 1.0.2k-fips.

Да активирате TLSв1.3 на Нгинк-у, прво морате да инсталирате подређене библиотеке и развојне пакете. 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, Нгинк је компајлиран са старом верзијом 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. Поново компајлирајте Нгинк за систем VestaCP

У овом кораку морамо поново да компајлирамо за OpenSSL верзија Нгинк-а је већ инсталирана на систему CentOS / VestaCP. Као што сам рекао горе, у мом случају се ради о nginx/1.22.0. Пошто је реч о веб серверу који има VestaCP систем администрације, пре него што почнемо са поновним компајлирањем, добро је направити резервну копију нгинк конфигурационих датотека.

Резервна копија Нгинк-а на систему 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'
Како се активирате? TLSв1.3 на НГИНКС
Како се активирати TLSв1.3 на НГИНКС

Како поново компајлирати Нгинк за надоградњу OpenSSL / CentOS 7

Понављам. Ако имате VestaCP, преузмите верзију Нгинк-а коју сте већ инсталирали. Можете пронаћи све архиве са укљученим верзијама Нгинк-а нгинк.орг.

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

Поново компајлирамо нгинк модуле:

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

Сада имамо инсталиран Нгинк и компајлиран са најновијом верзијом OpenSSL у стању да издржи TLSвКСНУМКС.

[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

*ако је нгинк већ инсталиран на серверу, мораћете да га деинсталирате. Компајлирање не ради на нгинк надоградњи.

Како се активирате? TLSв1.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 и да омогући ХТТП/2. Дакле, када додајем нови домен (екампле.цом) са омогућеном Лет'с Енцрипт, имам следећу конфигурациону датотеку за 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';

Пре поновног покретања нгинк-а, добро је прво тестирати његову конфигурацију.

[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.цом од 2006. Имам велико искуство у оперативним системима: macOS, Windows си Linux, али и на програмским језицима и блогерским платформама (WordPress) и за онлајн продавнице (WooCommerce, Магенто, ПрестаСхоп).

како » Linux » Како се активирате? TLSв1.3 на НГИНКС-у. VestaCP / CentOS или Убунту
Оставите коментар