Skip to main content

حل خطأ التحقق من شهادة SSL ذي الرمز 210 في ClickHouse

يُبلَّغ عن هذا الخطأ عادةً على النحو التالي: Code: 210. DB::NetException: SSL Exception: error:1000007d:SSL routines:OPENSSL_internal:CERTIFICATE_VERIFY_FAILED

سبب الخطأ

يحدث هذا الخطأ أثناء محاولة الاتصال بخادم ClickHouse باستخدام clickhouse-client. ويكون سبب الخطأ أحد الأمرين التاليين:
  • أن ملف التهيئة config.xml يفتقد إلى شهادة الجذر في مخزن شهادات CA الافتراضي على الجهاز، أو
  • وجود شهادة CA موقعة ذاتيًا أو شهادة صادرة عن CA داخلية غير مُهيأة

الحل

إذا كنت تستخدم CA داخلية أو موقعة ذاتيًا، فقم بتهيئة شهادة الجذر الخاصة بـ CA في config.xml داخل دليل العميل (على سبيل المثال /etc/clickhouse-client)، وعطّل تحميل شهادات جذر CA الافتراضية من موقعها الافتراضي. فيما يلي مثال على التهيئة:

عملاء بايثون على macOS

يُظهر عملاء بايثون هذا الخطأ بصيغة مختلفة، وعادةً ما تكون كالتالي: ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate على macOS، يتحقق إصدار بايثون من python.org من الشهادات عبر المسارات الافتراضية لـ OpenSSL بدلًا من سلسلة مفاتيح النظام. في التثبيت الجديد، لا تشير هذه المسارات إلى أي حزمة شهادات الجذر: يرفق المثبّت certifi، لكنه لا يربطه بالموقع الافتراضي لـ OpenSSL إلا بعد تشغيل البرنامج النصي المرفق Install Certificates.command. وحتى ذلك الحين، لا يتمكن العميل من التحقق من صحة شهادة الخادم الخاصة بـ ClickHouse Cloud، رغم أن هذه الشهادة صالحة. وينطبق ذلك عمومًا على إصدارات python.org المخصّصة لـ macOS (بايثون 3.6 والإصدارات الأحدث)، وليس على بايثون 3.11 فقط. شغّل Install Certificates.command لربط certifi بمسار الشهادات الافتراضي في OpenSSL. وعدّل رقم الإصدار في المسار ليتوافق مع التثبيت لديك:
بدلاً من ذلك، وجّه العميل إلى حزمة certifi مباشرةً. لا يلجأ ClickHouse Connect إلى certifi تلقائيًا، لذا مرّر الحزمة عبر المعامل ca_cert:

موارد إضافية

راجع وثائق تهيئة clickhouse-client.
آخر تعديل في ١٤ أغسطس ٢٠٢٦