Pular para o conteúdo principal
Esta página não se aplica ao ClickHouse Cloud. O procedimento descrito aqui é automatizado nos serviços do ClickHouse Cloud.
Este guia apresenta configurações simples e mínimas para configurar o ClickHouse a usar certificados OpenSSL para validar conexões. Para esta demonstração, são criados um certificado e uma chave de uma autoridade certificadora (CA) autoassinada, junto com certificados de nó, para estabelecer as conexões com as configurações adequadas.
A implementação de TLS é complexa, e há muitas opções a considerar para garantir uma implantação totalmente segura e robusta. Este é um tutorial básico com exemplos de configuração básica de TLS. Consulte sua equipe de PKI/segurança para gerar os certificados corretos para a sua organização.Consulte este tutorial básico sobre o uso de certificados para ter uma visão geral introdutória.
1

Criar uma Implantação do ClickHouse

Este guia foi escrito com base no Ubuntu 20.04 e no ClickHouse instalado nos hosts a seguir por meio do pacote DEB (via apt). O domínio é marsnet.local:
Consulte o Quick Start para mais detalhes sobre como instalar o ClickHouse.
2

Criar certificados TLS

O uso de certificados autoassinados é apenas para fins de demonstração e não deve ser feito em produção. As solicitações de certificado devem ser criadas para serem assinadas pela organização e validadas usando a cadeia da CA que será configurada nas settings. No entanto, estas etapas podem ser usadas para configurar e testar as settings e, depois, substituídas pelos certificados reais que serão usados.
  1. Gere uma chave que será usada para a nova CA:
  2. Gere um novo certificado de CA autoassinado. O comando a seguir criará um novo certificado que será usado para assinar outros certificados usando a chave da CA:
Faça backup da chave e do certificado da CA em um local seguro fora do cluster. Depois de gerar os certificados dos nós, a chave deverá ser excluída dos nós do cluster.
  1. Verifique o conteúdo do novo certificado da CA:
  2. Crie uma solicitação de certificado (CSR) e gere uma chave para cada nó:
  3. Usando o CSR e a CA, crie novos pares de certificados e chaves:
  4. Verifique nos certificados o subject e o issuer:
  5. Verifique se os novos certificados são validados em relação ao certificado da CA:
3

Crie e configure um diretório para armazenar certificados e chaves.

Isso deve ser feito em cada nó. Use os certificados e as chaves apropriados em cada host.
  1. Crie uma pasta em um diretório acessível ao ClickHouse em cada nó. Recomendamos usar o diretório de configuração padrão (por exemplo, /etc/clickhouse-server):
  2. Copie o certificado da CA, o certificado do nó e a chave correspondente a cada nó para o novo diretório certs.
  3. Atualize o proprietário e as permissões para permitir que o ClickHouse leia os certificados:
4

Configure o ambiente com clusters básicos usando o ClickHouse Keeper

Para este ambiente de implantação, as seguintes configurações do ClickHouse Keeper são utilizadas em cada nó. Cada servidor terá seu próprio <server_id>. (Por exemplo, <server_id>1</server_id> para o nó chnode1, e assim por diante.)
A porta recomendada para o ClickHouse Keeper é 9281. No entanto, a porta é configurável e pode ser alterada caso já esteja em uso por outro aplicativo no ambiente.Para uma explicação completa de todas as opções, visite https://clickhouse.com/docs/operations/clickhouse-keeper/
  1. Adicione o seguinte dentro da tag <clickhouse> no config.xml do servidor ClickHouse
Para ambientes de produção, recomenda-se usar um arquivo de configuração .xml separado no diretório config.d. Para mais informações, acesse https://clickhouse.com/docs/operations/configuration-files/
Quando o ClickHouse Keeper é incorporado ao servidor ClickHouse (como mostrado acima), o Keeper usa a configuração do OpenSSL do servidor, definida na seção OpenSSL de Configurar interfaces TLS nos nós do ClickHouse. Se você executar o ClickHouse Keeper como um processo standalone, deverá adicionar uma seção <openSSL> ao arquivo de configuração do Keeper com o mesmo certificado da CA e as mesmas configurações de certificado/chave do nó. Consulte Configurar OpenSSL para ClickHouse Keeper standalone abaixo para mais detalhes.
  1. Descomente e atualize as configurações do Keeper em todos os nós e defina a opção <secure> como 1:
  2. Atualize e adicione as seguintes configurações de cluster em chnode1 e chnode2. chnode3 será usado para o quorum do ClickHouse Keeper.
Para esta configuração, apenas um cluster de exemplo está configurado. Os clusters de teste de exemplo devem ser removidos, comentados ou, se houver um cluster existente sendo testado, a porta deverá ser atualizada e a opção <secure> deverá ser adicionada. <user e <password> devem ser definidos se o usuário default tiver sido inicialmente configurado com uma senha durante a instalação ou no arquivo users.xml.
O exemplo a seguir cria um cluster com uma réplica de shard em dois servidores (um em cada nó).
  1. Defina os valores das macros para conseguir criar uma tabela ReplicatedMergeTree para testes. Em chnode1:
    No chnode2:
5

Configurar interfaces TLS nos nós do ClickHouse

As configurações abaixo são definidas no config.xml do servidor ClickHouse
  1. Defina o nome de exibição da implantação (opcional):
  2. Configure o ClickHouse para escutar em portas externas:
  3. Configure a porta https e desabilite a porta http em cada nó:
  4. Configure a porta TCP segura nativa do ClickHouse e desabilite a porta não segura padrão em cada nó:
  5. Configure a porta interserver https e desabilite a porta não segura padrão em cada nó:
  6. Configure o OpenSSL com certificados e caminhos
