Ir para o conteúdo

Capítulo 42 – Certificados SSL ACME

Introdução

A segurança da comunicação na Internet moderna depende diretamente do uso de certificados digitais SSL/TLS. Esses certificados permitem estabelecer conexões criptografadas e autenticadas entre clientes e servidores, garantindo confidencialidade, integridade e autenticidade das informações trocadas.

No contexto do OPNsense, os certificados SSL têm papel fundamental em diversas frentes:

  • Proxy Reverso (NGINX) – para publicar sites e sistemas internos com HTTPS válido.
  • WebGUI do Firewall – para acessar o painel de administração de forma segura.
  • Captive Portal – para oferecer autenticação segura a visitantes ou usuários de rede.
  • Serviços de VPN e autenticação – em conexões remotas onde a verificação de identidade é crucial.

O OPNsense integra-se à Let's Encrypt, uma Autoridade Certificadora gratuita e automatizada que segue o protocolo ACME (Automatic Certificate Management Environment). Com o plugin os-acme-client, o próprio firewall é capaz de emitir, renovar e instalar certificados válidos automaticamente, sem depender de processos manuais ou de compras em provedores comerciais.

Este capítulo mostrará como configurar o plugin ACME no OPNsense para emitir certificados SSL válidos e automatizar sua renovação, assegurando que os serviços internos e externos operem sempre sob conexões seguras.


Entendendo o Protocolo ACME e a Let's Encrypt

Antes de entrarmos na configuração prática, é importante compreender o que acontece “por trás dos bastidores”.

O protocolo ACME é o mecanismo que permite que clientes (como o OPNsense) comprovem automaticamente a posse de um domínio perante a Let's Encrypt. Para isso, ele executa um processo de validação (challenge) que confirma que o domínio realmente aponta para o servidor que solicita o certificado.

Existem diversos tipos de validação, mas o mais comum — e o que utilizaremos aqui — é o HTTP-01 Challenge. Nesse método, o OPNsense cria temporariamente um pequeno arquivo de verificação acessível via HTTP (porta 80). A Let's Encrypt então faz uma requisição a esse arquivo; se ela conseguir lê-lo, confirma que o domínio é legítimo e emite o certificado SSL.

Sobre o Projeto Let's Encrypt

A Let's Encrypt é amplamente aceita e apoiada por empresas como Mozilla, Google, Cisco e Cloudflare. Seus certificados são reconhecidos por todos os navegadores modernos e podem ser renovados automaticamente a cada 90 dias, sem custo algum.


Pré-Requisitos

Antes de configurar o ACME Client, certifique-se de que o ambiente cumpre os seguintes requisitos:

  1. Domínio válido registrado no provedor DNS (exemplo: intranet.citrait.com.br).
  2. O domínio deve estar apontando para o IP público do firewall OPNsense.
  3. As portas 80 (HTTP) e 443 (HTTPS) devem estar liberadas e redirecionadas para o firewall.
  4. O firewall não pode estar atrás de CGNAT (Carrier-Grade NAT). Se o endereço IP recebido estiver na faixa 100.64.0.0/10, significa que há CGNAT e a validação externa não será possível.
  5. Caso o modem do provedor esteja em modo roteado, é necessário configurar o port forwarding (DMZ do modem) das portas 80 e 443 para o OPNsense.

Importante

O processo de emissão depende do acesso externo ao domínio. Se a Let's Encrypt não conseguir se comunicar com o firewall pela Internet, a validação do certificado falhará.

Alternativas

O processo de validação (challenge) não precisa ser obrigatoriamente via HTTP. Você também pode usar o desafio DNS que permite a emissão de certificados mesmo sem o firewall estar aberto para a internet. Entretanto, aqui abordaremos o método HTTP que é o mais comum e não requer um provedor de DNS como Cloudflare, Azure, entre outros que fornecem APIs avançadas.


Etapa 1 – Instalar e Ativar o Plugin ACME Client

  1. Acesse o menu System → Firmware → Plugins.

  2. Localize e instale o plugin os-acme-client.

  3. Após a instalação, atualize a página (F5) para que o novo menu seja exibido.

  4. Vá em Services → ACME Client → Settings e configure conforme abaixo:

    • Enable Plugin: habilitar
    • Auto Renewal: habilitar
    • Show Introduction Pages: desativar (opcional, apenas para simplificar o painel)
  5. Clique em Apply.

Importante

Habilitar a opção Auto Renewal garante que o OPNsense renove automaticamente os certificados antes da expiração, sem necessidade de intervenção manual.


Etapa 2 – Registrar uma Conta com a Let's Encrypt

A conta ACME é o identificador usado pelo OPNsense para se comunicar com a Let's Encrypt.

  1. Vá em Services → ACME Client → Accounts.

  2. Clique em + Add, preencha os dados abaixo e clique em Save.

    Campo Valor sugerido
    Name Nome da empresa ou do ambiente (ex.: CITRAIT)
    Description Conta para emissão de certificados ACME
    E-mail Endereço de contato válido (obrigatório)
  3. Após salvar, na coluna Commands, clique em Register Account.

  4. Confirme com Yes e aguarde o status mudar de unknown para OK (registered).

Importante

Esse registro é feito diretamente com os servidores da Let's Encrypt e é gratuito. O e-mail informado será usado apenas para notificações importantes, como expiração ou problemas de emissão.


