Como ativar o TLS 1.3 no Nginx no Debian 9

Introdução

O TLS 1.3 é uma versão do protocolo TLS (Transport Layer Security) publicada em 2018 como um padrão proposto na RFC 8446 . Oferece melhorias de segurança e desempenho em relação aos seus antecessores.

Este guia explica como habilitar o TLS 1.3 usando o servidor web Nginx no Debian 9.

Exigências

  • Versão Nginx 1.13.0ou superior.
  • Versão OpenSSL 1.1.1ou superior.
  • Instância do Vultr Cloud Compute (VC2) executando o Debian 9 x64 (estiramento).
  • Um nome de domínio válido e registros DNS / A/ configurados corretamente para seu domínio.AAAACNAME
  • Um certificado TLS válido. Obteremos um do Let's Encrypt.

Antes de você começar

Verifique a versão do Debian.

lsb_release -ds
# Debian GNU/Linux 9.9 (stretch)

Verifique se o seu sistema está atualizado.

apt update && apt upgrade -y

Instale os pacotes necessários.

apt install -y git unzip curl sudo socat build-essential

Crie uma nova conta de usuário não raiz com sudoacesso e mude para ela.

adduser johndoe --gecos "John Doe"
usermod -aG sudo johndoe
su - johndoe

NOTA: Substitua johndoepelo seu nome de usuário.

Configure o fuso horário.

sudo dpkg-reconfigure tzdata

Instale o cliente Acme.sh e obtenha um certificado TLS em Let's Encrypt

Baixe e instale Acme.sh .

sudo mkdir /etc/letsencrypt
sudo git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh 
sudo ./acme.sh --install --home /etc/letsencrypt --accountemail [email protected]
cd ~
source ~/.bashrc

Verifique a versão.

/etc/letsencrypt/acme.sh --version
# v2.8.2

Obtenha certificados RSA e ECDSA para o seu domínio.

# RSA 2048
sudo /etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --ocsp-must-staple --keylength 2048
# ECDSA
sudo /etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --ocsp-must-staple --keylength ec-256

NOTA: Substitua example.compelo seu nome de domínio.

Depois de executar os comandos anteriores, seus certificados e chaves estão acessíveis nos seguintes locais:

  • RSA :/etc/letsencrypt/example.com
  • ECC / ECDSA :/etc/letsencrypt/example.com_ecc

Compile o Nginx a partir do código-fonte

O Nginx adicionou suporte ao TLS 1.3 na versão 1.13.0. Na maioria das distribuições Linux, incluindo o Debian 9, o Nginx é construído com a versão mais antiga do OpenSSL, que não suporta o TLS 1.3. Consequentemente, precisamos de nossa própria compilação personalizada do Nginx vinculada à versão do OpenSSL 1.1.1, que inclui suporte ao TLS 1.3.

Baixe a versão principal mais recente do código fonte do Nginx e extraia-o.

wget https://nginx.org/download/nginx-1.17.0.tar.gz && tar zxvf nginx-1.17.0.tar.gz

Faça o download do código-fonte do OpenSSL 1.1.1c e extraia-o.

# OpenSSL version 1.1.1c
wget https://www.openssl.org/source/openssl-1.1.1c.tar.gz && tar xzvf openssl-1.1.1c.tar.gz

Exclua todos os .tar.gzarquivos, pois eles não são mais necessários.

rm -rf *.tar.gz

Digite o diretório de origem Nginx.

cd ~/nginx-1.17.0

Configure, compile e instale o Nginx. Por uma questão de simplicidade, compilaremos apenas os módulos essenciais necessários para o TLS 1.3 funcionar. Se você precisar de uma compilação completa do Nginx, poderá ler este guia do Vultr sobre a compilação do Nginx.

./configure --prefix=/etc/nginx \
            --sbin-path=/usr/sbin/nginx \
            --modules-path=/usr/lib/nginx/modules \
            --conf-path=/etc/nginx/nginx.conf \
            --error-log-path=/var/log/nginx/error.log \
            --pid-path=/var/run/nginx.pid \
            --lock-path=/var/run/nginx.lock \
            --user=nginx \
            --group=nginx \
            --build=Debian \
            --builddir=nginx-1.17.0 \
            --http-log-path=/var/log/nginx/access.log \
            --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 \
            --with-compat \
            --with-http_ssl_module \
            --with-http_v2_module \
            --with-openssl=../openssl-1.1.1c \
            --with-openssl-opt=no-nextprotoneg \
            --without-http_rewrite_module \
            --without-http_gzip_module

make
sudo make install

Crie um grupo de sistema e usuário do Nginx.

sudo adduser --system --home /nonexistent --shell /bin/false --no-create-home --disabled-login --disabled-password --gecos "nginx user" --group nginx

Link simbólico /usr/lib/nginx/modulespara /etc/nginx/modules. Este último é um local padrão para os módulos Nginx.

sudo ln -s /usr/lib/nginx/modules /etc/nginx/modules

Crie diretórios de cache do Nginx e defina as permissões apropriadas.

