Este repositório contém dois scripts bash para automatizar a geração de certificados TLS usando Certbot e a rotação de certificados no MongoDB. Os scripts são projetados para serem executados em um servidor Linux com acesso à CLI do Google Cloud e ao Certbot.
-
generate_certificates.sh
Este script principal automatiza o processo de registro de uma conta no Certbot, geração de certificados TLS usando um plugin de DNS do Cloudflare, e chama um script secundário para manipular os certificados e rotacioná-los no MongoDB.
-
manage_certificates.sh
Este script secundário manipula os certificados gerados, concatenando a chave privada e o certificado completo em um único arquivo para uso pelo MongoDB. Também executa um comando no MongoDB para rotacionar os certificados.
- Certbot: Instalado e configurado.
- Google Cloud CLI: Instalado e configurado.
- MongoDB Shell (
mongosh
): Instalado e configurado no servidor. - Permissões: Acesso de administrador para executar comandos que manipulam certificados e interagem com o MongoDB.
Antes de executar os scripts, certifique-se de que os seguintes pré-requisitos estão atendidos:
-
API do Cloudflare: Tenha suas credenciais do Cloudflare disponíveis em um arquivo
.ini
que será usado pelo Certbot. -
Permissões: Assegure-se de que o usuário executando os scripts tenha permissões para criar e modificar diretórios e arquivos necessários.
-
Executar Permissões: Garanta que os scripts tenham permissões de execução:
chmod +x generate_certificates.sh manage_certificates.sh
generate_certificates.sh
Este script é o ponto de entrada principal. Ele executa os seguintes passos:
-
Registra uma conta no Certbot: Se uma conta ainda não estiver registrada.
-
Gera certificados TLS: Usando o plugin de DNS do Cloudflare para validar o domínio.
-
Chama o script secundário: Para manipular os certificados e rotacioná-los no MongoDB.
```bash
./generate_certificates.sh <email> <dns> <member> <path_to_cloudflare_ini>
```
<email>
: O endereço de e-mail para registro no Certbot.<dns>
: O domínio para o qual o certificado deve ser gerado (use um curinga, se necessário, como *.example.com).<member>
: O membro da conta de serviço do Google Cloud para adicionar a política de IAM.<path_to_cloudflare_ini>
: Caminho para o arquivo de credenciais do Cloudflare.
manage_certificates.sh
Este script secundário é chamado pelo script principal para manipular e rotacionar os certificados no MongoDB.
Este script não deve ser chamado diretamente, pois depende de variáveis e arquivos configurados pelo script principal.
-
Certificados: Os certificados são gerados em
/etc/letsencrypt/live/<domain>/
-
Manipulação de Certificados: Os certificados e chaves privadas são concatenados em
/etc/mongo-tls/gcp/mongodb.pem
. -
Permissões de Certificados: Os arquivos e diretórios gerados são atribuídos ao usuário e grupo mongod com permissões restritas.
-
Rotação de Certificados no MongoDB: Executa
db.runCommand({rotateCertificates: 1})
usando mongosh.
-
Credenciais Sensíveis: Mantenha o arquivo .ini do Cloudflare seguro e restrinja o acesso.
-
Auditoria: Verifique regularmente os logs e o comportamento do MongoDB para garantir que a rotação de certificados ocorra conforme esperado.