ما هو سجل CAA؟
سجل CAA (تفويض هيئة إصدار الشهادات) هو نوع من سجلات DNS يحدد هيئات الشهادات (CAs) المسموح لها بإصدار شهادات SSL/TLS لنطاق. ويعمل CAA كضابط أمني يمنع إصدار شهادات غير مصرّح به حتى إذا تمكّن مهاجم من اختراق CA.
لماذا تهم سجلات CAA؟
من دون سجلات CAA، يمكن لأي هيئة من مئات هيئات الشهادات الموثوقة إصدار شهادة لنطاقك. وينشئ ذلك مخاطر منها:
- اختراق CA: إذا اختُرقت أي CA موثوقة، فقد يحصل المهاجمون على شهادات لنطاقك
- الإصدار الخاطئ: قد تصدر CAs أحياناً شهادات بصورة غير صحيحة
- الهندسة الاجتماعية: قد يخدع المهاجمون CA لإصدار شهادات غير مصرّح بها
تقلل سجلات CAA سطح الهجوم بتقييد هيئات الشهادات التي يمكنها الإصدار لنطاقك.
كيف يعمل CAA
1. ينشر مالك النطاق سجلات CAA في DNS
2. يطلب طالب الشهادة شهادة من CA
3. تفحص CA سجلات CAA الخاصة بالنطاق
4. تصدر CA الشهادة فقط إذا كانت مخوّلة (أو إذا لم توجد سجلات CAA)
5. عند عدم التخويل يجب على CA رفض الطلب
فحص CA الإلزامي
منذ سبتمبر 2017، يجب على جميع جهات إصدار الشهادات (CAs) فحص سجلات CAA قبل إصدار الشهادات. ويأتي ذلك ضمن متطلبات CA/Browser Forum الأساسية (Baseline Requirements) لحماية مستخدمي الويب.
صيغة سجل CAA
example.com. IN CAA 0 issue "letsencrypt.org"
المكونات:
- 0: الأعلام (0 = غير حرج، 128 = حرج)
- issue/issuewild/iodef: وسم الخاصية الذي يحدد نوع التفويض أو الإبلاغ عن الشهادات
- "letsencrypt.org": قيمة الخاصية، أي معرّف جهة إصدار الشهادات المصرّح لها بإصدار الشهادة
وسوم الخصائص
| وسم الخاصية | الغرض | المثال |
|---|---|---|
| issue | تخويل جهة إصدار لجميع الشهادات | issue "letsencrypt.org" |
| issuewild | تخويل جهة إصدار لشهادات البدل (wildcard) | issuewild "digicert.com" |
| iodef | الإبلاغ عن محاولات الإصدار غير المصرّح بها | iodef "mailto:[email protected]" |
أمثلة على سجلات CAA
جهة إصدار واحدة (CA واحدة، Let's Encrypt فقط)
example.com. CAA 0 issue "letsencrypt.org"
عدة CAs
example.com. CAA 0 issue "letsencrypt.org"
example.com. CAA 0 issue "digicert.com"
example.com. CAA 0 issue "sectigo.com"
تقييد wildcard
اسمح لـ Let's Encrypt، وهي جهة إصدار الشهادات، بإصدار الشهادات العادية، ولـ DigiCert بإصدار شهادات البدل (wildcard):
example.com. CAA 0 issue "letsencrypt.org"
example.com. CAA 0 issuewild "digicert.com"
منع الجميع (من دون شهادات)
يفيد ذلك للنطاقات التي لا ينبغي أن تملك شهادات:
example.com. CAA 0 issue ";"
مع الإبلاغ
example.com. CAA 0 issue "letsencrypt.org"
example.com. CAA 0 iodef "mailto:[email protected]"
معرّفات CA الشائعة
| جهة إصدار الشهادات (CA) | المعرّف النصي المستخدم في سجل DNS |
|---|---|
| Let's Encrypt، جهة إصدار الشهادات | letsencrypt.org |
| DigiCert، جهة إصدار الشهادات | digicert.com |
| Sectigo (Comodo)، جهة إصدار الشهادات | sectigo.com |
| GlobalSign، جهة إصدار الشهادات | globalsign.com |
| GoDaddy، جهة إصدار الشهادات | godaddy.com |
| Amazon، جهة إصدار الشهادات | amazon.com |
| Google Trust Services، جهة إصدار الشهادات | pki.goog |
راجع وثائق CA الخاصة بك لمعرفة المعرّف الدقيق الذي ينبغي استخدامه.
تطبيق سجلات CAA
عبر مزوّد DNS
يدعم معظم مزوّدي DNS سجلات CAA في واجهاتهم.
عبر ملف المنطقة
; Allow Let's Encrypt and DigiCert
@ IN CAA 0 issue "letsencrypt.org"
@ IN CAA 0 issue "digicert.com"
@ IN CAA 0 iodef "mailto:[email protected]"
وراثة CAA
تتبع سجلات CAA التسلسل الهرمي لـ DNS:
- إذا كانت لدى example.com سجلات CAA، فإنها تنطبق على النطاقات الفرعية
- يمكن للنطاقات الفرعية امتلاك سجلات CAA خاصة بها (لتجاوز سجل الأصل)
- عدم وجود سجلات CAA يعني أن أي CA يمكنها الإصدار
example.com. CAA 0 issue "letsencrypt.org" ; Applies to all
api.example.com. CAA 0 issue "digicert.com" ; Override for api
التحقق من سجلات CAA
باستخدام dig:dig example.com CAA
; ANSWER SECTION:
example.com. 300 IN CAA 0 issue "letsencrypt.org"
باستخدام DomScan:
curl "https://domscan.net/v1/health?domain=example.com"
# Reports hasCAA in security details
أفضل ممارسات CAA
1. اضبط CAA دائماً: قلّل سطح الهجوم
2. أدرج جميع CAs التي تستخدمها: لا تنس هيئات CDN أو موفري السحابة
3. اضبط iodef: احصل على إشعارات بالمحاولات غير المصرّح بها
4. اختبر قبل فرض السياسة: تحقق من أن CAs لديك لا تزال قادرة على الإصدار
5. حدّث السجلات: أضف CAs الجديدة قبل طلب الشهادات
مشكلات CAA الشائعة
يفشل تجديد الشهادة: CA غير موجودة في سجلات CAA، فأضفها قبل انتهاء الشهادة. تفشل شهادات CDN: CA الخاصة بموفّر CDN غير مصرّح بها، فتحقق من CA التي يستخدمها CDN. سجل CAA للنطاق الفرعي مفقود: يرث النطاق الفرعي سجل CAA الخاص بالأصل، فاضبط سجلات محددة عند الحاجة.CAA ضابط أمني بسيط لكنه قوي، وينبغي لكل نطاق تطبيقه.