Kā aktivizēt TLSv1.3 operētājsistēmā NGINX. VestaCP pe CentOS ar OpenSSL

Šajā apmācībā mēs redzēsim, kā aktivizēt TLSv1.3 operētājsistēmā NGINX, mazliet sapratīsim ko tas nozīmē šis TLS 1.3, kas palīdz un kāpēc mums vajag tīmekļa serverī kā TLS jāaktivizē. Sapratīsim, kāpēc uz a serveris ar VestaCP (CentOS vai Ubuntu) ir nedaudz grūtāk lai aktivizētu TLS 1.3 nekā cPanel serverī. Vai serverī, kurā mums nav mitināšanas pārvaldības programmatūras.

Kāpēc tas ir labāk TLS 1.3 nekā TLS 1.2?

TLS (Transport Layer Security) Ir kriptogrāfijas protokols kas nodrošina savienojuma drošība starp datoru un tīklu, kuram tas pieder. TLS tiek izmantots tādās lietojumprogrammās kā: e-pasts, Messaging, balss un videozvani (VoIP), bet jo īpaši plkst HTTPS. Drošas komunikācijas nodrošināšana starp lietotāja datoru vai viedtālruni un pieejamās lapas tīmekļa serveri.

TLSv1.3 piedāvā lielāks ātrums klienta - servera savienojums un a Turklāt drošība likvidējot dažus algoritmus. Atšķirības starp TLSv1.2 un TLSv1.3.

Despre HTTPS, SSL (Secure Sockets Layer) Es teicu arī citos rakstos:

Kā aktivizēt TLSv1.3 operētājsistēmā NGINX. Serveris ar VestaCP instalēta CentOS

Pirms mēs redzam, kā mēs aktivizējam TLSv1.3 operētājsistēmā NGINX, mums ir jābūt minimālām programmatūras prasībām un bibliotēkām.

  1. NGINX 1.13.x vai jaunāka versija
  2. Sertifikāts TLS derīgs
  3. Aktīvs domēna nosaukums ar pareizi konfigurētu DNS - lai būtu pieejams internetā
  4. Sertifikāts TLS / SSL derīgs. Tas varētu būt arī Let's Encrypt.

Uz VestaCP uzstādīts sen, mums ir tikai protokols TLS 1.2. Daudzās pamācībās esmu redzējis, ka pietiek ar to kā ir nginx.conf pievienosim šādu rindu, jo TLS 1.3, kas jāaktivizē:

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;

Viltus. Ja serveris CentOS cu VestaCP, NGINX nav apkopots ar minimālo Open versijuSSL 1.1.1.1, ssl_protocols TLSv1.2 TLSv1.3; in nginx.conf tas mums nemaz nepalīdz.

[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

Tāpēc iepriekš minētajā piemērā Nginx 1.22.0 ir saderīgs ar TLSv1.3, bet atvērtā bibliotēka mums nepalīdzSSL 1.0.2k fips.

Lai aktivizētu TLSv1.3 uz Nginx, mums vispirms ir jāinstalē bērnu bibliotēkas un izstrādes pakotnes. Izstrādes rīki. Mēs skrienam tālāk CentOS 7 komandrindas:

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. Instalējiet jaunāko Open versijuSSL

Šajā laikā jaunākā versija ir atvērtaSSL 1.1.1p, bet cik es pamanīju tur jau ir OpenSSL 3. Avotus varat atrast vietnē atvērtsSSL. 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 

Ļoti svarīgi skriet make test pirms bibliotēkas instalēšanas. Ja pārbaudes laikā radās kļūdas, nepalaidiet make install līdz kļūdas tiek izlabotas.

Nākamajā darbībā mēs dublējam pašreizējo atvērto bināro failussl un mēs pievienojam simbolisku saiti jaunajai.

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

In /usr/local/openssl/bin izpildīt ldd lai pārbaudītu atvērtās atkarībasssl. Mēs varam arī pārbaudīt atvērto versijussl. Pavēli 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

Pašlaik mums ir instalēta jaunākā Open versijaSSL , kas atbalsta TLSv1.3. Mēs varam pārbaudīt versijas TLS / SSL atbalsta Open bibliotēkasSSL pēc pasūtījuma:

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

Tas nenozīmē, ka vietnes tiek mitinātas VestaCP viņiem tas būs tūlīt TLS 1.3. nē macar Nginx vēl nav kompilēts jaunajai Open versijaiSSL.

Lai gan mums ir instalēta OpenSSL 1.1.1p, Nginx ir apkopots ar veco Open versijuSSL 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. Pārkompilējiet Nginx VestaCP

Šajā solī mums ir jāpārkompilē OpenSSL jau instalētā Nginx versija pe CentOS / VestaCP. Kā jau teicu iepriekš, manā gadījumā runa ir par nginx / 1.22.0. Par tīmekļa serveri, kas ir VestaCP kā sistēma adminPirms atkārtotas kompilācijas sākšanas ir lietderīgi dublēt nginx konfigurācijas failus.

Pašreizējais Nginx dublējums ir ieslēgts VestaCP

Arhivējiet un glabājiet direktorijus kaut kur serverī "/etc/nginx"Un"/usr/local/vesta/nginx".

izpildīts nginx -V un saglabājiet esošos moduļus failā.

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'
Kā aktivizēt TLSv1.3 operētājsistēmā NGINX
Kā aktivizēt TLSv1.3 operētājsistēmā NGINX

Mēs lejupielādējam un apkopojam Nginx

Atkārtojiet. Ja Jums ir VestaCP, lejupielādējiet jau instalēto Nginx versiju. Visus arhīvus ar Nginx versijām var atrast vietnē 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

Mēs pārkompilējam nginx moduļus:

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

Tagad Nginx ir instalēta un apkopota ar jaunāko Open versijuSSL spēj izturēt 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

Kā aktivizēt TLSv1.3 domēniem VestaCP

Failā / etc / nginx /nginx.conf pievienojam šādas rindas:

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';

Domēna līmenī es kaut ko mainīju veidnēs VestaCP un lai iespējotu HTTP / 2. Tātad, pievienojot jaunu domēnu (example.com) ar iespējotu šifrēšanu, man ir šāds konfigurācijas fails 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';

Pirms jums restartjums ir nginx, tas ir labi, ka pirms tā konfigurācijas testēšanas.

[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

Es ceru, ka šī apmācība jums noderēs, un, ja jums kaut kas neizdodas, komentāros atstājiet sīkāku informāciju par problēmu.

Stealth

Aizraujos ar tehnoloģijām, man patīk testēt un rakstīt pamācības par operētājsistēmām macOS, Linux, Windows, apmēram WordPress, WooCommerce un konfigurējiet LEMP tīmekļa serverus (Linux, NGINX, MySQL un PHP). Es rakstu tālāk StealthSettings.com kopš 2006. gada, un dažus gadus vēlāk es sāku rakstīt vietnē iHowTo.Tips apmācības un ziņas par ierīcēm ekosistēmā Apple: iPhone, iPad, Apple Skatīties, HomePod, iMac, MacBook, AirPods un piederumi.

Atstāj atbildi

Jūsu e-pasts address netiks publicēts.

Saistītie raksti

/ / /
Tags: / / / / / /
Atpakaļ uz augšu pogu