Etapa 3 – Criar o Challenge (Validação do Domínio)

A próxima etapa é configurar o tipo de desafio (challenge) que o firewall usará para comprovar o domínio.

  1. Vá em Services → ACME Client → Challenge Types.

  2. Clique em + Add e configure conforme o exemplo abaixo:

    Campo Valor
    Name http-challenge
    Challenge Type HTTP-01
    HTTP Service OPNsense Web Service (automatic port forward)
    IP Auto-Discovery habilitado
    Interface Interface WAN (ou o link de Internet principal)
  3. Clique em Save.

Desafio HTTP-01

O HTTP-01 é o método mais simples e automatizado. O OPNsense cria uma regra temporária de redirecionamento da porta 80 para a porta da WebGUI para atender a requisição de validação vinda da Let's Encrypt.


Etapa 4 – Emitir o Certificado SSL

  1. Vá em Services → ACME Client → Certificates.

  2. Clique em + Add e preencha:

    • Common Name: Nome do domínio - exemplo: intranet.citrait.com.br
    • ACME Account: Selecione a conta criada anteriormente
    • Challenge Type: http-challenge
  3. Clique em Save.

  4. Após salvar, clique em Issue/Renew All Certificates.

  5. Aguarde alguns instantes até o processo de validação e emissão ser concluído.

Se tudo ocorrer corretamente, o status do certificado aparecerá como OK, com a data de emissão exibida.

Erro comum: NXDOMAIN

Caso apareça o erro Verification error details: DNS problem: NXDOMAIN, verifique se o domínio realmente existe no provedor DNS e se o IP público do firewall está corretamente associado ao nome de domínio.


Etapa 5 – Renovação Automática

Os certificados da Let's Encrypt são válidos por 90 dias. O plugin ACME no OPNsense pode cuidar da renovação automática.

  1. Vá em Services → ACME Client → Settings.
  2. Acesse a guia Update Schedule.
  3. Confirme o horário de execução da renovação (por padrão, diariamente à meia-noite).
  4. Clique em Save e depois em Apply.

Importante

É recomendável manter a verificação diária. O ACME renovará apenas quando o certificado estiver a menos de 30 dias da expiração.


Aplicando o Certificado Emitido

Depois que o certificado é emitido e validado, ele pode ser aplicado a diversos serviços do OPNsense.

1. WebGUI do Firewall

  1. Vá em System → Settings → Administration.
  2. No campo SSL Certificate, selecione o certificado recém-criado.
  3. Clique em Save.
  4. Acesse o painel pela URL HTTPS com o hostname correspondente ao certificado (ex.: https://intranet.citrait.com.br).

Importante

Evite acessar a WebGUI diretamente por IP após aplicar o certificado, pois o navegador exibirá aviso de segurança se a URL não corresponder ao nome do certificado.


2. Proxy Reverso (NGINX)

Se estiver utilizando o NGINX Reverse Proxy, o certificado ACME pode ser atribuído aos frontends HTTPS criados para sites internos.

  1. Vá em Services → NGINX → Configuration → HTTP(S) → HTTP Server.
  2. Edite o frontend desejado e, no campo TLS Certificate, selecione o certificado ACME.
  3. Salve e clique em Apply.

3. Captive Portal

  1. Vá em Services → Captive Portal → Administration.
  2. Selecione o zone desejado.
  3. Em HTTPS Server Certificate, escolha o certificado válido emitido pela Let's Encrypt.
  4. Salve as alterações.

Dessa forma, os usuários não verão mais o alerta de site inseguro ao tentar autenticar-se na rede.


Logs e Diagnóstico

Se a emissão falhar, é possível acompanhar os detalhes em tempo real:

  • Vá em Services → ACME Client → Log Files.
  • Analise as mensagens de erro e status do processo.

Os logs normalmente indicam claramente se o problema está relacionado a:

  • DNS incorreto,
  • porta 80 bloqueada,
  • ou falha de comunicação externa.

Observações e Boas Práticas

  1. Portas 80/443 exclusivas: não use simultaneamente a WebGUI e o NGINX nas mesmas portas sem reconfiguração prévia — isso gera conflito.
  2. Evite certificados autoassinados: embora funcionem internamente, geram avisos de insegurança e reduzem a confiança dos usuários.
  3. Automatize sempre: deixe o plugin ACME responsável por renovar e substituir certificados expirados automaticamente.
  4. DNS confiável: mantenha servidores DNS estáveis e com propagação rápida; evite DNS público com cache longo ao testar emissões.
  5. Monitoramento: revise periodicamente a validade dos certificados em Services → ACME Client → Certificates.

Próximos Passos

Com os certificados SSL emitidos e aplicados corretamente, o ambiente está pronto para operar com comunicações seguras e autenticadas. Os próximos capítulos abordarão como aplicar esses certificados em serviços específicos — como o Proxy Reverso (NGINX).

Conclusão

A configuração do ACME Client no OPNsense permite que o próprio firewall atue como gestor automático de certificados SSL, reduzindo a necessidade de tarefas manuais e eliminando riscos associados a certificados vencidos. Em um mundo cada vez mais conectado, automatizar a confiança digital é uma das melhores práticas de segurança — e o OPNsense oferece essa funcionalidade de forma simples, robusta e gratuita.