Scroll to navigation

SSL_CTX_ADD1_CHAIN_CERT(3SSL) OpenSSL SSL_CTX_ADD1_CHAIN_CERT(3SSL)

الاسم

SSL_CTX_set0_chain, SSL_CTX_set1_chain, SSL_CTX_add0_chain_cert, SSL_CTX_add1_chain_cert, SSL_CTX_get0_chain_certs, SSL_CTX_clear_chain_certs, SSL_set0_chain, SSL_set1_chain, SSL_add0_chain_cert, SSL_add1_chain_cert, SSL_get0_chain_certs, SSL_clear_chain_certs, SSL_CTX_build_cert_chain, SSL_build_cert_chain, SSL_CTX_select_current_cert, SSL_select_current_cert, SSL_CTX_set_current_cert, SSL_set_current_cert - معالجة سلسلة شهادات إضافية

موجز

 #include <openssl/ssl.h>
 int SSL_CTX_set0_chain(SSL_CTX *ctx, STACK_OF(X509) *sk);
 int SSL_CTX_set1_chain(SSL_CTX *ctx, STACK_OF(X509) *sk);
 int SSL_CTX_add0_chain_cert(SSL_CTX *ctx, X509 *x509);
 int SSL_CTX_add1_chain_cert(SSL_CTX *ctx, X509 *x509);
 int SSL_CTX_get0_chain_certs(SSL_CTX *ctx, STACK_OF(X509) **sk);
 int SSL_CTX_clear_chain_certs(SSL_CTX *ctx);
 int SSL_set0_chain(SSL *ssl, STACK_OF(X509) *sk);
 int SSL_set1_chain(SSL *ssl, STACK_OF(X509) *sk);
 int SSL_add0_chain_cert(SSL *ssl, X509 *x509);
 int SSL_add1_chain_cert(SSL *ssl, X509 *x509);
 int SSL_get0_chain_certs(SSL *ssl, STACK_OF(X509) **sk);
 int SSL_clear_chain_certs(SSL *ssl);
 int SSL_CTX_build_cert_chain(SSL_CTX *ctx, flags);
 int SSL_build_cert_chain(SSL *ssl, flags);
 int SSL_CTX_select_current_cert(SSL_CTX *ctx, X509 *x509);
 int SSL_select_current_cert(SSL *ssl, X509 *x509);
 int SSL_CTX_set_current_cert(SSL_CTX *ctx, long op);
 int SSL_set_current_cert(SSL *ssl, long op);

الوصف

SSL_CTX_set0_chain() و SSL_CTX_set1_chain() تضبطان سلسلة الشهادات المرتبطة بالشهادة الحالية لـ ctx إلى sk.

SSL_CTX_add0_chain_cert() و SSL_CTX_add1_chain_cert() تُلحقان الشهادة المفردة x509 بالسلسلة المرتبطة بالشهادة الحالية لـ ctx.

SSL_CTX_get0_chain_certs() تسترجع السلسلة المرتبطة بالشهادة الحالية لـ ctx.

SSL_CTX_clear_chain_certs() تمسح أي سلسلة موجودة مرتبطة بالشهادة الحالية لـ ctx. (يُطبَّق هذا باستدعاء SSL_CTX_set0_chain() مع ضبط sk على NULL).

SSL_CTX_build_cert_chain() تبني سلسلة الشهادات لـ ctx. عادةً، يستخدم هذا مخزن السلسلة أو مخزن التحقق إذا لم يُضبط مخزن السلسلة. إذا نجحت الدالة، ستحل السلسلة المبنية محل أي سلسلة موجودة. يمكن ضبط معامل flags على SSL_BUILD_CHAIN_FLAG_UNTRUSTED لاستخدام شهادات السلسلة الموجودة كمراجع تصديق غير موثوقة، و SSL_BUILD_CHAIN_FLAG_NO_ROOT لحذف مرجع التصديق الجذر من السلسلة المبنية، و SSL_BUILD_CHAIN_FLAG_CHECK لاستخدام جميع شهادات السلسلة الموجودة فقط لبناء السلسلة (فحص صحتها وإعادة ترتيبها إذا لزم الأمر)، والعلم SSL_BUILD_CHAIN_FLAG_IGNORE_ERROR يتجاهل أي أخطاء أثناء التحقق: إذا ضُبط العلم SSL_BUILD_CHAIN_FLAG_CLEAR_ERROR أيضًا، تُمسح أخطاء التحقق من قائمة انتظار الأخطاء. تفاصيل عملية بناء السلسلة موصوفة في "بناء مسار التصديق" في openssl-verification-options(1).

كل من هذه الدوال تعمل على شهادة الكيان النهائي الحالي (أي الخادم أو العميل). هذه هي آخر شهادة حُمِّلت أو اختيرت على بنية ctx المقابلة.

SSL_CTX_select_current_cert() تختار x509 كشهادة الكيان النهائي الحالية، ولكن فقط إذا حُمِّلت x509 بالفعل في ctx باستخدام دالة مثل SSL_CTX_use_certificate().

