Ako sa aktivujete? TLSv1.3 na NGINX. VestaCP / CentOS alebo Ubuntu

V tomto návode sa dozviete ako umožniť TLSv1.3 na NGINX. Čo to znamená TLSv 1.3, čo to pomáha a prečo potrebuješ na webovom serveri ako TLS možno aktivovať. Pre servery so systémom riadenia VestaCP (CentOS alebo Ubuntu) je o niečo zložitejšia aktivovať TLS 1.3 ako na serveri cPanel, ale nie je to nemožné.

Prečo je to lepšie TLS 1.3 než TLS 1.2?

TLS (Transport Layer Security) je kryptografický protokol ktorý zabezpečuje bezpečnosť pripojenia medzi počítačom a sieťou, ktorej je súčasťou. TLS používa sa v aplikáciách ako: e-mail, messaging, hlasové hovory a videohovory (VoIP), ale najmä pri HTTPS. Zabezpečenie bezpečnej komunikácie medzi počítačom alebo smartfónom používateľa a webovým serverom navštívenej stránky.

TLS 1.3 ponúka a vyššia rýchlosť prepojenia klient – ​​server a a navyše bezpečnosť odstránením niektorých algoritmov. Rozdiely medzi TLSv1.2 a TLSv1.3.

o HTTPS, SSL (Secure Sockets Layer) Povedal som aj v iných článkoch:

Ako sa aktivujete? TLS 1.3 na NGINX. Server s manažmentom VestaCP / CentOS

Predtým, ako uvidíte, ako sa aktivujete TLSv1.3 na NGINX, musíte zvážiť niektoré minimálne požiadavky TLS 1.3.

  1. NGINX 1.13.x alebo novší
  2. Certifikát TLS platný
  3. Aktívny názov domény so správne nakonfigurovaným DNS – byť dostupný na internete
  4. Certifikát TLS / SSL platné. Tiež môže byť Let’s Encrypt.

Pe VestaCP nainštalovaný už dávno, máme k dispozícii iba protokol TLS 1.2. V mnohých tutoriáloch som videl, že stačí ako v nginx.conf pridajme nasledujúci riadok pre cca TLS 1.3, ktorý sa má aktivovať:

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;

falošný. Ak server CentOS s vedením VestaCP, NGINX nebol skompilovaný s minimálnou verziou OpenSSL 1.1.1.1, ssl_protocols TLSv1.2 TLSv1.3; v nginx.conf .. vôbec to nepomáha.

[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že vo vyššie uvedenom príklade je Nginx 1.22.0 kompatibilná verzia TLS 1.3, ale knižnica nám nepomáha OpenSSL 1.0.2k-fips.

Na aktiváciu TLSv1.3 na Nginx, musíte najprv nainštalovať podriadené knižnice a vývojové balíčky. Development Tools. Vbehne CentOS 7 príkazových riadkov:

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. Nainštalujte najnovšiu verziu OpenSSL

V súčasnosti je najnovšia verzia OpenSSL 1.1.1p, ale pokial som si vsimol tam je uz a OpenSSL 3. Zdroje nájdete 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 

Veľmi dôležité behať make test pred inštaláciou knižnice. Ak test obsahuje chyby, nespúšťajte ho make install kým sa chyby neodstránia.

V ďalšom kroku vytvoríme zálohu aktuálneho binárneho súboru openssl a pridáme symlink do nového.

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

v /usr/local/openssl/bin vykonať ldd na kontrolu závislostí openssl. Môžeme tiež skontrolovať verziu openssl. Príkaz 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

Aktuálne máme nainštalovanú najnovšiu verziu OpenSSL ktorý vydrží TLSv1.3. Môžeme skontrolovať verzie TLS / SSL podporované kníhkupectvami OpenSSL na objednávku:

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

To neznamená, že webové stránky hostované s pomocou manažéra VestaCP budú mať okamžite TLS 1.3.

Hoci sme nainštalovali OpenSSL 1.1.1p, Nginx je skompilovaný so starou verziou 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. Prekompilujte Nginx pre systém VestaCP

V tomto kroku musíme prekompilovať pre OpenSSL verzia Nginx je už nainštalovaná na systéme CentOS / VestaCP. Ako som uviedol vyššie, v mojom prípade ide o nginx/1.22.0. Keďže hovoríme o webovom serveri, ktorý má VestaCP administračný systém, predtým ako začneme s rekompiláciou, je dobré urobiť zálohu konfiguračných súborov nginx.

Zálohujte aktuálny Nginx v systéme VestaCP

Archivujte a uchovávajte niekde na serveri adresáre "/etc/nginx„a“/usr/local/vesta/nginx".

RUN nginx -V a uložiť existujúce moduly do súboru.

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'
Ako sa aktivujete? TLSv1.3 na NGINX
Ako aktivovať TLSv1.3 na NGINX

Ako prekompilovať Nginx na inováciu OpenSSL / CentOS 7

Opakujem. Ak máte VestaCP, stiahnite si verziu Nginx, ktorú už máte nainštalovanú. Všetky archívy s verziami Nginx nájdete 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

Prekompilujeme moduly 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

Teraz máme nainštalovaný Nginx a skompilovaný s najnovšou verziou OpenSSL schopný odolať 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

*ak už bol nginx nainštalovaný na serveri, budete ho musieť odinštalovať. Kompilácia nefunguje pri inovácii nginx.

Ako sa aktivujete? TLSv1.3 pre domény zapnuté VestaCP

V súbore /etc/nginx/nginx.conf pridávame nasledujúce riadky:

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 úrovni domény som niečo zmenil v šablónach VestaCP a povoliť HTTP/2. Takže pri pridávaní novej domény (example.com) s povoleným Let's Encrypt mám nasledujúci konfiguračný súbor pre 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';

Pred reštartovaním nginx je dobré najskôr otestovať jeho konfiguráciu.

[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

Dúfam, že vám tento návod pomôže a ak sa vám niečo nezdá, zanechajte podrobnosti o probléme v komentároch.

Zanietený technológiou, s radosťou píšem na StealthSettings.com od roku 2006. Mám bohaté skúsenosti s operačnými systémami: macOS, Windows a Linux, ako aj s programovacími jazykmi a platformami pre blogovanie (WordPress) a pre online obchody (WooCommerce, Magento, PrestaShop).

Ako » Linux » Ako sa aktivujete? TLSv1.3 na NGINX. VestaCP / CentOS alebo Ubuntu
Pridať komentár