Sellest õpetusest saate teada, kuidas võimaldama TLSv1.3 NGINX-is. Mida see tähendab TLSv 1.3, mis see aitab ja miks sa vajad veebiserveris kui TLS saab aktiveerida. Haldussüsteemiga serveritele VestaCP (CentOS või Ubuntu) on natuke keerulisem aktiveerimiseks TLS 1.3 kui cPaneli serveris, kuid see pole võimatu.
Kupriinid
Miks on parem TLS 1.3 kui TLS 1.2?
TLS (Transport Layer Security) on krüptograafiline protokoll mis tagab ühenduse turvalisus arvuti ja võrgu vahel, mille osa see on. TLS seda kasutatakse sellistes rakendustes nagu: e-mail, Sõnumid, hääl- ja videokõned (VoIP), kuid eriti kell HTTPS. Turvalise side tagamine kasutaja arvuti või nutitelefoni ja ligipääsetava lehe veebiserveri vahel.
TLS 1.3 pakub a suurem kiirus kliendi – serveri ja a Lisaks turvalisuse kõrvaldades mõned algoritmid. Erinevused vahel TLSv1.2 ja TLSv1.3.
Umbes HTTPS, SSL (Secure Sockets Layer) Ma ütlesin ka teistes artiklites:
- Kuidas sertifikaati installida SSL (HTTPS Ühendus) veebisaidi jaoks, mida hostitakse NGINX-serveris ilma cPanelita või VestaCP
- uuesti kompileerida OpenSSL 1.1 ja NGINX 1.25 jaoks TLS 1.3 (CentOS 7)
- Kuidas teisaldada ajaveebi või veebisaiti WordPress alates HTTP-st HTTPS (Nginx)
- Kustutage vanad domeenid Certbot certificates (Krüpteerime sertifikaadi)
Kuidas aktiveerida TLS 1.3 NGINX-is? Server VestaCP haldusega / CentOS
Enne kui näete, kuidas aktiveerite TLSv1.3 NGINX-i puhul peate arvestama mõningate miinimumnõuetega TLS 1.3.
- NGINX 1.13.x või uuem
- Sertifikaat TLS kehtiv
- Aktiivne domeeninimi õigesti konfigureeritud DNS-iga – olema Internetis juurdepääsetav
- Sertifikaat TLS / SSL kehtiv. See võib ka olla Let’s Encrypt.
Pe VestaCP installitud kaua aega tagasi, meil on saadaval ainult protokoll TLS 1.2. Olen näinud paljudes õpetustes, et sellest piisab, nagu see on nginx.conf
lisame järgmise rea ca TLS 1.3 aktiveeritakse:
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;
Võlts. Kui server CentOS koos juhtkonnaga VestaCP, NGINX ei ole koostatud minimaalse versiooniga OpenSSL 1.1.1.1, ssl_protocols TLSv1.2 TLSv1.3;
aastal nginx.conf
.. see ei aita üldse.
[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
Nii et ülaltoodud näites on Nginx 1.22.0 ühilduv versioon TLS 1.3, aga raamatukogu meid ei aita OpenSSL 1.0.2k-fips.
Aktiveerimiseks TLSv1.3 Nginxi puhul peate esmalt installima alamteegid ja arenduspaketid. Development Tools. See jookseb sisse CentOS 7 käsurida:
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. Installige uusim versioon OpenSSL
Praegu on uusim versioon OpenSSL 1.1.1p, aga nii palju kui mina olen märganud on juba ja OpenSSL 3. Allikad leiate aadressilt 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
Väga oluline joosta make test
enne raamatukogu installimist. Kui testis on vigu, ärge käivitage make install
kuni vead on parandatud.
Järgmises etapis teeme praegusest binaarfailist varukoopia openssl
ja lisame symlink
uuele.
mv /usr/bin/openssl /usr/bin/openssl-backup
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
sisse /usr/local/openssl/bin
hukata ldd
sõltuvuste kontrollimiseks openssl. Võimalik, et saame kontrollida ka versiooni openssl. Käsk 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
Meil on praegu installitud uusim versioon OpenSSL mis vastu peab TLSv1.3. Saame kontrollida versioone TLS / SSL toetavad raamatupoed OpenSSL tellimuse järgi:
[root@north bin]# openssl ciphers -v | awk '{print $2}' | sort | uniq
SSLv3
TLSv1
TLSv1.2
TLSv1.3
[root@north bin]#
See ei tähenda, et veebisaite hostitakse halduri abiga VestaCP saavad kohe TLS 1.3.
Kuigi oleme installinud OpenSSL 1.1.1p, Nginx on koostatud vana versiooniga 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. Kompileerige Nginx süsteemi jaoks uuesti VestaCP
Selles etapis peame uuesti kompileerima OpenSSL Nginxi versioon on juba installitud süsteemis CentOS / VestaCP. Nagu ma eespool ütlesin, on minu puhul tegemist umbes nginx/1.22.0. Kuna me räägime veebiserverist, millel on VestaCP haldussüsteemi, enne kui hakkame uuesti kompileerima, on hea teha nginxi konfiguratsioonifailidest varukoopia.
Nginxi voolu varundamine süsteemis VestaCP
Arhiveerige ja hoidke kataloogid kuskil serveris "/etc/nginx
"ja"/usr/local/vesta/nginx
".
JOOKSE nginx -V
ja salvestage olemasolevad moodulid faili.
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'
Kuidas Nginxi uuendamiseks uuesti kompileerida OpenSSL / CentOS 7
Ma kordan. Kui teil on VestaCP, laadige alla Nginxi versioon, mille olete juba installinud. Leiate kõik Nginxi versioonidega arhiivid 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
Kompileerime nginxi moodulid uuesti:
./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 on nüüd installitud ja koostatud selle uusima versiooniga OpenSSL suudab vastu pidada 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
*Kui nginx oli juba serverisse installitud, peate selle desinstallima. Kompileerimine ei tööta nginxi versiooniuuendusel.
Kuidas aktiveerida TLSv1.3 domeenide jaoks VestaCP-s?
Failis /etc/nginx/nginx.conf
lisame järgmised read:
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';
Domeeni tasemel muutsin mallides midagi VestaCP ja HTTP/2 lubamiseks. Nii et kui lisan uue domeeni (example.com), kus Let's Encrypt on lubatud, on mul järgmine konfiguratsioonifail 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';
Enne nginxi taaskäivitamist on hea kõigepealt selle konfiguratsiooni testida.
[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
Loodan, et see õpetus on teile kasulik ja kui teil on midagi jänni, jätke probleemi üksikasjad kommentaaridesse.