SSL_set0_chain(), SSL_set1_chain(), SSL_add0_chain_cert(), SSL_add1_chain_cert(), SSL_get0_chain_certs(), SSL_clear_chain_certs(), SSL_build_cert_chain(), SSL_select_current_cert() و SSL_set_current_cert() متشابهة باستثناء أنها تُطبق على بنية SSL ssl.

SSL_CTX_set_current_cert() تغير الشهادة الحالية إلى قيمة بناءً على وسيط op. حاليًا، يمكن أن يكون op هو SSL_CERT_SET_FIRST لاستخدام أول شهادة صالحة أو SSL_CERT_SET_NEXT لتعيين الشهادة الصالحة التالية بعد الشهادة الحالية. يمكن استخدام هاتين العمليتين للتكرار عبر جميع الشهادات في بنية SSL_CTX.

SSL_set_current_cert() تدعم أيضًا الخيار SSL_CERT_SET_SERVER. إذا كان ssl خادمًا وأرسل شهادة إلى عميل متصل، يضبط هذا الخيار تلك الشهادة كالشهادة الحالية ويعيد 1. إذا كانت حزمة المُعمِّي المتفاوَض عليها مجهولة (وبالتالي لن تُرسل أي شهادة)، يُعاد 2 وتبقى الشهادة الحالية دون تغيير. إذا لم يكن ssl خادمًا أو لم تُرسل شهادة، يُعاد 0 وتبقى الشهادة الحالية دون تغيير.

كل هذه الدوال مُطبَّقة كوحدات ماكرو. تلك التي تحتوي على 1 تزيد عدد المراجع للشهادة أو السلسلة المقدمة، لذا يجب تحريرها في وقت ما بعد العملية. تلك التي تحتوي على 0 لا تزيد عدد المراجع، ويجب ألا تُحرر الشهادة أو السلسلة المقدمة بعد العملية.

ملاحظات

تُنسخ السلاسل المرتبطة ببنية SSL_CTX إلى أي بنى SSL عند استدعاء SSL_new(). لن تتأثر بنى SSL بأي سلاسل تُغير لاحقًا في SSL_CTX الأصلي.

يمكن ضبط سلسلة واحدة لكل نوع مفتاح يدعمه الخادم. لذا، على سبيل المثال، يمكن لشهادة RSA و DSA أن يكون لهما (وغالبًا ما يكون) سلاسل مختلفة.

يمكن استخدام الدالتين SSL_CTX_build_cert_chain() و SSL_build_cert_chain() لفحص تكوين التطبيق ولضمان إرسال أي مراجع تصديق فرعية ضرورية بالترتيب الصحيح. التطبيقات ذات التكوين الخاطئ التي ترسل سلاسل شهادات غير صحيحة غالبًا ما تسبب مشاكل مع الأقران.

على سبيل المثال، يمكن لتطبيق إضافة أي مجموعة من الشهادات باستخدام SSL_CTX_use_certificate_chain_file() ثم استدعاء SSL_CTX_build_cert_chain() مع الخيار SSL_BUILD_CHAIN_FLAG_CHECK لفحصها وإعادة ترتيبها.

يمكن للتطبيقات إصدار تحذيرات غير قاتلة عند فحص السلاسل بضبط العلم SSL_BUILD_CHAIN_FLAG_IGNORE_ERRORS وفحص القيمة المُعادة.

استدعاء SSL_CTX_build_cert_chain() أو SSL_build_cert_chain() أكثر كفاءة من بناء السلسلة الآلي لأنه يُنفَّذ مرة واحدة فقط. يُنفَّذ بناء السلسلة الآلي في كل جلسة جديدة.

إذا أُضيفت أي شهادات باستخدام هذه الدوال، فلن تُستخدم أي شهادات أُضيفت باستخدام SSL_CTX_add_extra_chain_cert().

القيم المُرجعة

SSL_set_current_cert() مع SSL_CERT_SET_SERVER تُرجع 1 للنجاح، و2 إذا لم تُستخدم شهادة خادم لأن حُزَم المُعمِّي مجهولة، و0 للفشل.

SSL_CTX_build_cert_chain() و SSL_build_cert_chain() تُرجعان 1 للنجاح و0 للفشل. إذا وُجد العلم SSL_BUILD_CHAIN_FLAG_IGNORE_ERROR وحدث خطأ تحقق، فتُرجع 2.

جميع الدوال الأخرى تُرجع 1 للنجاح و0 للفشل.

انظر أيضًا

ssl(7), SSL_CTX_add_extra_chain_cert(3)

التاريخ

أُضيفت هذه الدوال في OpenSSL 1.0.2.

حقوق النسخ

حقوق النشر 2013-2021 لمؤلفي مشروع OpenSSL. جميع الحقوق محفوظة.

مرخص بموجب رخصة Apache 2.0 (المشار إليها فيما يلي بـ ”الرخصة“). لا يجوز لك استخدام هذا الملف إلا وفقًا لشروط الرخصة. يمكنك الحصول على نسخة منها في الملف LICENSE الموجود في حزمة التوزيع المصدرية أو على الرابط <https://www.openssl.org/source/license.html>.

ترجمة

تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.

7 أبريل 2026 3.6.2