الخلاصة
- الـ staple إفادة موقعة عن CertID محدد وفي أزمنة محددة. يثبت التوقيع سلطة المجيب، ولا يثبت أنه عرف كل إلغاء لاحق أو أنشأ الإجابة لهذه المصافحة.
- تختلف
producedAtوthisUpdateوnextUpdate، وتضاف إليها أوقات الجلب وعمر HTTP والتثبيت وساعة العميل والحد الأقصى للعمر. - ينقل TLS الدليل، أما العميل فيقرر أثره. يجب حفظ هوية الشهادة والتفويض والحالة والزمن ومصدر النسخة المؤقتة وموضع السلسلة وMust-Staple وسياسة الفشل.
إجابة صحيحة عبرت حدث الإلغاء
وقّع المجيب good عند 09:55، وجلبها الخادم عند 09:57، ثم وقع الإلغاء بعد عشر دقائق. لا تستطيع سلامة التوقيع أو بقاء النافذة الزمنية أن تضيفا لاحقاً حدثاً لم يكن في الإفادة.
يحدد CertID السؤال عبر تجزئة اسم المُصدر ومفتاحه والرقم التسلسلي والخوارزمية. استجابة صحيحة لرقم آخر تجيب عن شهادة أخرى، واستجابة شهادة الطرف لا تغطي الشهادة الوسيطة تلقائياً.
يمنح RFC 6960 كلمة good معنى محدوداً: في الحد الأدنى لا توجد شهادة سارية بذلك الرقم مسجلة كملغاة. لا يثبت ذلك دائماً أن الشهادة أُصدرت، ولا يضمن وصول الأحداث اللاحقة لـthisUpdate فوراً.
يجب أن يوقع المُصدر أو مجيب فوّضه صراحةً لتوقيع OCSP. توقيع رياضي صحيح بلا تفويض لا يملك السلطة، ومجيب مفوض قد يوقع رؤية أقدم. لذلك يلزم حفظ CertID وموضع السلسلة وشهادة المجيب والتفويض ونتيجة التوقيع وتجزئة البايتات الأصلية.
الزمن والتخزين المؤقت جزء من القرار
producedAt وقت التوقيع، وthisUpdate آخر وقت عُرفت فيه الحالة صحيحة، وnextUpdate حد إتاحة معلومة أحدث. يسمح RFC 6960 بالإنتاج المسبق، ويجعل RFC 9919 التخزين المؤقت وnextUpdate جزءاً أصيلاً من ملفه.
تضيف التشغيلات أوقات تسجيل الإلغاء، واستيعابه، وDate/Age في HTTP، والجلب، وإعادة التحقق، والتثبيت، والمصافحة، وساعة العميل. سماحية انحراف الساعة ليست حداثة إضافية. thisUpdate البعيد في المستقبل، أو nextUpdate المنقضي، أو العمر المحلي الزائد، أسباب منفصلة للرفض.
يخفض التخزين المؤقت زمن الاتصال ويحمي الخصوصية ويبعد توافر المجيب عن كل مصافحة. يجب أن يسجل الخادم المصدر والرؤوس والتجزئة ووقت الجلب وإعادة التحقق والتثبيت وموعد التجديد. تحميل استجابة صحيحة عند البدء لا يثبت استمرار التجديد.
الـ nonce وTLS وMust-Staple ليست دليلاً واحداً
يربط nonce الطلب بالاستجابة. أما staple المشترك بين عملاء كثيرين فلا يحمل عادة nonce جديداً لكل عميل؛ تعتمد حداثته على النافذة الموقعة والحد الأقصى للعمر والتجديد. مصافحة جديدة لا تعني إنتاجاً جديداً.
حتى TLS 1.2 يعلن العميل status_request ويمكن للخادم إرسال CertificateStatus؛ ويربط TLS 1.3 الحالة بمدخلات الشهادات. يثبت سجل IANA هوية الامتداد، لا التفاوض أو القبول.
الوجود لا يساوي الصلاحية: يعرض BoringSSL بايتات خاماً لا يضمن سلامة بنيتها، ويفصل OpenSSL بين الطلب والتثبيت والقراءة. وقد يعني الغياب أن العميل لم يطلب، أو أن الجلسة مستأنفة بلا تبادل شهادات، أو أن سياسة soft fail سمحت بالاستمرار.
يضبط Must-Staple الغياب: يستطيع العميل رفض اتصال افتقد الحالة المطلوبة. التطبيق ليس موحداً لدى جميع العملاء، ولا يصلح هذا الامتداد CertID خاطئاً أو تفويضاً أو توقيعاً أو زمناً فاسداً أو حالة unknown أو revoked.
الدليل هو التجديد العامل
يستطيع TLS 1.3 ربط استجابات بمواقع متعددة في السلسلة، بينما تحمل الإصدارات الأقدم عادة استجابة لشهادة الطرف. يجب حفظ العدد والموضع؛ ولا تعد الجلسة المستأنفة بلا شهادة مشاهدة OCSP جديدة.
يفصل OpenSSL بين البحث عن CertID واستخراج الحالة وفحص الزمن مع الانحراف والعمر الأقصى والتحقق من سلطة الموقع. يدمج GnuTLS الفحص لكنه يتطلب تجديداً دورياً وقد يتطلب تبديل بيانات الاعتماد. ويوصي BoringSSL بالجلب والتحديث قبل المصافحة بدلاً من طلب شبكي متزامن داخلها.
تشمل الاختبارات السلبية رقماً تسلسلياً آخر، ومجيباً بلا تفويض، وthisUpdate مستقبلياً، وnextUpdate منقضياً، واستجابة قديمة بلا حد، وبايتات تالفة، وغياب staple إلزامي، وسلسلة ناقصة، واحتساب الاستئناف كفحص جديد، وتوقف المجدد، وإرجاع الساعة. يجب أن يسبق الإنذار رفض الاتصالات.
المصادر
- https://www.rfc-editor.org/rfc/rfc6960.html
- https://www.rfc-editor.org/rfc/rfc9919.html
- https://www.rfc-editor.org/rfc/rfc8954.html
- https://www.rfc-editor.org/rfc/rfc6066.html
- https://www.rfc-editor.org/rfc/rfc9846.html
- https://www.rfc-editor.org/rfc/rfc7633.html
- https://www.rfc-editor.org/rfc/rfc9325.html
- https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml
- https://docs.openssl.org/3.6/man3/SSL_CTX_set_tlsext_status_cb/
- https://docs.openssl.org/3.6/man3/OCSP_resp_find_status/
- https://www.gnutls.org/manual/html_node/OCSP-stapling.html
- https://www.gnutls.org/manual/html_node/OCSP-API.html
- https://boringssl.googlesource.com/boringssl/+/refs/heads/main/include/openssl/ssl.h
- https://heng.lu/running-code-primary-the-patch-needed-to-preserve-the-internet-original-design/
إحاطة الأعضاء
سياق أعمق للملف الشخصي
سجّل الدخول بمستوى العضوية المناسب لفتح الإحاطة الكاملة وملاحظات المصادر.
للدائرة الاستراتيجية فقط
الدائرة الاستراتيجية
مفتوح لجميع القراء. افتح إحاطات الملف الشخصي بعد الانضمام وتسجيل الدخول.
انضم إلى الدائرة الاستراتيجيةلأعضاء تحالف القيادات فقط
تحالف القيادات
لأصحاب الأصول الفكرية المؤهلين وللإدارة؛ سجّل الدخول للوصول إلى إحاطات التحالف.
انضم إلى تحالف القيادات
