Passer au contenu principal
Cette page ne concerne pas ClickHouse Cloud. La procédure décrite ici est automatisée dans les services ClickHouse Cloud.
Ce guide présente des paramètres simples et minimaux pour configurer ClickHouse afin d’utiliser des certificats OpenSSL pour valider les connexions. Pour cette démonstration, un certificat d’autorité de certification (CA) auto-signé et sa clé, ainsi que des certificats de nœud, sont créés afin d’établir les connexions avec les paramètres appropriés.
La mise en œuvre de TLS est complexe, et de nombreuses options doivent être prises en compte pour garantir un déploiement entièrement sécurisé et robuste. Il s’agit d’un tutoriel d’introduction avec des exemples de configuration TLS simple. Consultez votre équipe PKI/sécurité pour générer les certificats appropriés pour votre organisation.Consultez ce tutoriel d’introduction sur l’utilisation des certificats pour une vue d’ensemble.
1

Créer un déploiement ClickHouse

Ce guide a été rédigé avec Ubuntu 20.04, et ClickHouse a été installé sur les hôtes suivants à l’aide du paquet DEB (avec apt). Le domaine est marsnet.local :
Consultez le Quick Start pour plus de détails sur l’installation de ClickHouse.
2

Créer des certificats TLS

L’utilisation de certificats auto-signés est uniquement destinée à la démonstration et ne doit pas être utilisée en production. Les demandes de certificat doivent être créées afin d’être signées par l’organisation et validées à l’aide de la chaîne de certification de la CA qui sera configurée dans les paramètres. Toutefois, ces étapes peuvent être utilisées pour configurer et tester les paramètres, puis être remplacées par les certificats réels qui seront utilisés.
  1. Générez une clé qui sera utilisée pour la nouvelle CA :
  2. Générez un nouveau certificat de CA auto-signé. La commande suivante créera un nouveau certificat qui sera utilisé pour signer d’autres certificats à l’aide de la clé de la CA :
Sauvegardez la clé et le certificat de CA dans un emplacement sécurisé, en dehors du cluster. Après avoir généré les certificats des nœuds, la clé doit être supprimée des nœuds du cluster.
  1. Vérifiez le contenu du nouveau certificat de CA :
  2. Créez une demande de certificat (CSR) et générez une clé pour chaque nœud :
  3. À l’aide des CSR et de la CA, créez de nouvelles paires certificat-clé :
  4. Vérifiez le sujet et l’émetteur des certificats :
  5. Vérifiez que les nouveaux certificats sont bien validés par le certificat de CA :
3

Créez et configurez un répertoire pour stocker les certificats et les clés.

Cette opération doit être effectuée sur chaque nœud. Utilisez les certificats et les clés appropriés sur chaque hôte.
  1. Créez, sur chaque nœud, un dossier dans un répertoire accessible à ClickHouse. Nous recommandons le répertoire de configuration par défaut (par exemple /etc/clickhouse-server) :
  2. Copiez le certificat de l’autorité de certification (CA), le certificat du nœud et la clé correspondant à chaque nœud dans le nouveau répertoire certs.
  3. Modifiez le propriétaire et les permissions afin de permettre à ClickHouse de lire les certificats :
4

Configurer l’environnement avec des clusters de base à l’aide de ClickHouse Keeper

Pour cet environnement de déploiement, les paramètres ClickHouse Keeper suivants sont utilisés sur chaque nœud. Chaque serveur possède son propre <server_id>. (Par exemple, <server_id>1</server_id> pour le nœud chnode1, et ainsi de suite.)
Le port recommandé pour ClickHouse Keeper est 9281. Toutefois, ce port est configurable et peut être modifié s’il est déjà utilisé par une autre application dans l’environnement.Pour une explication complète de toutes les options, consultez https://clickhouse.com/docs/operations/clickhouse-keeper/
  1. Ajoutez le contenu suivant dans la balise <clickhouse> du config.xml du serveur ClickHouse
Pour les environnements de production, il est recommandé d’utiliser un fichier de configuration .xml distinct dans le répertoire config.d. Pour en savoir plus, consultez https://clickhouse.com/docs/operations/configuration-files/
Lorsque ClickHouse Keeper est intégré au ClickHouse server (comme indiqué ci-dessus), Keeper utilise la configuration OpenSSL du serveur définie dans la section OpenSSL de Configurer les interfaces TLS sur les nœuds ClickHouse. Si vous exécutez ClickHouse Keeper comme processus autonome, vous devez ajouter une section <openSSL> au fichier de configuration de Keeper avec le même certificat d’AC et les mêmes paramètres de certificat/clé du nœud. Voir Configurer OpenSSL pour un ClickHouse Keeper autonome ci-dessous pour plus de détails.
  1. Décommentez et mettez à jour les paramètres de Keeper sur tous les nœuds, puis définissez l’option <secure> sur 1 :
  2. Mettez à jour et ajoutez les paramètres de cluster suivants sur chnode1 et chnode2. chnode3 sera utilisé pour constituer le quorum de ClickHouse Keeper.
Pour cette configuration, un seul cluster d’exemple est configuré. Les clusters d’exemple de test doivent être soit supprimés, soit commentés, ou, si un cluster existant est en cours de test, le port doit être mis à jour et l’option <secure> doit être ajoutée. Les champs <user et <password> doivent être définis si l’utilisateur default a été initialement configuré avec un mot de passe lors de l’installation ou dans le fichier users.xml.
La configuration suivante crée un cluster avec un réplica de segment sur deux serveurs (un par nœud).
  1. Définissez les valeurs de macros afin de pouvoir créer une table ReplicatedMergeTree pour les tests. Sur chnode1 :
    Sur chnode2 :
5

Configurer les interfaces TLS sur les nœuds ClickHouse

Les paramètres ci-dessous sont configurés dans le config.xml du serveur ClickHouse
  1. Définissez le nom d’affichage du déploiement (facultatif) :
  2. Configurez ClickHouse pour écouter sur les ports externes :
  3. Configurez le port https et désactivez le port http sur chaque nœud :
  4. Configurez le port TCP sécurisé natif de ClickHouse et désactivez le port non sécurisé par défaut sur chaque nœud :
  5. Configurez le port interserver https et désactivez le port non sécurisé par défaut sur chaque nœud :
  6. Configurez OpenSSL avec les certificats et les chemins d’accès
Chaque nom de fichier et chaque chemin d’accès doivent être mis à jour en fonction du nœud configuré. Par exemple, remplacez la valeur de l’entrée <certificateFile> par chnode2.crt lors de la configuration de l’hôte chnode2.
Pour plus d’informations, consultez cette page
  1. Configurez TLS pour gRPC sur chaque nœud :
    Pour plus d’informations, consultez https://clickhouse.com/docs/interfaces/grpc/
  2. Configurez le client ClickHouse sur au moins un des nœuds afin d’utiliser TLS pour ses connexions, dans son propre fichier config.xml (situé par défaut dans /etc/clickhouse-client/) :
  3. Désactivez les ports d’émulation par défaut pour MySQL et PostgreSQL :
6

Tests

  1. Démarrez tous les nœuds, un à la fois :
  2. Vérifiez que les ports sécurisés sont actifs et en écoute ; le résultat devrait ressembler à cet exemple sur chaque nœud :
  3. Vérifier l’état de santé de ClickHouse Keeper Les commandes mot de 4 lettres (4lW) habituelles ne fonctionnent pas avec echo sans TLS ; voici comment les utiliser avec openssl.
    • Ouvrez une session interactive avec openssl
  • Saisissez les commandes 4LW dans la session OpenSSL
  1. Démarrez le client ClickHouse avec l’option --secure et le port TLS :
  2. Connectez-vous à l’interface Play via l’interface https à l’adresse https://chnode1.marsnet.local:8443/play.
