NGINX introduz suporte nativo ao protocolo ACME
(blog.nginx.org)- O NGINX lançou uma versão preview com suporte nativo ao protocolo ACME, que automatiza a emissão e a renovação de certificados SSL/TLS
- Por meio do novo módulo baseado em Rust
ngx_http_acme_module, agora é possível solicitar, instalar e renovar certificados apenas com a configuração do NGINX, sem ferramentas externas - Com isso, reduz-se a dependência de ferramentas externas como o Certbot, aumentando a segurança e a independência de plataforma
- A versão inicial oferece suporte ao desafio HTTP-01, e o suporte a TLS-ALPN e DNS-01 está planejado para o futuro
- Espera-se que o suporte a ACME desempenhe um papel importante na automação de segurança não apenas na web, mas também em ambientes de IoT e edge computing
Visão geral e principais mudanças
- O NGINX lançou uma versão preview do suporte ao protocolo ACME
- Com o novo módulo
ngx_http_acme_module, ele foi projetado para permitir que solicitações, instalação e renovação de certificados sejam tratadas diretamente na configuração do NGINX - Esse suporte a ACME utiliza internamente o NGINX-Rust SDK e é fornecido na forma de um módulo dinâmico baseado em Rust
- Tanto usuários de código aberto quanto clientes corporativos do NGINX Plus podem usar esse recurso
- Ao reduzir a dependência de ferramentas externas como o Certbot, aumenta-se a segurança e a eficiência do gerenciamento de certificados
Introdução ao protocolo ACME
- O protocolo ACME (Automated Certificate Management Environment) é um protocolo de comunicação que automatiza a emissão, validação, renovação e revogação de certificados SSL/TLS
- O cliente pode gerenciar diretamente o ciclo de vida do certificado por meio de comunicação automatizada com a CA (Certificate Authority), sem intervenção manual de intermediários
- Foi desenvolvido e lançado em 2015 pelo Internet Security Research Group (ISRG) no projeto Let’s Encrypt
- Antes do surgimento do ACME, o processo de emissão de certificados era manual e tinha custos mais altos e maior probabilidade de erros
- O ACMEv2 mais recente adicionou vários recursos, como métodos de autenticação e suporte a wildcard, aumentando a flexibilidade e a segurança
Fluxo de automação de certificados baseado em ACME no NGINX
- No NGINX, a automação do ciclo de vida de certificados com o protocolo ACME ocorre nas 4 etapas abaixo
-
1. Configuração do servidor ACME
- Para ativar o recurso ACME, é obrigatório especificar a URL de diretório do servidor ACME com
acme_issuer - Em caso de emissão de certificado, também é possível definir opcionalmente informações de contato do cliente, caminho para armazenamento de dados de estado e outros itens
- Para ativar o recurso ACME, é obrigatório especificar a URL de diretório do servidor ACME com
-
2. Alocação de memória compartilhada (zone)
- Com
acme_shared_zone, é possível configurar adicionalmente uma zone de memória compartilhada para armazenar certificados, chaves privadas e dados de desafio - O tamanho padrão é 256K, podendo ser ampliado conforme a necessidade
- Com
-
3. Configuração do desafio (Challenge)
- A versão preview atual oferece suporte apenas ao desafio HTTP-01, usado para verificar a propriedade do domínio
- Para isso, é necessário definir na configuração do NGINX um listener na porta 80 e uma configuração padrão de resposta 404
- Futuramente, haverá suporte aos desafios TLS-ALPN e DNS-01
-
4. Emissão e renovação de certificados
- Ao adicionar a diretiva
acme_certificateao bloco de servidor, é possível automatizar a emissão/renovação de certificados TLS para o domínio correspondente - Normalmente, o domínio alvo da emissão do certificado é especificado com
server_name - Expressões regulares e wildcards em
server_namenão são suportados na versão preview - As variáveis do módulo
$acme_certificatee$acme_certificate_keyvinculam automaticamente o certificado e a chave
- Ao adicionar a diretiva
Principais vantagens
- O protocolo ACME está no centro do rápido crescimento do uso de HTTPS no mundo
- Com o gerenciamento automatizado de certificados, os custos de gestão do ciclo de vida dos certificados e os erros causados por trabalho manual são reduzidos de forma significativa
- A remoção de ferramentas externas reduz a superfície de ataque e garante portabilidade
- Promove a padronização da segurança em diversos ambientes
Planos futuros
- Está previsto adicionar suporte aos desafios TLS-ALPN e DNS-01
- Expansão de recursos com base no feedback dos usuários
- Com a ampliação da adoção de IoT, APIs e edge computing, espera-se que o ACME passe a desempenhar um papel central em uma gama ainda maior de infraestruturas automatizadas de segurança no futuro
- O suporte nativo a ACME no NGINX deve servir de base para transformar segurança web, automação e escalabilidade em um padrão do futuro
Primeiros passos
- Usuários de código aberto podem usar o módulo pré-compilado em NGINX Linux packages
- Clientes corporativos do NGINX Plus recebem o recurso na forma de módulo dinâmico com suporte da F5
- Consulte a documentação do módulo em NGINX Docs
1 comentários
Comentários no Hacker News
O método DNS-01 é uma funcionalidade bem mais relevante para usuários de nginx que não ficam publicamente expostos (por exemplo, ao usar Nginx Proxy Manager). Sempre achei o DNS-01 a solução mais limpa, já que basta atualizar os registros. Estou realmente esperando por esse recurso.
O Caddy é claramente mais fácil que o nginx. Ele oferece templates que cobrem vários serviços, testes e até serviços especiais para instituições de ensino, além de logs melhores, um gerenciamento de certificados perfeito para mim e métricas superiores.
Ainda estou estudando a parte de plugins, mas o caddy não tem rate limiting, e por causa de um bug no Power BI, um determinado usuário acaba requisitando imagens 300 mil vezes por dia, o que é bem inconveniente.
Mas vai levar um bom tempo até esse recurso aparecer nos repositórios stable do Ubuntu ou Debian.
Além disso, ainda não há suporte a desafio DNS (certificados wildcard), então no curto prazo isso provavelmente não ajuda muito o Dokku.
Estou experimentando o dokku (ainda estou), mas senti que a barreira de entrada é relativamente alta.
Por exemplo, no Coolify foi possível integrar o deploy imediatamente só criando um GitHub App, e também já tive experiência construindo e implantando containers com GH Actions.
A documentação oficial do dokku parece mais uma referência, dá até a sensação de estar lendo uma enciclopédia: documentação oficial sobre inicialização do git no dokku
Senti falta de um guia inicial mais direto, no estilo “comece por aqui”, como o do Coolify: ajuda de integração com GitHub no Coolify
Seria ótimo se o Dokku tivesse um guia de introdução com metas e conclusão por etapas, instalação de apps OSS populares e um tutorial que cobrisse de uma vez proxy reverso e vários aplicativos populares em ambiente bare metal.
No fim das contas, o objetivo de usar o Dokku não é o Dokku em si, mas chegar de forma fácil e rápida ao “estado desejado” com a ajuda dele.
No final, eu quero um processo sem dor em que eu possa “clicar em um repositório de que gosto e implantá-lo direto na minha máquina”. Depois disso, aí sim quero explorar os detalhes internos.
Software sem lançamento oficial v1.0.0 pode mudar a interface a qualquer momento e sem aviso. Versão major 0 acaba virando armadilha em algum momento.
Recomendo cobrar dos mantenedores um lançamento estável.
O dehydrated está na major version 0 há 7 anos.
Vale a pena ver também o 0ver.org:
é uma filosofia de versionamento na linha de “se está em produção, já deveria ser 1.0.0”.
Mais detalhes aqui.
ngx_http_acme_modulefoi incluído em pacotes de várias distribuições Linux, mas o Debian stable ficou de fora.De acordo com a lista oficial de pacotes do nginx, há pacotes para oldstable/oldoldstable, mas não para o Debian 13 Trixie, lançado há 4 dias.
O nginx só agora está passando a oferecer algo que o Caddy e o Traefik já faziam há 5 anos.
Claro, ainda acho que é uma mudança positiva. Pelo menos agora fica mais cômodo, sem precisar rodar o certbot manualmente.
O nginx está introduzindo isso com quase 9 ou 10 anos de atraso.
Sempre achei melhor a filosofia Unix de fazer uma coisa bem e compor ferramentas.
Ferramentas que tentam fazer tudo inevitavelmente acabam ficando aquém em alguma área.
Mesmo quando o certbot tenta configurar tudo automaticamente, ele costuma não funcionar bem fora dos ambientes mais padrão.
Fazer tudo diretamente dentro do nginx parece até uma solução melhor.
Também fiquei curioso se isso abre caminho para usar facilmente alternativas ao Let's Encrypt.
O Caddy é realmente útil porque já traz muitas conveniências prontas para uso.
Pessoalmente, o motivo de eu ainda não ter migrado completamente para o Caddy é a necessidade dos módulos de rate limiting e geo do nginx.