У овом водичу ћете научити како активирати 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) Такође сам рекао у другим чланцима:
- Како инсталирати сертификат SSL (HTTPS Цоннецтион) за веб локацију хостовану на НГИНКС серверу без цПанела или VestaCP
- поново компајлирати OpenSSL 1.1 & НГИНКС 1.25 фор TLS КСНУМКС (CentOS 7)
- Како преместити блог или веб локацију WordPress са ХТТП-а на HTTPS (НГИНКС)
- Избришите старе домене Certbot certificates (Хајде да шифрујемо сертификат)
Како се активирате? TLS 1.3 на НГИНКС-у. Сервер са управљањем VestaCP / CentOS
Пре него што видите како се активирате TLSв1.3 на НГИНКС-у, морате узети у обзир неке минималне захтеве за TLS 1.3.
- НГИНКС 1.13.к или новији
- Потврда TLS важећи
- Активно име домена са правилно конфигурисаним ДНС-ом – будите доступни на Интернету
- Потврда 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 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'

Како поново компајлирати Нгинк за надоградњу 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
Надам се да ће вам овај водич бити од помоћи и ако сте заглавили у нечему, оставите детаље проблема у коментарима.