Como habilitar o TLS 1.3 no Apache e Nginx
TLS 1.3 é a versão mais recente do protocolo Transport Layer Security (TLS) e é baseado nas especificações 1.2 existentes com o padrão IETF adequado: RFC 8446. Ele fornece segurança mais forte e melhorias de desempenho superiores em relação aos seus antecessores.
Neste artigo, mostraremos um guia passo a passo para obter um certificado TLS válido e ativar a versão mais recente do protocolo TLS 1.3 em seu domínio hospedado no Apache ou Servidores web Nginx.
Requisitos:
- Apache versão 2.4.37 ou superior.
- Nginx versão 1.13.0 ou superior.
- OpenSSL versão 1.1.1 ou superior.
- Um nome de domínio válido com registros DNS configurados corretamente.
- Um certificado TLS válido.
Instale o certificado TLS do Let’s Encrypt
Para obter um Certificado SSL gratuito da Let’s Encrypt, você precisa instalar o cliente Acme.sh e também alguns pacotes necessários no sistema Linux, conforme mostrado.
apt install -y socat git [On Debian/Ubuntu]
dnf install -y socat git [On RHEL/CentOS/Fedora]
mkdir /etc/letsencrypt
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install --home /etc/letsencrypt --accountemail [email
cd ~
/etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --ocsp-must-staple --keylength 2048
/etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --ocsp-must-staple --keylength ec-256
NOTA: Substitua example.com
no comando acima pelo seu nome de domínio real.
Depois de instalar o certificado SSL, você pode prosseguir para ativar o TLS 1.3 em seu domínio, conforme explicado abaixo.
Habilite TLS 1.3 no Nginx
Como mencionei nos requisitos acima, o TLS 1.3 é compatível a partir da versão Nginx 1.13. Se você estiver executando a versão mais antiga do Nginx, primeiro será necessário atualizar para a versão mais recente.
apt install nginx
yum install nginx
Verifique a versão do Nginx e a versão do OpenSSL na qual o Nginx foi compilado (certifique-se de que a versão do nginx seja pelo menos 1.14 e openssl versão 1.1.1).
nginx -V
Saída de amostra
nginx version: nginx/1.14.1
built by gcc 8.2.1 20180905 (Red Hat 8.2.1-3) (GCC)
built with OpenSSL 1.1.1 FIPS 11 Sep 2018
TLS SNI support enabled
....
Agora inicie, habilite e verifique a instalação do nginx.
systemctl start nginx.service
systemctl enable nginx.service
systemctl status nginx.service
Agora abra o arquivo de configuração nginx vhost /etc/nginx/conf.d/example.com.conf
usando seu editor favorito.
vi /etc/nginx/conf.d/example.com.conf
e localize a diretiva ssl_protocols
e anexe TLSv1.3 no final da linha, conforme mostrado abaixo
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com;
# RSA
ssl_certificate /etc/letsencrypt/example.com/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/example.com/example.com.key;
# ECDSA
ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/example.com_ecc/example.com.key;
ssl_protocols TLSv1.2 TLSv1.3;
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';
ssl_prefer_server_ciphers on;
}
Por fim, verifique a configuração e recarregue o Nginx.
nginx -t
systemctl reload nginx.service
Habilite o TLS 1.3 no Apache
A partir do Apache 2.4.37, você pode aproveitar as vantagens do TLS 1.3. Se você estiver executando a versão mais antiga do Apache, primeiro será necessário atualizar para a versão mais recente.
apt install apache2
yum install httpd
Depois de instalado, você pode verificar o Apache e a versão do OpenSSL com a qual o Apache foi compilado.
httpd -V
openssl version
Agora inicie, habilite e verifique a instalação do nginx.
-------------- On Debian/Ubuntu --------------
systemctl start apache2.service
systemctl enable apache2.service
systemctl status apache2.service
-------------- On RHEL/CentOS/Fedora --------------
systemctl start httpd.service
systemctl enable httpd.service
systemctl status httpd.service
Agora abra o arquivo de configuração do host virtual Apache usando seu editor favorito.
vi /etc/httpd/conf.d/vhost.conf
OR
vi /etc/apache2/apache2.conf
e localize a diretiva ssl_protocols
e anexe TLSv1.3 no final da linha, conforme mostrado abaixo.
<VirtualHost *:443>
SSLEngine On
RSA
ssl_certificate /etc/letsencrypt/example.com/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/example.com/example.com.key;
ECDSA
ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/example.com_ecc/example.com.key;
ssl_protocols TLSv1.2 TLSv1.3
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';
ssl_prefer_server_ciphers on;
SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem
ServerAdmin [email
ServerName www.example.com
ServerAlias example.com
#DocumentRoot /data/httpd/htdocs/example.com/
DocumentRoot /data/httpd/htdocs/example_hueman/
# Log file locations
LogLevel warn
ErrorLog /var/log/httpd/example.com/httpserror.log
CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/example.com/httpsaccess.log.%Y-%m-%d 86400" combined
</VirtualHost>
Por fim, verifique a configuração e recarregue o Apache.
-------------- On Debian/Ubuntu --------------
apache2 -t
systemctl reload apache2.service
-------------- On RHEL/CentOS/Fedora --------------
httpd -t
systemctl reload httpd.service
Verifique se o site está usando TLS 1.3
Depois de configurar por meio de um servidor web, você pode verificar se seu site está fazendo handshaking no protocolo TLS 1.3 usando as ferramentas de desenvolvimento do navegador Chrome na versão Chrome 70+.
Isso é tudo. Você ativou com sucesso o protocolo TLS 1.3 em seu domínio hospedado em servidores web Apache ou Nginx. Se você tiver alguma dúvida sobre este artigo, sinta-se à vontade para perguntar na seção de comentários abaixo.