DevSecOps

9 mai, 2017

Como habilitar o TLS 1.3 no Nginx

Publicidade

Desde o Nginx 1.13, suporte foi adicionado para TLSv1.3, a versão mais recente do protocolo TLS. Dependendo de quando você ler este artigo, existem chances de você estar executando uma versão mais antiga do Nginx no momento, que ainda não suporta TLS 1.3. Nesse caso, considere executar o Nginx em um container na versão mais recente ou compilar o Nginx a partir da origem.

Habilite TLSv1.3 no Nginx

Eu vou assumir que você já tem uma configuração TLS funcionando. Ela vai incluir configurações como estas:

...
ssl_protocols               TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers                 ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers   on;
ssl_ecdh_curve              secp384r1;
...

E alguns parâmetros a mais.

Para habilitar o TLS 1.3, adicione TLSv1.3 à lista ssl_protocols.

ssl_protocols               TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;

E recarregue a configuração do Nginx.

Teste se sua versão Nginx suporta TLS 1.3

Adicione a configuração como mostrada acima e tente executar o Nginx no modo de depuração.

$ nginx -t
nginx: [emerg] invalid value "TLSv1.3" in /etc/nginx/conf.d/ma.ttias.be.conf:34
nginx: configuration file /etc/nginx/nginx.conf test failed

Se você vir a mensagem acima, sua versão Nginx não suporta TLS 1.3. Um configuração de trabalho irá lhe dizer isto:

$ nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Se você não vir nenhum erro, sua versão do Nginx suporta TLS 1.3.

Outros requisitos

Agora que você disse ao Nginx para usar o TLS 1.3, ele usará TLS 1.3 onde estiver disponível, no entanto… não há muitas bibliotecas lá fora que oferecem TLS 1.3.

Por exemplo, o OpenSSL ainda está debatendo a implementação do TLS 1.3, o que parece razoável porque, até onde eu sei, a especificação TLS 1.3 ainda não é definitiva. Há suporte para TLS 1.3 incluído na versão mais recente do OpenSSL, mas parece não haver uma pessoa sã online que realmente a use.

Suporte para TLSv1.3 draft-19 está no mestre se você “configurar” com “enable-tls1_3”. Note que draft-19 não é compatível com draft-18, que ainda é usado por algumas outras bibliotecas. A nossa versão draft-18 está no ramo tls1.3-draft-18. Suporte TLS 1.3 no OpenSSL

Em resumo: sim, você pode habilitar TLS 1.3 no Nginx, mas eu não encontrei um sistema operacional e biblioteca que me permitirão realmente usar TLS 1.3.

***

Mattias Geniar faz parte do time de colunistas internacionais do iMasters. A tradução do artigo é feita pela redação iMasters, com autorização do autor, e você pode acompanhar o artigo em inglês no link: https://ma.ttias.be/enable-tls-1-3-nginx/.