Se você é como eu e não quer dados não criptografados fluindo em sua rede ou talvez até na Internet, este post é para você! Adotarei o CloudFlare DNS, pois ele tem API para integrar-se com o serviço Let’s Encrypt através do plugin ACME. Tanto o CloudFlare quanto o Let’s Encrypt são gratuitos, então é um bom começo!
Configuração do CloudFlare
Aqui eu assumo que você escolheu o CloudFlare como seu provedor de DNS e configurou o Registrar do seu domínio para apontar para servidores de nome do CloudFlare. Em posts futuros eu posso cobrir este tópico com mais profundidade, mas a página deles tem um assistente intuitivo que passa pelo básico e põe tudo para funcionar em poucos minutos.
Para emitir certificados Let’s Encrypt, você tem que fazer login em sua conta CloudFlare e coletar algumas informações. Na página de visão geral, você pode coletar ID da zona e ID da conta. Anote o e-mail que você usou para criar seu CloudFlare, pois você também precisará dele.
Em seguida, clique em Obter o token API. Na página API Tokens haverá duas informações que você precisa. A primeira é a chave global de API dentro da seção Chaves de API ; basta clicar no botão Exibir .
O segundo é o API Token, que devemos gerar com permissões apropriadas. Para gerá-lo, clique no botão Criar tokens na seção Tokens API . Uma tabela com vários modelos será listada. Clique no Usar modelo na linha Editar DNS da zona. Na próxima página, na seção Permissões, haverá três campos a serem definidos. Selecione Zona, DNS e Editar nos três campos. A próxima seção é Recursos da Zona e requer dois campos a serem definidos. Selecione Incluir e Todas as zonas. Você pode deixar Filtro de endereço IP e o TTL em branco e clique em Continuar. Uma página de confirmação será exibida e você tem que clicar no botão Criar token . Na próxima etapa, você tem que copiar o token gerado e salvar um lugar seguro. Nunca mais será exibido, então não perca!
Opcional: Registro de DNS CAA
Um Registro caa (Certification Authority Authorization, autorização de autoridade de certificação) é usado para especificar quais autoridades de certificado (CAs) podem emitir certificados para um domínio. Podemos usá-lo para garantir que um CA comprometido emita certificados para seu domínio por acidente.
Para permitir que somente Let’s Encrypt possa emitir certificados para o seu domínio, a partir do painel CloudFlare, clique no nome de seu domínio e, em seguida, no botão DNS . Na página DNS, clique em Adicionar registro e faça o seguinte
- Tipo: CAA
- Nome: @
- TTL: Auto
- Tag: Só permita nomes de host específicos
- Nome de domínio CA: letsencrypt. Org
Termine o processo clicando em Salvar. Se você estiver usando certificados curinga (wildcard certificates), você precisa de um segundo registro CAA com Tag Permita apenas curingas (wildcard). Uma entrada CAA para curinga não substitui o CAA para nomes de host específicos, como o domínio raiz! No caso raro de que um subdomínio está usando um CA diferente, você pode ter que mudar nome para algo diferente de @, como subdomínio1, etc.
Neste momento, você tem todas as informações para configurar o ACME no seu pfSense. Vamos lá!
Configuração pfSense ACME
No seu pfSense, vá para Sistema >> Gerenciador de pacotes >> Pacotes Disponíveis. Na tabela Pacotes, clique no botão Instalar para o pacote acme . Depois de clicar no botão Confirmar, a instalação deve ser iniciada.
Acesse a página de Serviços >> Certificados Acme. A partir daí, clique nas Chaves de conta e preencha Nome, Descrição, E-mail com suas informações. Escolha Let’s Encrypt Staging ACME v2 (for Testing purposes) como servidor ACME durante os testes. Clique em Criar nova chave de conta, clique no botão Registre chave de conta ACME e, finalmente, clique em Salvar para terminar o processo de criação da conta no Let’s Encrypt.
Com uma conta válida Let’s Encrypt configurada, é hora de criar os certificados. Clique na guia Certificados e clique em Adicionar e preencha o formulário como abaixo:
- Nome: Qualquer coisa que te ajude a identificar seu certificado. Deve ser único. Você pode usar a URL para o certificado, como abc.dominio.com
- Descrição: é um campo de texto opcional e… autoexplicativo
- Estado: Ativo
- Chave privada: RSA de 2048 bits
- OCSP deve grampear: deixe sem controle
- Para a lista SAN de domínio, você tem que criar uma entrada para cada certificado que deseja emitir. Aqui vamos criar apenas um, mas você pode criar mais.
- Modo: Habilitado
- Nome de domínio: FQDN para o certificado, como ‘abc.dominio.com’
- Método: DNS-Cloudflare
- Chave: Refere-se à chave global de API da conta CloudFlare
- Email: E-mail usado para criar sua conta no CloudFlare
- Símbolo: Refere-se ao Token API gerado no CloudFlare
- ID da conta: Refere-se ao ID da conta do CloudFlare
- ID da zona: Refere-se ao Zone ID também do CloudFlare
- Habilite o modo de alias DNS: Deixe em branco
- Ativar o modo de alias de domínio DNS: Deixar em branco
- DNS-Sleep: Se o seu pfSense estiver bloqueando DNS sobre HTTPS, o plugin ACME pode não ser capaz de verificar o domínio usando desafios DNS. Nesse caso, defina DNS-Sleep para 300s
- Lista de ações: Deixe em branco
- Renovação do certificado após: Deixe em branco
Clique Salvar e você será redirecionado para a página da lista de certificados. Clique no botão Emitir/Renovar na linha que contém seu certificado recém-criado. Um ícone de engrenagem giratória aparecerá e depois de algum tempo seu certificado deve ser emitido. Uma caixa de texto verde aparecerá com detalhes de seus certificados. Às vezes, a interface do usuário mostrará um ícone semelhante a um link de corrente quebrado, o que significa que algo deu errado. Atualize a página e veja a coluna Renovada pela última vez. Se a data estiver atualizada, então tudo correu bem e você pode desconsiderar o ícone alarmante.
Você pode repetir as etapas acima e criar vários Certificados para diferentes dispositivos/domínios, como um para o seu pfSense (por exemplo, pfsense.lan.dominio.com), outro para o UDM Pro (por exemplo, unifi.lan.dominio.com) e/ou sua NAS (synology.lan.dominio.com). Isso é útil, pois os dispositivos internos não serão capazes de emitir seus próprios certificados, pois o Let’s Encrypt precisa da porta 80 e você pode ter um único dispositivo usando-o
Uma vez que o certificado é gerado, você pode vê-lo na página de Sistema >> Gerenciador de Certificados >> Certificados. Você também pode encontrá-lo em /cf/conf/acme/certificate_name.* no sistema de arquivos pfSense.
Lembre-se que você escolheu emitir um certificado de Teste (staging) no início, o que significa que este é um certificado falso, apenas para fins de teste. Agora que tudo está funcionando, exclua o certificado criado nesta página através do ícone lixeira, vá para Serviços >> Certificados Acme >> Chaves de Conta e clique no ícone de edição para sua conta Let’s Encrypt. Altere o servidor ACME para Let’s Encrypt Production ACME v2, clique em Gerar novo botão de chave de conta, clique no botão Registrar chave de conta ACME e termine as alterações clicando em Salvar. Vá para a guia Certificados e clique em emitir/renovar novamente, para substituir o certificado de teste existente por um de produção. Se você for à página Sistema >> Gerenciador de Certificados >> Certificados, você poderá ver o novo certificado de produção. Yay!
Renovação automática de Certificados
Agora que você tem o seu certificado Let’s Encrypt, eles serão válidos por cerca de 90 dias. a fim de automatizar o processo de renovação – e é por isso que optamos por usar desafios de DNS em oposição a outras abordagens mais simples, temos que dar um passo extra. Vá para Serviços >> ACME >> Configuração e selecione a caixa Entrada cron e clique em Salvar. É isso!
Opcional: Preparação para automação
Esta é uma etapa opcional que permite que o pfSense salve os certificados em um diretório de configuração que podemos usar para automação futura, como a instalação de certificados Let’s Encrypt em sua aplicação NAS Synology ou UDM-Pro. Vá para Serviços >> ACME >> Configurações e selecione Gravar Certificados e Salvar. A partir de agora você pode copiar os certificados mais recentes de /conf/acme/certificate_name.*.