في الوقت الحاضر ، يعد التشفير أحد أهم جوانب النقل الآمن للمعلومات. يتم تشفير البيانات المرسلة من العميل إلى الخادم باستخدام شهادة SSL. الشهادة هي مفتاح عام مصادق عليه من قبل المرجع المصدق.
يتم إصدار جميع شهادات SSL ، كقاعدة ، لفترة محدودة ، وبعد ذلك تنتهي صلاحيتها ويجب إعادة إصدارها. ومع ذلك ، هناك أوقات يمكن فيها إلغاء الشهادة قبل تاريخ انتهاء الصلاحية. هناك العديد من الأسباب لإلغاء شهادة SSL ، وأكثرها شيوعًا هو فقدان المفتاح الخاص أو اختراقه ، وتغيير بيانات تسجيل الشركة ، وما إلى ذلك.
هناك طريقتان بديلتان للتحقق مما إذا كانت شهادة SSL في قوائم الإبطال:
- CRL (قائمة الشهادات الباطلة) - للتحقق من وجود الرقم التسلسلي للشهادة في قائمة الشهادات الباطلة.
- OCSP (بروتوكول حالة الشهادة عبر الإنترنت) - يتم إرسال الشهادة إلى خادم متخصص ، حيث يتم التحقق من حالتها.
دعونا نلقي نظرة على كلتا الطريقتين بمزيد من التفاصيل باستخدام وحدة تحكم Ubuntu. وكمثال على ذلك ، دعنا نتحقق من الشهادة لنطاق habr.com للمراجعة.
CRL
قم بتنزيل شهادة المجال التي نحن مهتمون بها:
echo -n | openssl s_client -connect habr.com:443 -servername habr.com 2>&1 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /tmp/habr.com.crt
بفضل Legioner للتلميح لإضافة المعلمة -servername - من الضروري تحديد الشهادة الصحيحة إذا كان هناك العديد من (SNI) مثبتة على نفس عنوان IP.ننظر إلى تفاصيل الشهادة:
openssl x509 -noout -text -in /tmp/habr.com.crt
نحن مهتمون بقسم "نقاط توزيع X509v3 CRL" بند "الاسم الكامل".
قم بتنزيل قائمة CLR من هذا الرابط:
wget http://crl.comodoca.com/COMODORSADomainValidationSecureServerCA.crl
ننتقي الرقم التسلسلي للشهادة:
openssl x509 -in /tmp/habr.com.crt -noout -serial
نتطلع لمعرفة ما إذا كان هذا الرقم في قائمة CRL:
openssl crl -inform DER -text -in COMODORSADomainValidationSecureServerCA.crl | grep "90E58B0601C3AD98F07AEE092041C437"
إذا لم يتم العثور على شيء ، فلن يتم إبطال الشهادة.
OCSP
سنعرض شهادة المجال الذي يهمنا وسلسلة الشهادات المتوسطة:
echo -n | openssl s_client -connect habr.com:443 -showcerts
احفظ شهادة المجال والشهادة المتوسطة (الرمز بين السطور ----- BEGIN CERTIFICATE ----- and ----- END CERTIFICATE -----) في الملفات:
/tmp/habr.com.crt /tmp/intermediate.crt
تحديد خادم OCSP:
openssl x509 -in /tmp/habr.com.crt -noout -ocsp_uri
سنرسل طلبًا إلى خادم OCSP للتحقق من شهادة الإلغاء:
openssl ocsp -url http://ocsp.comodoca.com -issuer /tmp/intermediate.crt -cert /tmp/habr.com.crt -text
إذا تم تحديد كل شيء بشكل صحيح ، فيجب على خادم OCSP إرجاع المعلومات الموجودة على الشهادة.
إليك آخر خطوط الاهتمام:
Response verify OK /tmp/habr.com.crt: good
يشار إلى عدم وجود شهادة في قائمة الشهادات التي تم إلغاؤها بالقيمة "good" ، إذا تم إبطال الشهادة ، فسيتم إبطال القيمة.
الأتمتة
ليس من السهل دائمًا فحص شهادات SSL يدويًا لإبطالها ، لذلك يمكن أتمتة عملية التحقق.
للقيام بذلك ، نأخذ نص ssl-check-revoc.sh الجاهز مع
Github ، الذي يتحقق من الشهادات باستخدام طريقة CRL:
wget https://raw.githubusercontent.com/o-pod/security/master/ssl-check-revoc.sh
بعد ذلك ، اجعل البرنامج النصي قابل للتنفيذ:
chmod a+x ssl-check-revoc.sh
يمكنك الآن التحقق من كل من الشهادات المثبتة بالفعل للمجال وتلك المخزنة محليًا في الملفات (الخيار -f):
./ssl-check-revoc.sh habr.com -v
زبكس
يمكن للنص البرمجي ssl-check-revoc.sh التحقق من الشهادات ليس فقط من وحدة التحكم ، كما أنه مناسب تمامًا كمدقق لـ Zabbix ، وبالتالي يمكن أن يعهد إلى جميع أنظمة العمل القذرة لتتبع شهادات الدخول إلى قائمة الإبطال.
ننتقل إلى / Zabbix config /etc/zabbix/zabbix_server.conf ونرى أين توجد البرامج النصية لعمليات الفحص الخارجية:
ExternalScripts=/etc/zabbix/externalscripts
نقوم بنسخ نصنا إلى هذا الدليل وإعادة تشغيل Zabbix:
sudo cp ssl-check-revoc.sh /etc/zabbix/externalscripts/ sudo systemctl restart zabbix-server
نذهب إلى واجهة الويب وننشئ نموذجًا (تكوين >> قوالب >> إنشاء نموذج). لاسم القالب ، حدد "فحص قالب SSL". بعد ذلك ، داخل القالب ، قم بإنشاء عنصر "شهادة SSL في قائمة الإبطال" (العنصر) ، وحدد "ssl-check-revoc.sh [{HOST.NAME}]" كمفتاح ، مع نوع التحقق هو "فحص خارجي". يمكن تعيين الفاصل الزمني للتفتيش حسب تقديرك ، اعتمادًا على مدى أهمية المشروع.

ستحتاج أيضًا إلى محفزين:
1. للإشارة إلى إلغاء الشهادة "شهادة المجال {HOST.NAME} في قائمة الإبطال"
التعبير: "{Template Custom SSL Checking: ssl-check-revoc.sh [{HOST.NAME}]. Last ()} = 1"

2. للإشارة إلى خطأ في حالة حدوث خطأ (على سبيل المثال ، هناك مشاكل في خادم CLR ، وما إلى ذلك) "خطأ في التحقق من شهادة المجال {HOST.NAME}"
التعبير: "{Template Custom SSL Checking: ssl-check-revoc.sh [{HOST.NAME}]. Last ()} = 2"

لا تنس في الإجراءات (التهيئة >> الإجراءات) لتكوين طريقة الإخطار في حالة تشغيل.
الآن يبقى إنشاء مضيفين ، سنقوم بالتحقق من شهاداتهم بانتظام (تكوين >> مضيفين >> إنشاء مضيف). في علامة التبويب "النماذج" ، اربط نموذج فحص SSL الخاص بنا.

هذا كل ما في الأمر! يمكنك النوم بهدوء: إذا كانت شهادة طبقة المقابس الآمنة لنطاقك لأي سبب تندرج في قائمة الشهادات التي تم إلغاؤها ، فسيخبرك Zabbix فورًا.