NGINX üzerinde TLSv1.3 nasıl etkinleştirilir? VestaCP / CentOS veya Ubuntu

Bu eğitimde nasıl öğreneceksiniz etkinleştirmek TLSNGINX'te v1.3. Bu ne anlama geliyor TLSv 1.3, ne yardımcı olur ve neden ihtiyacın var olarak web sunucusunda TLS etkinleştirilebilir. Yönetim sistemine sahip sunucular için VestaCP (CentOS veya Ubuntu) biraz daha zordur etkinleştirmek TLS 1.3 bir cPanel sunucusundan daha fazla, ancak imkansız değil.

Neden daha iyi TLS 1.3 daha TLS 1.2?

TLS (Transport Layer Security) bir kriptografik protokol sağlayan bağlantı güvenliği Bilgisayar ile parçası olduğu ağ arasındaki TLS aşağıdaki gibi uygulamalarda kullanılır: E-posta, mesajlaşma, sesli ve görüntülü aramalar (VoIP), ama özellikle HTTPS. Kullanıcının bilgisayarı veya akıllı telefonu ile erişilen sayfanın web sunucusu arasında güvenli iletişimin sağlanması.

TLS 1.3 önerir daha yüksek hız istemci – sunucu ve bir Ayrıca güvenlik bazı algoritmaları ortadan kaldırarak. arasındaki farklar TLSv1.2 ve TLSv1.3.

hakkında HTTPS, SSL (Secure Sockets Layer) Diğer yazılarımda da şunları söyledim:

NGINX üzerinde TLS 1.3 nasıl etkinleştirilir? VestaCP yönetimli bir sunucu / CentOS

Nasıl etkinleştirdiğinizi görmeden önce TLSNGINX'te v1.3 için bazı minimum gereksinimleri göz önünde bulundurmanız gerekir. TLS 1.3.

  1. NGINX 1.13.x veya üstü
  2. Sertifika TLS geçerli
  3. Düzgün yapılandırılmış DNS ile aktif alan adı - İnternetten erişilebilir
  4. Sertifika TLS / SSL geçerli. Ayrıca olabilir Let’s Encrypt.

Pe VestaCP uzun zaman önce kuruldu, elimizde sadece protokol var TLS 1.2. Birçok öğreticide olduğu gibi yeterli olduğunu gördüm. nginx.conf ca için aşağıdaki satırı ekleyelim TLS 1.3 etkinleştirilecek:

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;

Sahte. Eğer sunucu CentOS yönetim ile VestaCP, NGINX derlenmedi minimum sürüm ile OpenSSL 1.1.1.1, ssl_protocols TLSv1.2 TLSv1.3; în nginx.conf .. hiç yardımcı olmuyor.

[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

Dolayısıyla yukarıdaki örnekte Nginx 1.22.0 uyumlu sürümdür TLS 1.3, ancak kütüphane bize yardımcı olmuyor OpenSSL 1.0.2k-fips.

Etkinleştirmek TLSNginx'te v1.3, önce alt kitaplıkları ve geliştirme paketlerini kurmanız gerekir. Development Tools. içeri giriyor CentOS 7 komut satırı:

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. En son sürümü yükleyin OpenSSL

Şu anda en son sürüm OpenSSL 1.1.1p, ama fark ettiğim kadarıyla zaten var ve OpenSSL 3. Kaynakları şu adreste bulabilirsiniz: OpenSSLOrg..

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 

koşmak çok önemli make test kütüphaneyi kurmadan önce. Testte hatalar varsa çalıştırmayın make install hatalar düzeltilene kadar.

Bir sonraki adımda mevcut ikili dosyanın yedeğini alıyoruz. openssl ve ekliyoruz symlink yenisine

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

Içinde /usr/local/openssl/bin uygulamak ldd bağımlılıkları kontrol etmek için openssl. sürümünü de kontrol edebiliriz. openssl. Emretmek 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

Şu anda en son sürüme sahibiz OpenSSL hangisi dayanır TLSv1.3. Sürümleri kontrol edebiliriz TLS / SSL kitapçıların desteklediği OpenSSL emriyle:

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

Bu, web sitelerinin yöneticinin yardımıyla barındırıldığı anlamına gelmez. VestaCP hemen sahip olacaklar TLS 1.3.

yüklemiş olmamıza rağmen OpenSSL 1.1.1p, Nginx eski sürümle derlenmiştir 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. Sistem için Nginx'i yeniden derleyin VestaCP

Bu adımda, için yeniden derlememiz gerekiyor OpenSSL Nginx sürümü zaten yüklü sistem üzerinde CentOS / VestaCP. Yukarıda söylediğim gibi, benim durumumda bu yaklaşık nginx/1.22.0. Sahip olan bir web sunucusundan bahsettiğimiz için VestaCP yönetim sistemi, yeniden derlemeye başlamadan önce nginx yapılandırma dosyalarının bir yedeğini almak iyidir.

Sistemdeki Nginx akımını yedekleyin VestaCP

Dizinleri arşivleyin ve sunucuda bir yerde saklayın "/etc/nginx"Ve"/usr/local/vesta/nginx".

KOŞMAK nginx -V ve mevcut modülleri bir dosyaya kaydedin.

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'
Nasıl etkinleştirirsiniz? TLSNGINX'te v1.3
Etkinleştirme TLSNGINX'te v1.3

Yükseltme için Nginx nasıl yeniden derlenir OpenSSL / CentOS 7

Tekrarlıyorum. eğer varsa VestaCP, zaten yüklediğiniz Nginx sürümünü indirin. Tüm arşivleri Nginx sürümleriyle birlikte bulabilirsiniz. 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

Nginx modüllerini yeniden derliyoruz:

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

Artık Nginx'i kurduk ve en son sürümle derledik. OpenSSL dayanabilir 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

*nginx sunucuda zaten kuruluysa, onu kaldırmanız gerekir. Derleme, nginx yükseltmesinde çalışmıyor.

VestaCP üzerindeki alan adları için TLSv1.3 nasıl etkinleştirilir?

Dosyanın içinde /etc/nginx/nginx.conf şu satırları ekliyoruz:

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

Etki alanı düzeyinde, şablonlarda bir şeyi değiştirdim VestaCP ve HTTP/2'yi etkinleştirmek için. Dolayısıyla, Let's Encrypt etkinken yeni bir etki alanı (example.com) eklerken, aşağıdaki yapılandırma dosyasına sahibim. 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';

Nginx'i yeniden başlatmadan önce yapılandırmasını test etmekte fayda var.

[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

Umarım bu öğreticiyi yararlı bulursunuz ve bir şeye takılırsanız, sorun ayrıntılarını yorumlarda bırakın.

Teknolojiye tutkulu, 2006 yılından beri StealthSettings.com'da yazıyorum. macOS, Windows ve Linux işletim sistemlerinde geniş deneyimim var, aynı zamanda programlama dilleri ve blog platformları (WordPress) ile online mağazalar için (WooCommerce, Magento, PrestaShop) bilgi sahibiyim.

nasıl » Linux » NGINX üzerinde TLSv1.3 nasıl etkinleştirilir? VestaCP / CentOS veya Ubuntu
Leave a Comment