الخطوات التي يجب اتباعها
يمكن استخدام الخطوات التالية لتمكين SSL لخادم ClickHouse واحد باستخدام Let's Encrypt، وهي جهة إصدار شهادات (CA) مجانية وآلية ومفتوحة، صُممت لتسهيل تأمين مواقع الويب باستخدام HTTPS على الجميع. ومن خلال أتمتة عملية إصدار الشهادات وتجديدها، تضمن Let's Encrypt بقاء مواقع الويب آمنة من دون الحاجة إلى تدخل يدوي.
- تحقّق من وجود سجل DNS من النوع
AأوAAAAيشير إلى خادمك. ويمكنك إجراء ذلك باستخدام أداة Linux dig.على سبيل المثال، يكون الرد الخاص بـproduct-test-server.clickhouse-dev.comعند استخدام خادم DNS الخاص بـ Cloudflare 1.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: 83لاحظ القسم أدناه الذي يؤكد وجود سجل من النوع A.
;; ANSWER SECTION:
product-test-server.clickhouse-dev.com. 300 IN A 34.248.59.9- افتح المنفذ 80 على خادمك. سيُستخدم هذا المنفذ للتجديد التلقائي للشهادة باستخدام بروتوكول ACME مع certbot. في AWS، يمكن تنفيذ ذلك من خلال تعديل مجموعة الأمان المرتبطة بالمثيل.

- ثبّت
certbot، على سبيل المثال باستخدامapt
sudo apt install certbot- احصل على شهادة 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-leأدخل اسم النطاق الكامل لخادمك، مثل product-test-server.clickhouse-dev.com، عندما يُطلب منك ذلك.
- انسخ الشهادات إلى دليل 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-certificatesيُنشئ هذا الأمر مهمة cron لأتمتة إدارة شهادات SSL من Let's Encrypt لخادم ClickHouse. وتعمل كل دقيقة بصلاحيات المستخدم root، إذ تنسخ ملفات .pem من دليل Let's Encrypt إلى دليل تهيئة خادم ClickHouse، ولكن فقط إذا كانت هذه الملفات قد حُدِّثت. وبعد النسخ، يضبط البرنامج النصي ملكية الملفات لتكون للمستخدم والمجموعة clickhouse، بما يضمن امتلاك الخادم صلاحية الوصول المطلوبة. كما يضبط أذونات قراءة فقط آمنة (chmod 400) على الملفات المنسوخة للحفاظ على مستوى صارم من أمان الملفات. ويضمن ذلك أن خادم ClickHouse يتمكن دائمًا من الوصول إلى أحدث شهادات SSL دون الحاجة إلى تدخل يدوي، مع الحفاظ على الأمان وتقليل العبء التشغيلي.
- اضبط استخدام هذه الشهادات في 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- أعد تشغيل خادم ClickHouse
sudo clickhouse restart- تحقّق من أن ClickHouse يمكنه الاتصال عبر SSL
curl https://product-test-server.clickhouse-dev.com:8443/
Ok.لكي تنجح هذه الخطوة الأخيرة، قد تحتاج إلى التأكد من أن المنفذ 8443 متاح للوصول، مثلًا بإضافته إلى مجموعة الأمان الخاصة بك في AWS. أو، إذا كنت تريد الوصول إلى ClickHouse من الخادم فقط، فعدّل ملف hosts، أي:
echo "127.0.0.1 product-test-server.clickhouse-dev.com" | sudo tee -a /etc/hostsيجب أن يعمل ما يلي أيضًا عند الاتصال من الجهاز المحلي الذي يعمل عليه ClickHouse. للاتصال عبر product-test-server.clickhouse-dev.com، افتح المنفذ 9440 في:
clickhouse client --secure --user default --password <password>