Certificados Wildcard SSL com ACME (Let's Encrypt) e PfSense
De que forma os servidores do Let's Encrypt verificam se você realmente é dono do DNS?
Verificação via HTTP (http-01)
O servidor do Let's Encrypt fará uma requisição HTTP (ou HTTPs caso ocorra um redirecionamento)
(A requisição funcionará mesmo que feita via HTTPs e o certificado apresentado pelo web-server seja inválido, vencido, auto assinado, etc)
Verificação via DNS (dns-01)
O servidor do Let's Encrypt fará uma requisição DNS TXT no registro _acme-challenge.seudominio.dns com uma chave "digest" como valor.
Desafios em utilizar o ACME no pfSense
Desafios com a verificação via http-01
Este é o modo de verificação mais recomendado pela comunidade, entretanto o pfSense não conta com um servidor http embarcado por padrão. Para isso podemos utilizaro haproxy, entretanto não recomenda-se utilizá-lo para hospedar arquivos estáticos como o nginx.
Desafios com a verificação via dns-01
O servidor de DNS utilizado (se não estiver hospedado no próprio pfSense) deve ter uma API para atualizar o registro TXT automaticamente. Por sorte o pacote ACME do pfSense implementa algumas APIs automaticamente, entretanto algumas podem não funcionar corretamente.
Desafios gerais
Caso o pfSense seja firewall de um IP dinâmico, é preciso que, cada vez que o IP mude, o servidor de DNS aponte para o novo endereço. O serviço de DNS utilizado deve ter alguma ferramenta para atualização do DNS através de uma API ou algo do gênero. A este tipo de serviço chama-se de DynDNS ou Dynamic DNS.
Minha experiência e passo-a-passo
Criei uma conta no ClouDNS e criei um nome de domínio gratuito.
Criei uma conta no Digital Ocean e criei uma zona de DNS com o nome de domínio criado no ClouDNS.
Criei um subdomínio do nome de domínio criado no ClouDNS e apontei os registros NS para os da Digital Ocean
Passei a utilizar a Digital Ocean como servidor DNS. Eles tem boa integração com o pacote ACME do pfSense.
Referências
Documentação oficial fo pfSense Netgate do pacote ACME
https://docs.netgate.com/pfsense/en/latest/packages/acme/index.html
Tutorial ensinando a criar certificados wildcard ou não através do pacote ACME do pfSense
https://www.danielcolomb.com/2019/08/29/creating-wildcard-certificates-on-pfsense-with-lets-encrypt/
Tutorial ensinando a criar certificados através do pacote ACME do pfSense
https://blog.devita.co/pfsense-to-proxy-traffic-for-websites-using-pfsense/