Šioje pamokoje sužinosite, kaip aktyvinti TLS1.3 versija NGINX. Ką tai reiškia TLSv 1.3, kuo tai padeda ir kodėl Tau reikia žiniatinklio serveryje kaip TLS galima aktyvuoti. Serveriams su valdymo sistema VestaCP (CentOS arba Ubuntu) yra šiek tiek sunkesnis suaktyvinti TLS 1.3 nei cPanel serveryje, bet tai nėra neįmanoma.
Kuprinai
Kodėl geriau TLS 1.3 nei TLS 1.2?
TLS (Transport Layer Security) yra kriptografinis protokolas kuri užtikrina ryšio saugumas tarp kompiuterio ir tinklo, kurio dalis jis yra. TLS jis naudojamas tokiose programose kaip: email, Žinutės, balso ir vaizdo skambučiai (VoIP), bet ypač HTTPS. Saugaus ryšio tarp vartotojo kompiuterio ar išmaniojo telefono ir atverto puslapio žiniatinklio serverio užtikrinimas.
TLS 1.3 siūlo a didesnis greitis sujungimo klientas – serveris ir a Be to saugumas pašalinus kai kuriuos algoritmus. Skirtumai tarp TLSv1.2 ir TLSv1.3.
Apie HTTPS, SSL (Secure Sockets Layer) Taip pat sakiau kituose straipsniuose:
- Kaip įdiegti sertifikatą SSL (HTTPS Ryšys), skirta svetainei, priglobtai NGINX serveryje be cPanel arba VestaCP
- perkompiliuoti OpenSSL 1.1 ir NGINX 1.25 skirtos TLS 1.3 (CentOS 7)
- Kaip perkelti tinklaraštį ar svetainę WordPress nuo HTTP HTTPS (Nginx)
- Ištrinkite senus domenus Certbot certificates (Šifruokime sertifikatą)
Kaip aktyvuoti TLS 1.3 NGINX'e? Serveris su VestaCP valdymu / CentOS
Prieš pamatydami, kaip suaktyvinate TLSv1.3 NGINX, turite atsižvelgti į kai kuriuos minimalius reikalavimus TLS 1.3.
- NGINX 1.13.x arba naujesnė versija
- Sertifikatas TLS galioja
- Aktyvus domeno vardas su tinkamai sukonfigūruotu DNS – būkite pasiekiami internete
- Sertifikatas TLS / SSL galioja. Taip pat gali būti Let’s Encrypt.
Pe VestaCP įdiegtas seniai, turime tik protokolą TLS 1.2. Daugelyje vadovėlių mačiau, kad užtenka taip, kaip nurodyta nginx.conf
pridėkime šią eilutę maždaug TLS 1.3, kurį reikia suaktyvinti:
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;
Netikras. Jeigu serveris CentOS su vadovybe VestaCP, NGINX nebuvo sudarytas su minimalia versija OpenSSL 1.1.1.1, ssl_protocols TLSv1.2 TLSv1.3;
viduje nginx.conf
.. tai visai nepadeda.
[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
Taigi aukščiau pateiktame pavyzdyje Nginx 1.22.0 yra suderinama versija TLS 1.3, bet biblioteka mums nepadeda OpenSSL 1.0.2k-fips.
Norėdami suaktyvinti TLS1.3 versija Nginx, pirmiausia turite įdiegti antrines bibliotekas ir kūrimo paketus. Development Tools. Jis subėga CentOS 7 komandų eilutės:
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. Įdiekite naujausią versiją OpenSSL
Šiuo metu yra naujausia versija OpenSSL 1.1.1p, bet kiek pastebėjau yra jau ir OpenSSL 3. Šaltinius galite rasti adresu 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
Labai svarbu bėgti make test
prieš diegiant biblioteką. Jei teste yra klaidų, nevykdykite make install
kol bus ištaisytos klaidos.
Kitame žingsnyje sukuriame dabartinio dvejetainio failo atsarginę kopiją openssl
ir pridedame symlink
į naują.
mv /usr/bin/openssl /usr/bin/openssl-backup
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
į /usr/local/openssl/bin
vykdyti ldd
kad patikrintų priklausomybes openssl. Taip pat galime patikrinti versiją openssl. komandą 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
Šiuo metu turime naujausią versiją OpenSSL kuris ištveria TLSv1.3. Galime patikrinti versijas TLS / SSL remia knygynai OpenSSL pagal užsakymą:
[root@north bin]# openssl ciphers -v | awk '{print $2}' | sort | uniq
SSLv3
TLSv1
TLSv1.2
TLSv1.3
[root@north bin]#
Tai nereiškia, kad svetainės talpinamos su vadovo pagalba VestaCP jie turės iš karto TLS 1.3.
Nors mes įdiegėme OpenSSL 1.1.1p, Nginx yra sudarytas naudojant senąją versiją 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. Perkompiliuokite Nginx sistemai VestaCP
Šiame žingsnyje turime iš naujo kompiliuoti OpenSSL jau įdiegta Nginx versija sistemoje CentOS / VestaCP. Kaip jau sakiau aukščiau, mano atveju tai yra apie nginx/1.22.0. Kadangi mes kalbame apie žiniatinklio serverį, kuris turi VestaCP administravimo sistemą, prieš pradedant perkompiliuoti, verta pasidaryti nginx konfigūracijos failų atsarginę kopiją.
Atsarginė Nginx srovės kopija sistemoje VestaCP
Suarchyvuokite ir laikykite kur nors serveryje katalogus "/etc/nginx
"ir"/usr/local/vesta/nginx
".
BĖGTI nginx -V
ir išsaugoti esamus modulius į 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'
Kaip iš naujo kompiliuoti „Nginx“, kad būtų galima atnaujinti OpenSSL / CentOS 7
Aš kartoju. Jei turite VestaCP, atsisiųskite jau įdiegtą Nginx versiją. Galite rasti visus archyvus su „Nginx“ versijomis 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
Mes iš naujo sukompiliuojame nginx modulius:
./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
Dabar įdiegėme „Nginx“ ir sukompiliavome su naujausia versija OpenSSL galintis atlaikyti 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
*jei nginx jau buvo įdiegtas serveryje, turėsite jį pašalinti. Kompiliacija neveikia nginx naujinimo metu.
Kaip aktyvuoti TLSv1.3 domenams VestaCP sistemoje?
Byloje /etc/nginx/nginx.conf
pridedame šias eilutes:
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';
Domeno lygiu kažką pakeičiau šablonuose VestaCP ir įjungti HTTP/2. Taigi, kai pridedu naują domeną (example.com) su įjungta funkcija Encrypt, turiu šį konfigūracijos failą 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';
Prieš paleidžiant nginx iš naujo, pirmiausia verta išbandyti jo konfigūraciją.
[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
Tikiuosi, kad ši pamoka jums bus naudinga, o jei kažkas įstrigo, palikite išsamią informaciją apie problemą komentaruose.