As etapas a seguir podem ser usadas para habilitar SSL em um único servidor ClickHouse com o Let’s Encrypt, uma Autoridade Certificadora (CA) gratuita, automatizada e aberta, criada para facilitar a proteção de sites com HTTPS. Ao automatizar o processo de emissão e renovação de certificados, o Let’s Encrypt garante que os sites permaneçam seguros sem exigir intervenção manual.
Assumimos que o ClickHouse foi instalado nos locais padrão de instalação dos pacotes neste guia. Usamos o domínio product-test-server.clickhouse-dev.com em todos os exemplos. Substitua-o pelo seu domínio, conforme o caso.
- Verifique se você tem um registro DNS
A ou AAAA apontando para o seu servidor. Isso pode ser feito com a ferramenta do Linux dig. Por exemplo, a resposta para product-test-server.clickhouse-dev.com ao usar o servidor DNS da Cloudflare 1.1.1.1:
Observe a seção abaixo, que confirma a existência de um registro A.
- Abra a porta 80 no seu servidor. Essa porta será usada para a renovação automática de certificados com o protocolo ACME usando o certbot. Na AWS, isso pode ser feito modificando o grupo de segurança associado à instância.
- Instale o
certbot, por exemplo, usando o apt
- Obtenha um certificado SSL
Não temos um servidor web em execução no nosso servidor, então use a opção (1), permitindo que o Certbot use um servidor web temporário independente.
Insira o nome de domínio completo do seu servidor, por exemplo product-test-server.clickhouse-dev.com, quando solicitado.
O Let’s Encrypt tem uma política de não emitir certificados para certos tipos de domínios, como domínios públicos gerados por provedor de Cloud (por exemplo, domínios AWS *.compute.amazonaws.com). Esses domínios são considerados infraestrutura compartilhada e são bloqueados por motivos de segurança e prevenção de abuso.
- Copie os certificados para o diretório do ClickHouse.
Este comando configura um cron job para automatizar o gerenciamento dos certificados SSL do Let’s Encrypt para o servidor ClickHouse. Ele é executado a cada minuto como usuário root, copiando os arquivos .pem do diretório do Let’s Encrypt para o diretório de configuração do servidor ClickHouse, mas apenas se os arquivos tiverem sido atualizados. Após a cópia, o script ajusta a propriedade dos arquivos para o usuário e grupo clickhouse, garantindo que o servidor tenha o acesso necessário. Ele também define permissões seguras de somente leitura (chmod 400) nos arquivos copiados para manter uma segurança rígida dos arquivos. Isso garante que o servidor ClickHouse sempre tenha acesso aos certificados SSL mais recentes sem exigir intervenção manual, mantendo a segurança e minimizando a sobrecarga operacional.
- Configure o uso desses certificados no clickhouse-server.
- Reinicie o servidor ClickHouse
- Verifique se o ClickHouse consegue se comunicar por SSL
Para que esta última etapa funcione, talvez seja necessário garantir que a porta 8443 esteja acessível, por exemplo, incluída no seu grupo de segurança da AWS. Como alternativa, se você quiser acessar o ClickHouse apenas no servidor, modifique seu arquivo hosts, isto é.
Se você abrir conexões a partir de endereços curinga, certifique-se de que pelo menos uma das seguintes medidas seja adotada:
- o servidor esteja protegido por firewall e não seja acessível por redes não confiáveis;
- todos os usuários estejam restritos a um subconjunto de endereços de rede (consulte users.xml);
- todos os usuários tenham senhas fortes, apenas interfaces seguras (TLS) estejam acessíveis ou as conexões sejam feitas apenas por interfaces TLS.
- usuários sem senha tenham acesso somente leitura.
Veja também: https://www.shodan.io/search?query=clickhouseO blog Building single page applications with ClickHouse pode ser usado como referência para proteger instâncias públicas.
O texto a seguir também deve funcionar se você se conectar a partir da máquina local em que o ClickHouse está em execução. Para se conectar via product-test-server.clickhouse-dev.com, abra a porta 9440 no seu: