Étapes à suivre
Les étapes suivantes permettent d’activer SSL pour un seul serveur ClickHouse à l’aide de Let's Encrypt, une autorité de certification (CA) gratuite, automatisée et ouverte, conçue pour permettre à chacun de sécuriser facilement ses sites web avec HTTPS. En automatisant le processus d’émission et de renouvellement des certificats, Let's Encrypt garantit que les sites web restent sécurisés sans nécessiter d’intervention manuelle.
- Vérifiez que vous disposez d’un enregistrement DNS
AouAAAApointant vers votre serveur. Vous pouvez le vérifier à l’aide de l’outil Linuxdig. Par exemple, voici la réponse pourproduct-test-server.clickhouse-dev.comlors de l’utilisation du serveur DNS Cloudflare1.1.1.1:
dig @1.1.1.1 product-test-server.clickhouse-dev.com
; <<>> DiG 9.18.28-0ubuntu0.22.04.1-Ubuntu <<>> @1.1.1.1 product-test-server.clickhouse-dev.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22315
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;product-test-server.clickhouse-dev.com. IN A
;; ANSWER SECTION:
product-test-server.clickhouse-dev.com. 300 IN A 34.248.59.9
;; Query time: 52 msec
;; SERVER: 1.1.1.1#53(1.1.1.1) (UDP)
;; WHEN: Thu Dec 12 09:37:33 UTC 2024
;; MSG SIZE rcvd: 83Notez la section ci-dessous, qui confirme la présence d’un enregistrement A.
;; ANSWER SECTION:
product-test-server.clickhouse-dev.com. 300 IN A 34.248.59.9- Ouvrez le port 80 sur votre serveur. Ce port sera utilisé pour le renouvellement automatique du certificat via le protocole ACME avec certbot. Sur AWS, cela peut se faire en modifiant le Security Group associé à l’instance.

- Installez
certbot, par exemple avecapt
sudo apt install certbot- Obtenez un certificat SSL
sudo certbot certonly
Saving debug log to /var/log/letsencrypt/letsencrypt.log
How would you like to authenticate with the ACME CA?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Spin up a temporary webserver (standalone)
2: Place files in webroot directory (webroot)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 1
Please enter the domain name(s) you would like on your certificate (comma and/or
space separated) (Enter 'c' to cancel): product-test-server.clickhouse-dev.com
Requesting a certificate for product-test-server.clickhouse-dev.com
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/product-test-server.clickhouse-dev.com/fullchain.pem
Key is saved at: /etc/letsencrypt/live/product-test-server.clickhouse-dev.com/privkey.pem
This certificate expires on 2025-03-12.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
* Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
* Donating to EFF: https://eff.org/donate-leSaisissez le nom de domaine complet de votre serveur, par ex. product-test-server.clickhouse-dev.com, lorsqu'il vous sera demandé.
- Copiez les certificats dans le répertoire ClickHouse.
echo '* * * * * root cp -u /etc/letsencrypt/live/product-test-server.clickhouse-dev.com/*.pem /etc/clickhouse-server/ && chown clickhouse:clickhouse /etc/clickhouse-server/*.pem && chmod 400 /etc/clickhouse-server/*.pem' | sudo tee /etc/cron.d/copy-certificatesCette commande configure une tâche cron pour automatiser la gestion des certificats SSL Let's Encrypt d’un serveur ClickHouse. Elle s’exécute chaque minute en tant qu’utilisateur root et copie les fichiers .pem du répertoire Let's Encrypt vers le répertoire de configuration du serveur ClickHouse, mais uniquement si ces fichiers ont été mis à jour. Après la copie, le script attribue les fichiers à l’utilisateur et au groupe clickhouse, afin de garantir au serveur les droits d’accès nécessaires. Il applique également des permissions sécurisées en lecture seule (chmod 400) aux fichiers copiés afin de renforcer la sécurité des fichiers. Cela garantit que le serveur ClickHouse a toujours accès aux certificats SSL les plus récents, sans intervention manuelle, tout en maintenant un bon niveau de sécurité et en réduisant au minimum la surcharge opérationnelle.
- Configurez l’utilisation de ces certificats dans clickhouse-server.
echo "https_port: 8443
tcp_port_secure: 9440
openSSL:
server:
certificateFile: '/etc/clickhouse-server/fullchain.pem'
privateKeyFile: '/etc/clickhouse-server/privkey.pem'
disableProtocols: 'sslv2,sslv3,tlsv1,tlsv1_1'" | sudo tee /etc/clickhouse-server/config.d/ssl.yaml- Redémarrez le serveur ClickHouse
sudo clickhouse restart- Vérifiez que ClickHouse peut communiquer en SSL
curl https://product-test-server.clickhouse-dev.com:8443/
Ok.Pour que cette dernière étape fonctionne, vous devrez peut-être vous assurer que le port 8443 est accessible, par exemple en l’autorisant dans votre Security Group AWS. Sinon, si vous souhaitez uniquement accéder à ClickHouse depuis le serveur, modifiez votre fichier hosts, c.-à-d.
echo "127.0.0.1 product-test-server.clickhouse-dev.com" | sudo tee -a /etc/hostsCe qui suit devrait également fonctionner si vous vous connectez depuis la machine locale sur laquelle ClickHouse s’exécute. Pour vous connecter via product-test-server.clickhouse-dev.com, ouvrez le port 9440 dans votre :
clickhouse client --secure --user default --password <password>