Construtor de Trecho de Configuração TLS
Gera trechos de configuração TLS para nginx/Apache
Web Server
Security Profile
Options
Certificate Paths
Configuration Snippet
# TLS Configuration ssl_certificate /etc/ssl/certs/server.crt; ssl_certificate_key /etc/ssl/private/server.key; # Protocols ssl_protocols TLSv1.2 TLSv1.3; # Cipher suites ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305'; ssl_prefer_server_ciphers on; # Session resumption ssl_session_timeout 1d; ssl_session_cache shared:SSL:10m; ssl_session_tickets off; # OCSP Stapling ssl_stapling on; ssl_stapling_verify on; resolver 1.1.1.1 8.8.8.8 valid=300s; resolver_timeout 5s; # HSTS add_header Strict-Transport-Security 'max-age=63072000; includeSubDomains; preload' always;
Configuration Notes
- Based on Mozilla SSL Configuration Generator recommendations
- Modern profile requires clients with TLS 1.3 support
- Intermediate profile is recommended for most deployments
- Test your configuration with SSL Labs after deployment
O TLS Config Snippet Builder gera trechos de configuração SSL/TLS prontos para produção para nginx, Apache e outros servidores web, com cipher suites corretos, versões de protocolo, headers HSTS e configurações de OCSP stapling alinhadas aos perfis de segurança recomendados pela Mozilla. Selecione um servidor e um perfil de segurança, e obtenha um bloco de configuração completo que você pode implantar com confiança.
Entendendo Configuração TLS
Acertar a configuração TLS é uma das partes mais complicadas da administração de servidor web. O protocolo evoluiu dramaticamente na última década: TLS 1.0 e 1.1 agora estão deprecados, dezenas de cipher suites foram aposentadas devido a vulnerabilidades, e novas funcionalidades como OCSP stapling e HTTP Strict Transport Security se tornaram essenciais. Uma configuração que ganhou um A+ no SSL Labs cinco anos atrás pode marcar um C hoje se ainda permitir TLS 1.0 ou incluir ciphers fracos como RC4 ou 3DES.
O desafio é que acertar qualquer diretiva única pode quebrar compatibilidade para usuários legítimos ou deixar seu servidor vulnerável. Habilite apenas TLS 1.3 e você bloqueia usuários em dispositivos Android antigos. Inclua um cipher de modo CBC para compatibilidade e você pode estar exposto a ataques de oracle de padding se sua implementação não for cuidadosa. Esqueça de definir ssl_prefer_server_ciphers e clientes podem negociar um cipher mais fraco que o necessário. As permutações são complexas o suficiente que até sysadmins experientes copiam configurações de posts de blog, alguns dos quais têm anos de atraso.
Este construtor elimina essa adivinhação. Ele gera configurações baseadas nas recomendações do Mozilla SSL Configuration Generator, que são mantidas por engenheiros de segurança e atualizadas conforme o cenário de ameaça evolui. Você escolhe um perfil de segurança -- Modern para segurança máxima, Intermediate para compatibilidade ampla ou Legacy para sistemas que devem suportar clientes muito antigos -- e o construtor produz um bloco de configuração comentado e completo para seu software de servidor alvo. Cada diretiva é explicada para que você entenda o que faz, não apenas como colá-la.
Como Gerar um Trecho de Configuração TLS
- Selecione seu servidor web alvo (nginx, Apache, HAProxy, etc.)
- Escolha um perfil de segurança: Modern, Intermediate ou Legacy
- Opcionalmente defina seus caminhos de arquivo de certificado e chave
- Copie o bloco de configuração gerado em sua config de servidor
Comparação de Perfil de Segurança
| Perfil | Protocolos | Cliente Compatível Mais Antigo | Caso de Uso |
|---|---|---|---|
| Modern | TLS 1.3 apenas | Chrome 70, Firefox 63, Safari 12.1 | Novas implantações sem necessidades de cliente legado |
| Intermediate | TLS 1.2 + TLS 1.3 | Chrome 30, Firefox 27, IE 11 (Win 7+), Android 5.0 | Maioria de websites de produção |
| Legacy | TLS 1.0 + TLS 1.1 + TLS 1.2 + TLS 1.3 | IE 8 (Win XP), Android 2.3 | Sistemas legados, migração gradual |
Exemplos de Configurações Geradas
nginx -- Perfil Intermediate
server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate /etc/ssl/certs/example.com-chain.pem;
ssl_certificate_key /etc/ssl/private/example.com.key;
# Protocolos
ssl_protocols TLSv1.2 TLSv1.3;
# Cipher suites (compatibilidade intermediária)
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
# HSTS (1 ano, incluindo subdomínios)
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
# OCSP Stapling
ssl_stapling on;
ssl_stapling_verify on;
resolver 1.1.1.1 8.8.8.8 valid=300s;
resolver_timeout 5s;
# Configurações de sessão
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
}
Apache -- Perfil Modern (Apenas TLS 1.3)
<VirtualHost *:443>
ServerName example.com
SSLEngine on
SSLCertificateFile /etc/ssl/certs/example.com.crt
SSLCertificateKeyFile /etc/ssl/private/example.com.key
SSLCertificateChainFile /etc/ssl/certs/chain.pem
# Apenas TLS 1.3
SSLProtocol -all +TLSv1.3
SSLOpenSSLConfCmd Curves X25519:secp256r1:secp384r1
# HSTS
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
# OCSP Stapling
SSLUseStapling On
SSLStaplingCache shmcb:/var/run/ocsp(128000)
</VirtualHost>
Quando Usar Esta Ferramenta
- Configuração de novo servidor HTTPS -- gere uma baseline de configuração segura em vez de copiar snippets desatualizados de posts de blog
- Endurecimento TLS -- atualize uma configuração existente de cipher suites fracos e versões de protocolo antigos para melhores práticas atuais
- Preparação de auditoria de segurança -- gere configurações que passarão em testes Qualys SSL Labs com uma classificação A+
- Requisitos de conformidade -- produza configurações que atendam aos requisitos PCI DSS, HIPAA ou SOC 2 para criptografia em trânsito
- Aprendendo melhores práticas TLS -- cada diretiva inclui comentários explicando seu propósito, tornando a config gerada educacional
- Migração de servidor -- gere configurações equivalentes ao migrar de Apache para nginx ou vice-versa
Diretivas-Chave de Configuração TLS Explicadas
Seleção de Cipher Suite
Cipher suites definem os algoritmos usados durante o handshake TLS e criptografia de dados:
| Componente | Escolha Modern | Propósito |
|---|---|---|
| Troca de chave | ECDHE | Sigilo de encaminhamento via chaves efêmeras |
| Autenticação | RSA ou ECDSA | Verificação de identidade de servidor |
| Cipher em massa | AES-128-GCM, AES-256-GCM, CHACHA20-POLY1305 | Criptografia de dados |
| MAC | AEAD (integrado a GCM/POLY1305) | Integridade de dados |
HSTS (HTTP Strict Transport Security)
O header Strict-Transport-Security diz aos navegadores sempre usar HTTPS:
max-age=31536000-- lembre por 1 ano (31.536.000 segundos)includeSubDomains-- aplique a todos os subdomíniospreload-- opte-in para listas de preload de HSTS do navegador (envie separadamente em hstspreload.org)
OCSP Stapling
Sem stapling, navegadores devem contactar o respondente OCSP da CA para verificar revogação de certificado, adicionando latência. Com stapling habilitado, o servidor obtém a resposta OCSP e a inclui no handshake TLS, melhorando performance e privacidade.
Gerenciamento de Sessão
ssl_session_timeout 1d; # Sessões válidas por 1 dia
ssl_session_cache shared:SSL:10m; # Cache compartilhado de 10 MB (~40.000 sessões)
ssl_session_tickets off; # Desabilite tickets (eles quebram sigilo de encaminhamento)
Tickets de sessão são desabilitados nas configurações recomendadas porque usam uma única chave que, se comprometida, permite descriptografia de todas as sessões que a usaram. O cache de sessão compartilhado fornece resumption sem esse risco.
Configuração TLS na Prática
O conselho mais importante para configuração TLS é começar com o perfil Intermediate e apenas desviar se você tiver uma razão específica. O perfil Intermediate suporta TLS 1.2 e 1.3 com cipher suites AEAD fortes, o que cobre cada navegador ativo e sistema operacional. É a escolha certa para a grande maioria de websites públicos. O perfil Modern (apenas TLS 1.3) é apropriado para APIs e serviços internos onde você controla os clientes, mas bloqueará usuários em dispositivos Android antigos ou ambientes corporativos com servidores proxy desatualizados.
Após implantar sua configuração, teste-a com Qualys SSL Labs (ssllabs.com/ssltest) para verificar que seu servidor está corretamente configurado. Uma classificação A+ requer HSTS com um max-age de pelo menos 6 meses e uma configuração TLS limpa sem protocolos fracos ou ciphers. Se marcar menor, o relatório dirá exatamente o que consertar -- tipicamente um TLS 1.0 perdido ou um cipher suite fraco que foi deixado na configuração de uma versão anterior.
Um detalhe frequentemente negligenciado é a configuração de OCSP stapling. Sem isso, navegadores precisam fazer uma solicitação separada para o servidor OCSP da CA para verificar se seu certificado foi revogado, adicionando 100-300ms de latência à primeira conexão. Com stapling, seu servidor obtém a resposta OCSP e a inclui no handshake TLS, eliminando esse atraso. A configuração é direta mas requer um resolver DNS funcionando em seu servidor -- se o resolver estiver mal configurado, stapling falha silenciosamente e conexões caem de volta para o caminho mais lento não-stapled.
Perguntas Frequentes
Devo usar o perfil Modern ou Intermediate? Use Intermediate para a maioria de websites de produção. Ele suporta TLS 1.2 e 1.3, cobrindo virtualmente todos os navegadores ativamente mantidos e sistemas operacionais. Use Modern (apenas TLS 1.3) para serviços internos, APIs ou novas implantações onde você pode confirmar que todos os clientes suportam TLS 1.3. Evite o perfil Legacy a menos que você deva suportar clientes mais antigos que Windows 7 ou Android 5.0.
Por que devo desabilitar TLS 1.0 e 1.1? TLS 1.0 e 1.1 têm vulnerabilidades conhecidas (BEAST, POODLE) e foram formalmente deprecados por RFC 8996 em março de 2021. Navegadores principais removeram suporte para TLS 1.0/1.1 em 2020. PCI DSS 3.2+ requer desabilitar TLS 1.0 para conformidade. Raramente há uma razão legítima para manter esses protocolos habilitados.
O que ssl_prefer_server_ciphers off significa?
Com TLS 1.3, a preferência de cipher é sempre determinada pelo servidor independentemente dessa configuração. Para TLS 1.2 com o perfil Intermediate, definir isso para off deixa o cliente escolher seu cipher preferido, que funciona bem porque todos os ciphers na lista recomendada são igualmente seguros. O perfil Modern omite essa diretiva inteiramente.
Como habilito preloading de HSTS?
Preloading de HSTS significa seu domínio está hardcoded nas listas HSTS dos navegadores, então o navegador sempre usa HTTPS mesmo na primeira visita. Adicione preload ao seu header HSTS: max-age=31536000; includeSubDomains; preload. Depois envie seu domínio em hstspreload.org. Tenha cuidado: preloading é difícil de desfazer e se aplica a todos os subdomínios, então garanta que cada subdomínio suporte HTTPS primeiro.
Por que tickets de sessão são desabilitados na configuração recomendada? Tickets de sessão TLS usam uma chave simétrica armazenada no servidor. Se essa chave for comprometida ou nunca rodada, um atacante pode descriptografar qualquer sessão gravada que foi resumida com um ticket. Desabilitar tickets e usar o cache de sessão do lado do servidor em vez disso preserva o sigilo de encaminhamento. Se você precisar de tickets (ex: para servidores distribuídos sem cache compartilhado), rode a chave de ticket pelo menos diariamente.
Como testo minha configuração TLS após implantação?
Use Qualys SSL Labs em ssllabs.com/ssltest para uma análise abrangente. Para verificações rápidas de linha de comando, use openssl s_client -connect yourserver.com:443 para verificar a versão de protocolo e cipher negociado. O comando nmap --script ssl-enum-ciphers -p 443 yourserver.com lista todos os ciphers e protocolos suportados.
Ferramentas Relacionadas
- PEM Bundle Merger - Construa o arquivo de cadeia de certificado referenciado na config gerada
- Certificate Expiry Checker - Monitore os certificados usados em sua configuração TLS
- X.509 Certificate Viewer - Inspecione os certificados antes de implantar com a config gerada
- PEM Bundle Splitter - Divida bundles de certificado para preparar arquivos para seu servidor
- Convert DER to PEM - Converta certificados para o formato PEM requerido por nginx e Apache