Kako aktivirati TLSv1.3 na NGINX. VestaCP pe CentOS z OdpriSSL

V tej vadnici bomo videli, kako aktivirati TLSv1.3 na NGINX, da se malo razumemo kaj to pomeni ta TLS 1.3, kaj pomaga in zakaj potrebujemo na spletnem strežniku kot TLS da se aktivira. Razumejmo, zakaj na a strežnik z VestaCP (CentOS ali Ubuntu) je nekoliko težje za aktiviranje TLS 1.3 kot na strežniku cPanel. Ali na strežniku, kjer nimamo programske opreme za upravljanje gostovanja.

Zakaj je bolje TLS 1.3 kot TLS 1.2?

TLS (Transport Layer Security) Je kriptografski protokol ki zagotavlja varnost povezave med računalnikom in omrežjem, ki mu pripada. TLS se uporablja v aplikacijah, kot so: E-naslov, Sporočila, glasovne in video klice (VoIP), predvsem pa pri HTTPS. Zagotavljanje varne komunikacije med uporabnikovim računalnikom ali pametnim telefonom in spletnim strežnikom dostopane strani.

TLSv1.3 ponudbe večja hitrost povezava odjemalec - strežnik in a Poleg varnosti z odpravo nekaterih algoritmov. Razlike med TLSv1.2 in TLSv1.3.

O HTTPS, SSL (Secure Sockets Layer) V drugih člankih sem rekel tudi:

Kako aktivirati TLSv1.3 na NGINX. Strežnik z VestaCP nameščen na CentOS

Preden vidimo, kako aktiviramo TLSv1.3 na NGINX, moramo imeti prisotne minimalne programske zahteve in knjižnice.

  1. NGINX 1.13.x ali novejši
  2. Potrdilo TLS veljavno
  3. Aktivno ime domene s pravilno nastavljenim DNS - dostopno na internetu
  4. Potrdilo TLS / SSL veljaven. Lahko bi bil tudi Let's Encrypt.

Na a VestaCP nameščen že zdavnaj, imamo samo protokol TLS 1.2. V številnih vadnicah sem videl, da je dovolj kot v nginx.conf dodajmo naslednjo vrstico, ker TLS 1.3 za aktiviranje:

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;

Lažne. če strežnik CentOS cu VestaCP, NGINX ni bil preveden z najmanjšo različico OpenSSL 1.1.1.1, ssl_protocols TLSv1.2 TLSv1.3; in nginx.conf nič nam ne 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

Zato je v zgornjem primeru Nginx 1.22.0 združljiv z TLSv1.3, vendar nam odprta knjižnica ne pomagaSSL 1.0.2k-fips.

Za aktiviranje TLSv1.3 na Nginx, moramo najprej namestiti otroške knjižnice in razvojne pakete. Razvojna orodja. Tečemo naprej CentOS 7 ukaznih vrstic:

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. Namestite najnovejšo različico OpenSSL

Trenutno je najnovejša različica OpenSSL 1.1.1p, a kolikor sem opazil, že obstaja OpenSSL 3. Vire najdete na OdprtoSSL.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 

Zelo pomembno teči make test pred namestitvijo knjižnice. Če je med preizkusom prišlo do napak, ga ne zaženite make install dokler se napake ne odpravijo.

V naslednjem koraku varnostno kopiramo trenutno odprto binarno datotekossl in novemu dodamo simbolno povezavo.

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

In /usr/local/openssl/bin izvršiti ldd za preverjanje odprtih odvisnostissl. Preverite lahko tudi odprto različicossl. Ukaz 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

Trenutno imamo nameščeno najnovejšo različico OpenSSL ki podpira TLSv1.3. Lahko preverimo različice TLS / SSL podpira Open librariesSSL po naročilu:

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

To ne pomeni, da spletna mesta gostujejo na VestaCP bodo imeli takoj TLS 1.3. niti macar Nginx še ni preveden za novo različico OpenSSL.

Čeprav imamo nameščen OpenSSL 1.1.1p, Nginx je preveden s staro različico 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. Znova prevedite Nginx VestaCP

V tem koraku moramo znova prevesti za OpenSSL različica Nginx je že nameščena pe CentOS / VestaCP. Kot sem rekel zgoraj, gre v mojem primeru za nginx / 1.22.0. Gre za spletni strežnik, ki ima VestaCP kot sistem adminPred začetkom ponovnega prevajanja je dobro varnostno kopirati konfiguracijske datoteke nginx.

Trenutna varnostna kopija Nginx je vklopljena VestaCP

Arhivirajte in shranite imenike nekje na strežniku "/etc/nginx"In"/usr/local/vesta/nginx".

izvedeno nginx -V in shranite obstoječe module v datoteko.

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'
Kako aktivirati TLSv1.3 na NGINX
Kako aktivirati TLSv1.3 na NGINX

Prenesemo in prevedemo Nginx

ponovi Če imate VestaCP, prenesite različico Nginx, ki jo že imate. Vse arhive z različicami Nginx lahko najdete 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

Ponovno prevedemo module 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

Zdaj imamo Nginx nameščen in preveden z najnovejšo različico OpenSSL sposoben zdržati 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

Kako aktivirati TLSv1.3 za domene na VestaCP

V datoteki /etc/nginx/nginx.conf dodamo naslednje vrstice:

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 ravni domene sem nekaj spremenil v predlogah VestaCP in omogočiti HTTP / 2. Torej, ko dodajam novo domeno (example.com) z omogočeno funkcijo Let's Encrypt, imam naslednjo konfiguracijsko datoteko za 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 teboj restartče imate nginx, je dobro, da preden preizkusite njegovo konfiguracijo.

[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

Upam, da se vam zdi ta vadnica koristna, in če vam nekaj ne uspe, pustite podrobnosti težave v komentarjih.

Stealth

Navdušen sem nad tehnologijo, rad preizkušam in pišem vaje o operacijskih sistemih macOS, Linux, Windows, približno WordPress, WooCommerce in konfigurirajte spletne strežnike LEMP (Linux, NGINX, MySQL in PHP). pišem naprej StealthSettings.com od leta 2006, nekaj let kasneje pa sem začel pisati na iHowTo.Tips vadnice in novice o napravah v ekosistemu Apple: iPhone, iPad, Apple Ura, HomePod, iMac, MacBook, AirPods in dodatki.

Pustite Odgovori

Vaš e-poštni naslov address ne bo objavljen.

Povezani članki

/ / /
Tags: / / / / / /
Nazaj na vrh