Como ativar TLSv1.3 no NGINX. VestaCP pe CentOS com AbertoSSL

Neste tutorial veremos como ativar TLSv1.3 no NGINX, vamos entender um pouco O que isso significa esta TLS 1.3, o que ajuda e porque nós precisamos no servidor web como TLS ser ativado. Vamos entender por que em um servidor com VestaCP (CentOS ou Ubuntu) é um pouco mais difícil ativar TLS 1.3 do que em um servidor cPanel. Ou em um servidor onde não temos software de gerenciamento de hospedagem.

Por que é melhor TLS 1.3 do que TLS 1.2?

TLS (Transport Layer Security) é protocolo criptográfico o que garante segurança de conexão entre o computador e uma rede à qual ele pertence. TLS é usado em aplicações como: email, mensagens, chamadas de voz e vídeo (VoIP), mas especialmente em HTTPS. Garantir uma comunicação segura entre o computador ou smartphone do usuário e o servidor web da página acessada.

TLSv1.3 ofertas velocidade mais elevada conexão cliente-servidor e um Além disso segurança eliminando alguns algoritmos. As diferenças entre TLSv1.2 e TLSv1.3.

sobre HTTPS, SSL (Secure Sockets Layer) Eu também disse em outros artigos:

Como ativar TLSv1.3 no NGINX. Servidor com VestaCP instalado em CentOS

Antes de vermos como ativamos TLSv1.3 no NGINX, devemos ter um mínimo de requisitos de software e bibliotecas presentes.

  1. NGINX 1.13.x ou posterior
  2. Um certificado TLS válido
  3. Nome de domínio ativo com DNS configurado corretamente - para ser acessível na internet
  4. Um certificado TLS / SSL válido. Também pode ser Let's Encrypt.

Com um VestaCP instalado há muito tempo, só temos o protocolo TLS 1.2. Eu vi em muitos tutoriais que é o suficiente como em nginx.conf vamos adicionar a seguinte linha porque TLS 1.3 a ser ativado:

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;

Falso. Se servidor CentOS cu VestaCP, NGINX não foi compilado com a versão mínima do OpenSSL 1.1.1.1, ssl_protocols TLSv1.2 TLSv1.3; in nginx.conf não nos ajuda em nada.

[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

Portanto, no exemplo acima, o Nginx 1.22.0 é compatível com TLSv1.3, mas a biblioteca Open não nos ajudaSSL 1.0.2k-fips.

Ativar TLSv1.3 no Nginx, devemos primeiro instalar as bibliotecas infantis e os pacotes de desenvolvimento. Ferramentas de desenvolvimento. Nós corremos CentOS 7 linhas de comando:

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. Instale a versão mais recente do OpenSSL

Neste momento, a versão mais recente está abertaSSL 1.1.1p, mas pelo que notei já existe OpenSSL 3. Você pode encontrar as fontes em AbreSSL.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 

Muito importante correr make test antes de instalar a biblioteca. Se ocorrerem erros durante o teste, não execute make install até que os erros sejam corrigidos.

Na próxima etapa, fazemos backup do arquivo binário aberto atualssl e adicionamos um link simbólico ao novo.

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

In /usr/local/openssl/bin executar ldd para verificar dependências abertasssl. Também podemos verificar a versão abertassl. Comando 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

No momento, temos a versão mais recente do Open instaladaSSL que apoia TLSv1.3. Podemos verificar as versões TLS / SSL suportado por bibliotecas abertasSSL por ordem:

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

Isso não significa que os sites estão hospedados em VestaCP eles terão imediatamente TLS 1.3. nenhum macar Nginx ainda não está compilado para a nova versão do OpenSSL.

Embora tenhamos o Open instaladoSSL 1.1.1p, Nginx é compilado com a antiga versão 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. Recompile o Nginx em VestaCP

Nesta etapa, temos que recompilar para OpenSSL a versão do Nginx já instalada pe CentOS / VestaCP. Como eu disse acima, no meu caso trata-se de nginx / 1.22.0. Sendo sobre um servidor web que tem VestaCP como um sistema de adminAntes de iniciar a recompilação, é bom fazer backup dos arquivos de configuração do nginx.

Backup atual do Nginx ativado VestaCP

Arquive e armazene diretórios em algum lugar do servidor "/etc/nginx"E"/usr/local/vesta/nginx".

executado nginx -V e salve os módulos existentes em um arquivo.

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'
Como ativar TLSv1.3 no NGINX
Como ativar TLSv1.3 no NGINX

Nós baixamos e compilamos o Nginx

Repetir. Se você tem VestaCP, baixe a versão do Nginx que você já instalou. Todos os arquivos com versões do Nginx podem ser encontrados em 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

Recompilamos os módulos 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

Agora temos o Nginx instalado e compilado com a versão mais recente do OpenSSL capaz de suportar 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

Como ativar TLSv1.3 para domínios em VestaCP

No arquivo /etc/nginx/nginx.conf adicionamos as seguintes linhas:

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

No nível do domínio, alterei algo nos modelos VestaCP e para habilitar HTTP/2. Então, ao adicionar um novo domínio (example.com) com Let's Encrypt habilitado, tenho o seguinte arquivo de configuração para 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';

Antes de você restartvocê tem nginx, é bom que antes de testar sua configuração.

[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

Espero que você ache este tutorial útil, e se não obtiver sucesso em algo, deixe os detalhes do problema nos comentários.

Stealth

Apaixonado por tecnologia, gosto de testar e escrever tutoriais sobre sistemas operacionais macOS, Linux, Windowssobre WordPress, WooCommerce e configurar servidores web LEMP (Linux, NGINX, MySQL e PHP). eu escrevo em StealthSettings.com desde 2006, e alguns anos depois, comecei a escrever no iHowTo.Tips tutoriais e notícias sobre dispositivos no ecossistema Apple: iPhone, iPad, Apple Assistir, HomePod, iMac, MacBook, AirPods e acessórios.

Deixe um comentário

O seu endereço de e-mail não será publicado.

Artigos Relacionados

/ / /
Tags: / / / / / /
Voltar ao topo botão