sudo mkdir -p /var/cache/nginx/client_temp /var/cache/nginx/fastcgi_temp /var/cache/nginx/proxy_temp /var/cache/nginx/scgi_temp /var/cache/nginx/uwsgi_temp
sudo chmod 700 /var/cache/nginx/*
sudo chown nginx:root /var/cache/nginx/*

Verifique a versão do Nginx.

sudo nginx -V

# nginx version: nginx/1.17.0 (Debian)
# built by gcc 6.3.0 20170516 (Debian 6.3.0-18+deb9u1)
# built with OpenSSL 1.1.1c  28 May 2019
# TLS SNI support enabled
# configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx . . .
# . . .

Crie um arquivo de unidade do sistema Nginx.

sudo vim /etc/systemd/system/nginx.service

Preencha o arquivo com a seguinte configuração.

[Unit]
Description=nginx - high performance web server
Documentation=https://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID

[Install]
WantedBy=multi-user.target

Inicie e ative o Nginx.

sudo systemctl start nginx.service
sudo systemctl enable nginx.service

Criar conf.d, sites-availablee sites-enableddiretórios /etc/nginx.

sudo mkdir /etc/nginx/{conf.d,sites-available,sites-enabled}

Execute sudo vim /etc/nginx/nginx.confe adicione as duas diretivas a seguir no final do arquivo, imediatamente antes do fechamento }.

    . . .
    . . .
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*.conf;
}

Salve o arquivo e saia com :+ W+ Q.

Configurar o Nginx para TLS 1.3

Agora que construímos o Nginx com sucesso, estamos prontos para configurá-lo para começar a usar o TLS 1.3 em nosso servidor.

Execute sudo vim /etc/nginx/conf.d/example.com.confe preencha o arquivo com a seguinte configuração.

server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;

  # 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;
}

Salve o arquivo e saia com :+ W+ Q.

Observe o novo TLSv1.3parâmetro da ssl_protocolsdiretiva. Este parâmetro é necessário para ativar o TLS 1.3.

Verifique a configuração.

sudo nginx -t

Recarregue o Nginx.

sudo systemctl reload nginx.service

Para verificar o TLS 1.3, você pode usar as ferramentas de desenvolvimento do navegador ou o serviço SSL Labs. As capturas de tela abaixo mostram a guia de segurança do Chrome que indica que o TLS 1.3 está funcionando.

Como ativar o TLS 1.3 no Nginx no Debian 9

Como ativar o TLS 1.3 no Nginx no Debian 9

Parabéns! Você ativou o TLS 1.3 com sucesso em seu servidor Debian 9.



Leave a Comment

A IA pode lutar contra o aumento do número de ataques de ransomware

A IA pode lutar contra o aumento do número de ataques de ransomware

Os ataques de ransomware estão aumentando, mas a IA pode ajudar a lidar com os vírus de computador mais recentes? AI é a resposta? Leia aqui para saber se é AI boone ou bane

ReactOS: Este é o futuro do Windows?

ReactOS: Este é o futuro do Windows?

ReactOS, um sistema operacional de código aberto e gratuito está aqui com a versão mais recente. Será que ela pode atender às necessidades dos usuários modernos do Windows e derrubar a Microsoft? Vamos descobrir mais sobre esse estilo antigo, mas uma experiência de sistema operacional mais recente.

Fique conectado por meio do aplicativo WhatsApp Desktop 24 * 7

Fique conectado por meio do aplicativo WhatsApp Desktop 24 * 7

O Whatsapp finalmente lançou o aplicativo Desktop para usuários de Mac e Windows. Agora você pode acessar o Whatsapp do Windows ou Mac facilmente. Disponível para Windows 8+ e Mac OS 10.9+

Como a IA pode levar a automação de processos ao próximo nível?

Como a IA pode levar a automação de processos ao próximo nível?

Leia isto para saber como a Inteligência Artificial está se tornando popular entre as empresas de pequena escala e como está aumentando as probabilidades de fazê-las crescer e dar vantagem a seus concorrentes.

A atualização do suplemento do macOS Catalina 10.15.4 está causando mais problemas do que resolvendo

A atualização do suplemento do macOS Catalina 10.15.4 está causando mais problemas do que resolvendo

Recentemente, a Apple lançou o macOS Catalina 10.15.4, uma atualização suplementar para corrigir problemas, mas parece que a atualização está causando mais problemas, levando ao bloqueio de máquinas mac. Leia este artigo para saber mais

13 Ferramentas de Extração de Dados Comerciais de Big Data

13 Ferramentas de Extração de Dados Comerciais de Big Data

13 Ferramentas de Extração de Dados Comerciais de Big Data

O que é um sistema de arquivos de registro no diário e como ele funciona?

O que é um sistema de arquivos de registro no diário e como ele funciona?

Nosso computador armazena todos os dados de uma maneira organizada conhecida como sistema de arquivos Journaling. É um método eficiente que permite ao computador pesquisar e exibir arquivos assim que você clicar em search.https: //wethegeek.com/? P = 94116 & preview = true

Singularidade tecnológica: um futuro distante da civilização humana?

Singularidade tecnológica: um futuro distante da civilização humana?

À medida que a ciência evolui em um ritmo rápido, assumindo muitos de nossos esforços, os riscos de nos sujeitarmos a uma singularidade inexplicável também aumentam. Leia, o que a singularidade pode significar para nós.

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

O impacto da inteligência artificial na saúde 2021

O impacto da inteligência artificial na saúde 2021

A IA na área da saúde deu grandes saltos nas últimas décadas. Portanto, o futuro da IA ​​na área da saúde ainda está crescendo dia a dia.