Cada nome de arquivo e caminho deve ser atualizado para corresponder ao nó em que está sendo configurado. Por exemplo, atualize a entrada <certificateFile> para chnode2.crt ao configurar no host chnode2.
Para mais informações, acesse https://clickhouse.com/docs/operations/server-configuration-parameters/settings/#server&#95;configuration&#95;parameters-openssl
  1. Configure o TLS para gRPC em todos os nós:
    Para mais informações, acesse https://clickhouse.com/docs/interfaces/grpc/
  2. Configure o clickhouse client em pelo menos um dos nós para usar TLS nas conexões, no respectivo arquivo config.xml (por padrão, em /etc/clickhouse-client/):
  3. Desative as portas de emulação padrão para MySQL e PostgreSQL:
6

Testes

  1. Inicie todos os nós, um de cada vez:
  2. Verifique se as portas seguras estão ativas e em escuta; o resultado deve ser semelhante a este exemplo em cada nó:
  3. Verifique a saúde do ClickHouse Keeper Os comandos típicos de 4 letras (4lW) não funcionam com echo sem TLS; veja como usar esses comandos com openssl.
    • Inicie uma sessão interativa com openssl
  • Execute os comandos 4LW na sessão do OpenSSL
  1. Inicie o cliente do ClickHouse usando a flag --secure e a porta TLS:
  2. Faça login na UI do Play pela interface https em https://chnode1.marsnet.local:8443/play.
o navegador mostrará um certificado não confiável, já que está sendo acessado a partir de uma estação de trabalho e os certificados não estão nos repositórios de CA raiz da máquina cliente. Ao usar certificados emitidos por uma autoridade pública ou por uma CA corporativa, ele deverá aparecer como confiável.
  1. Crie uma tabela replicada:
  2. Adicione duas linhas em chnode1:
  3. Verifique a replicação exibindo as linhas em chnode2:

Configure o OpenSSL para o ClickHouse Keeper autônomo

Ao executar o ClickHouse Keeper como um processo autônomo (em vez de incorporado ao ClickHouse server), os certificados e as configurações do OpenSSL devem ser definidos separadamente no arquivo de configuração do Keeper. Sem isso, o Keeper não conseguirá estabelecer conexões seguras para a comunicação com clientes (tcp_port_secure) nem para a replicação Raft entre os nós do Keeper. Adicione a seguinte seção <openSSL> ao arquivo de configuração do ClickHouse Keeper autônomo em cada nó:
Cada nome de arquivo deve ser atualizado para corresponder ao nó em que está sendo configurado. Por exemplo, atualize a entrada <certificateFile> para chnode2.crt ao configurar o host chnode2.
A seção <server> é usada para conexões de cliente de entrada na porta segura do Keeper (tcp_port_secure). A seção <client> é usada para conexões de saída entre nós do Keeper durante a replicação Raft.
Os caminhos dos certificados acima usam /etc/clickhouse-keeper/certs/, que é o caminho típico para instalações autônomas do Keeper. Se você instalou o Keeper em um caminho diferente, ajuste conforme necessário. Os certificados em si são os mesmos criados na etapa 2.

Modos de verificação do OpenSSL e manipuladores de certificado

A configuração <openSSL> oferece várias opções para <verificationMode> e <invalidCertificateHandler>, que controlam como o ClickHouse valida certificados TLS. Essas configurações se aplicam ao clickhouse-server, clickhouse-client e ao ClickHouse Keeper autônomo.

Modos de verificação

Defina <verificationMode> na seção <server> ou <client> de <openSSL>:

Manipuladores de certificados inválidos

Defina <invalidCertificateHandler> na seção <server> ou <client> de <openSSL>. Esse manipulador determina o que acontece quando a verificação do certificado falha. No lado do servidor, ele controla a resposta a certificados de cliente inválidos. No lado do cliente, ele controla a resposta a certificados de servidor inválidos.

Exemplo: desativando a verificação de certificados

Desativar a verificação de certificados remove as validações de identidade do TLS e expõe as conexões a ataques do tipo man-in-the-middle. Use essa configuração apenas em ambientes isolados de desenvolvimento ou teste.
Para ignorar totalmente a verificação de certificados (por exemplo, ao usar certificados autoassinados em um ambiente de teste), defina verificationMode como none e use AcceptCertificateHandler. No clickhouse-client, você também pode usar a flag de CLI --accept-invalid-certificate, que aplica ambas as configurações automaticamente. clickhouse-client (/etc/clickhouse-client/config.xml):
clickhouse-server (config.xml ou um arquivo em config.d/). A seção <server> ainda exige os caminhos para o certificado e a chave, porque o servidor precisa apresentar seu próprio certificado aos clientes, mesmo quando não está verificando os certificados deles:
ClickHouse Keeper autônomo (arquivo de configuração do Keeper):

Resumo

Este artigo se concentrou na configuração de um ambiente ClickHouse com TLS. As configurações variam conforme os requisitos de cada ambiente de produção; por exemplo, níveis de verificação de certificados, protocolos, cifras etc. Mas agora você já deve ter uma boa compreensão das etapas envolvidas na configuração e implementação de conexões seguras.
Última modificação em 10 de junho de 2026