le navigateur affichera un certificat non approuvé, car il y accède depuis un poste de travail et les certificats ne se trouvent pas dans les magasins d’AC racines de la machine cliente. Lors de l’utilisation de certificats émis par une autorité de certification publique ou une AC d’entreprise, le certificat devrait être reconnu comme fiable.
  1. Créez une table répliquée :
  2. Ajoutez quelques lignes sur chnode1 :
  3. Vérifiez la réplication en consultant les lignes sur chnode2 :

Configurer OpenSSL pour un ClickHouse Keeper autonome

Lorsque ClickHouse Keeper s’exécute en tant que processus autonome (au lieu d’être intégré à ClickHouse server), les certificats et paramètres OpenSSL doivent être configurés séparément dans le fichier de configuration de Keeper. Sans cela, Keeper ne pourra pas établir de connexions sécurisées pour les communications client (tcp_port_secure) ni pour la réplication Raft entre les nœuds Keeper. Ajoutez la section <openSSL> suivante au fichier de configuration du ClickHouse Keeper autonome sur chaque nœud :
Chaque nom de fichier doit être mis à jour pour correspondre au nœud sur lequel la configuration est appliquée. Par exemple, remplacez la valeur de l’entrée <certificateFile> par chnode2.crt lors de la configuration de l’hôte chnode2.
La section <server> est utilisée pour les connexions clientes entrantes sur le port Keeper sécurisé (tcp_port_secure). La section <client> est utilisée pour les connexions sortantes entre les nœuds Keeper lors de la réplication Raft.
Les chemins des certificats ci-dessus utilisent /etc/clickhouse-keeper/certs/, qui correspond au chemin habituel pour les installations autonomes de Keeper. Si vous avez installé Keeper dans un autre chemin, adaptez en conséquence. Les certificats eux-mêmes sont les mêmes que ceux créés à l’étape 2.

Modes de vérification d’OpenSSL et gestionnaires de certificats

La configuration <openSSL> prend en charge plusieurs options pour <verificationMode> et <invalidCertificateHandler>, qui déterminent la manière dont ClickHouse valide les certificats TLS. Ces paramètres s’appliquent à clickhouse-server, clickhouse-client et à ClickHouse Keeper autonome.

Modes de vérification

Définissez <verificationMode> dans la section <server> ou <client> de <openSSL> :

Gestionnaires de certificats invalides

Définissez <invalidCertificateHandler> dans la section <server> ou <client> de <openSSL>. Ce gestionnaire détermine le comportement à adopter lorsque la vérification du certificat échoue. Côté serveur, il contrôle la réponse aux certificats client invalides. Côté client, il contrôle la réponse aux certificats serveur invalides.

Exemple : désactiver la vérification des certificats

Désactiver la vérification des certificats supprime les vérifications d’identité TLS et expose les connexions à des attaques de type man-in-the-middle. N’utilisez cette configuration que dans des environnements isolés de développement ou de test.
Pour ignorer complètement la vérification des certificats (par exemple, lors de l’utilisation de certificats autosignés dans un environnement de test), définissez verificationMode sur none et utilisez AcceptCertificateHandler. Pour clickhouse-client, vous pouvez également utiliser l’option de CLI --accept-invalid-certificate, qui applique automatiquement les deux paramètres. clickhouse-client (/etc/clickhouse-client/config.xml) :
clickhouse-server (config.xml ou un fichier dans config.d/). La section <server> requiert toujours les chemins du certificat et de la clé, car le serveur doit présenter son propre certificat aux clients, même lorsqu’il ne vérifie pas les leurs :
ClickHouse Keeper autonome (fichier de configuration de Keeper) :

Résumé

Cet article a porté sur la configuration d’un environnement ClickHouse avec TLS. Les paramètres varient selon les exigences des environnements de production ; par exemple, les niveaux de vérification des certificats, les protocoles, les suites de chiffrement, etc. Vous devriez désormais avoir une bonne compréhension des étapes à suivre pour configurer et mettre en œuvre des connexions sécurisées.
Dernière modification le 29 juin 2026