Scroll to navigation

X509_STORE_CTX_GET_ERROR(3SSL) OpenSSL X509_STORE_CTX_GET_ERROR(3SSL)

الاسم

X509_STORE_CTX_get_error, X509_STORE_CTX_set_error, X509_STORE_CTX_get_error_depth, X509_STORE_CTX_set_error_depth, X509_STORE_CTX_get_current_cert, X509_STORE_CTX_set_current_cert, X509_STORE_CTX_get0_cert, X509_STORE_CTX_get1_chain, X509_verify_cert_error_string - الحصول على أو تعيين معلومات حالة التحقق من الشهادة

موجز

 #include <openssl/x509.h>
 int   X509_STORE_CTX_get_error(const X509_STORE_CTX *ctx);
 void  X509_STORE_CTX_set_error(X509_STORE_CTX *ctx, int s);
 int   X509_STORE_CTX_get_error_depth(const X509_STORE_CTX *ctx);
 void  X509_STORE_CTX_set_error_depth(X509_STORE_CTX *ctx, int depth);
 X509 *X509_STORE_CTX_get_current_cert(const X509_STORE_CTX *ctx);
 void  X509_STORE_CTX_set_current_cert(X509_STORE_CTX *ctx, X509 *x);
 X509 *X509_STORE_CTX_get0_cert(const X509_STORE_CTX *ctx);
 STACK_OF(X509) *X509_STORE_CTX_get1_chain(const X509_STORE_CTX *ctx);
 const char *X509_verify_cert_error_string(long n);

الوصف

تُستدعى هذه الدوال عادةً بعد التحقق من الشهادة أو السلسلة باستخدام X509_verify_cert(3) أو X509_STORE_CTX_verify(3) التي أشارت إلى خطأ، أو في دالة رد التحقق لتحديد طبيعة الخطأ.

X509_STORE_CTX_get_error() تُعيد رمز الخطأ لـ ctx. ctx يجب ألا يكون NULL. راجع قسم "رموز الخطأ" للحصول على وصف كامل لجميع رموز الخطأ. قد تُعيد رمزًا != X509_V_OK حتى لو لم تُشر X509_verify_cert() إلى خطأ، ربما لأن دالة رد التحقق قد تنازلت عن الخطأ.

X509_STORE_CTX_set_error() تعيّن رمز الخطأ لـ ctx إلى s. على سبيل المثال، قد تُستخدم في دالة رد التحقق لتعيين خطأ بناءً على فحوصات إضافية. ctx يجب ألا يكون NULL.

X509_STORE_CTX_get_error_depth() تُعيد عمق الخطأ. هذا عدد صحيح غير سالب يمثل مكان حدوث الخطأ في سلسلة الشهادات. إذا كان صفرًا، فقد حدث في شهادة الكيان النهائي، وواحد إذا كانت الشهادة التي وقّعت شهادة الكيان النهائي، وهكذا. ctx يجب ألا يكون NULL.

X509_STORE_CTX_set_error_depth() تعيّن عمق الخطأ. يمكن استخدام هذا مع X509_STORE_CTX_set_error() لتعيين العمق الذي اكتُشفت فيه حالة الخطأ.

X509_STORE_CTX_get_current_cert() تُعيد الشهادة الحالية في ctx. إذا حدث خطأ، فستكون الشهادة الحالية هي الأكثر ارتباطًا بالخطأ، أو ربما NULL إذا لم تكن هناك شهادة ذات صلة.

X509_STORE_CTX_set_current_cert() تعيّن الشهادة x في ctx التي سببت الخطأ. ليس المقصود من هذه القيمة أن تبقى صالحة لفترة طويلة، وتبقى مملوكة للمستدعي. قد تُفحص بواسطة دالة رد التحقق المُستدعاة لمعالجة كل خطأ يُواجه أثناء التحقق من السلسلة، ولم تعد مطلوبة بعد هذه الدالة. إذا رغبت دالة رد في حفظ الشهادة لاستخدامها بعد عودتها، فيجب عليها زيادة عدد مراجعها عبر X509_up_ref(3). بمجرد عدم الحاجة إلى الشهادة المحفوظة، يمكن تحريرها باستخدام X509_free(3).

X509_STORE_CTX_get0_cert() تسترجع مؤشرًا داخليًا إلى الشهادة التي يجري التحقق منها بواسطة ctx. قد تكون NULL إذا كان مفتاح عام خام قيد التحقق.

X509_STORE_CTX_get1_chain() تُعيد سلسلة تحقق كاملة إذا كان التحقق السابق ناجحًا. وإلا، فقد تكون السلسلة المُعادة غير كاملة أو غير صالحة. تظل السلسلة المُعادة موجودة بعد تحرير بنية ctx. عندما لا تكون مطلوبة بعد الآن، يجب تحريرها باستخدام:

 OSSL_STACK_OF_X509_free(chain);

X509_verify_cert_error_string() تُعيد سلسلة خطأ قابلة للقراءة البشرية لخطأ التحقق n.

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

X509_STORE_CTX_get_error() تُعيد X509_V_OK أو رمز خطأ.

X509_STORE_CTX_get_error_depth() تُعيد عمق خطأ غير سالب.

X509_STORE_CTX_get_current_cert() تُعيد الشهادة التي سببت الخطأ أو NULL إذا لم تكن هناك شهادة ذات صلة بالخطأ.

X509_verify_cert_error_string() تُعيد سلسلة خطأ قابلة للقراءة البشرية لخطأ التحقق n.

رموز الخطأ

قائمة برموز الخطأ والرسائل معروضة أدناه. بعض رموز الخطأ مُعرّفة ولكن لا تُعاد حاليًا: تُوصف هذه بأنها "غير مستخدمة".

نجحت العملية.
خطأ غير محدد؛ لا ينبغي حدوثه.
تعذر العثور على شهادة المُصدِر لشهادة مبحوث عنها محليًا. يعني هذا عادةً أن قائمة الشهادات الموثوقة غير كاملة. للسماح لأي شهادة (وليس فقط الموقعة ذاتيًا) في مخزن الثقة بإنهاء السلسلة، يمكن تعيين العلامة X509_V_FLAG_PARTIAL_CHAIN.
تعذر العثور على قائمة إلغاء الشهادات لشهادة.
تعذر فك تعمية توقيع الشهادة. يعني هذا أن قيمة التوقيع الفعلية لم تُحدد بدلاً من عدم تطابقها مع القيمة المتوقعة، وهذا ذو معنى فقط لمفاتيح RSA.
تعذر فك تعمية توقيع قائمة إلغاء الشهادات: يعني هذا أن قيمة التوقيع الفعلية لم تُحدد بدلاً من عدم تطابقها مع القيمة المتوقعة. غير مستخدم.
المفتاح العام في حقل الشهادة "SubjectPublicKeyInfo" لم يُقرأ.
توقيع الشهادة غير صالح.
توقيع قائمة الإلغاء غير صالح.
الشهادة ليست صالحة بعد: تاريخ "notBefore" يقع بعد الوقت الحالي.
الشهادة انتهت صلاحيتها: تاريخ "notAfter" يقع قبل الوقت الحالي.
قائمة الإلغاء ليست صالحة بعد.
قائمة الإلغاء انتهت صلاحيتها.
حقل "notBefore" للشهادة يحتوي على وقت غير صالح.
حقل "notAfter" للشهادة يحتوي على وقت غير صالح.
حقل lastUpdate لقائمة الإلغاء يحتوي على وقت غير صالح.
حقل "nextUpdate" لقائمة الإلغاء يحتوي على وقت غير صالح.
حدث خطأ أثناء محاولة تخصيص الذاكرة.
الشهادة المُمررة موقعة ذاتيًا ولا يمكن العثور على نفس الشهادة في قائمة الشهادات الموثوقة.
أُمكن بناء سلسلة الشهادات باستخدام الشهادات غير الموثوقة ولكن لم يُعثر على مرساة ثقة مناسبة (وهي عادةً شهادة جذر موقعة ذاتيًا) في مخزن الثقة.
تعذر العثور على شهادة المُصدِر: يحدث هذا إذا تعذر العثور على شهادة المُصدِر لشهادة غير موثوقة.
لا يمكن التحقق من أي توقيعات لأن السلسلة تحتوي على شهادة واحدة فقط وهي ليست موقعة ذاتيًا ولم يتم تعيين العلامة X509_V_FLAG_PARTIAL_CHAIN.
طول سلسلة الشهادات أكبر من أقصى عمق مقدم.
أُلغيت الشهادة.
شهادة المُصدِر لا تحتوي على مفتاح عام.
تجاوز معامل طول المسار basicConstraints.
لا يمكن استخدام الشهادة المستهدفة للغرض المحدد.
لم تُوَسَم المرجعية الجذرية (CA) كموثوقة للغرض المحدد.
وُسِمَت المرجعية الجذرية (CA) لرفض الغرض المحدد.
رُفِضَت شهادة المُصدِر المرشحة الحالية لأن اسم موضوعها لم يطابق اسم مُصدِر الشهادة الحالية.
رُفِضَت شهادة المُصدِر المرشحة الحالية لأن مُعرّف مفتاح موضوعها كان موجودًا ولم يطابق مُعرّف مفتاح سلطة الشهادة الحالية.
رُفِضَت شهادة المُصدِر المرشحة الحالية لأن اسم المُصدِر والرقم التسلسلي كانا موجودين ولم يطابقا مُعرّف مفتاح سلطة الشهادة الحالية.
رُفِضَت شهادة المُصدِر المرشحة الحالية لأن امتداد "keyUsage" الخاص بها لا يسمح بتوقيع الشهادة.
تعذّر الحصول على شهادة مُصدِر قائمة إلغاء الشهادات (CRL).
امتداد حرج غير مُعالَج.
استخدام المفتاح لا يتضمن توقيع قائمة إلغاء الشهادات (CRL).
امتداد حرج غير مُعالَج لقائمة إلغاء الشهادات (CRL).
شهادة غير تابعة لمرجع مصادقة (CA) غير صالحة تحتوي على علامات مرجع مصادقة.
قيد طول مسار الوكيل تم تجاوزه.
استخدام المفتاح لا يتضمن التوقيع الرقمي، وبالتالي لا يمكنه توقيع الشهادات.
الشهادات الوكيل غير مسموح بها ما لم تُعيّن العلامة X509_V_FLAG_ALLOW_PROXY_CERTS.
امتداد الشهادة احتوى على قيمة غير صالحة (مثل ترميز غير صحيح) أو قيمة غير متناسقة مع امتدادات أخرى.
امتداد سياسات الشهادة احتوى على قيمة غير صالحة (مثل ترميز غير صحيح) أو قيمة غير متناسقة مع امتدادات أخرى. يحدث هذا الخطأ فقط إذا كانت معالجة السياسة مفعّلة.
عُيّنت علامات التحقق لتتطلب سياسة صريحة ولكن لم توجد أي منها.
قوائم CRL الوحيدة التي وُجدت لم تطابق نطاق الشهادة.
بعض ميزات امتداد الشهادة غير مدعومة. غير مستخدم.
انظر RFC 3779 للتفاصيل.
حدث انتهاك لقيد الاسم في الأشجار الفرعية المسموح بها.
حدث انتهاك لقيد الاسم في الأشجار الفرعية المستبعدة.
تضمن امتداد قيود اسم الشهادة حقل حد أدنى أو أقصى: هذا غير مدعوم.
خطأ خاص بالتطبيق. لن يُرجع هذا أبدًا إلا إذا وُضع صراحةً بواسطة دالة رد اتصال للتطبيق.
وُجد نوع قيد اسم غير مدعوم. يدعم OpenSSL حاليًا أنواع اسم الدليل واسم DNS والبريد الإلكتروني وURI فقط.
لم يُتعرف على تنسيق قيد الاسم: على سبيل المثال تنسيق عنوان بريد إلكتروني بشكل غير مذكور في RFC3280. قد يحدث هذا بسبب امتداد تالف أو ميزة جديدة غير مدعومة حاليًا.
صيغة اسم غير مدعومة أو غير صالحة.
حدث خطأ عند محاولة التحقق من مسار CRL. لا يمكن أن يحدث هذا الخطأ إلا إذا كان الفحص الموسع لـ CRL مُفعّلاً.
حلقة مسار.
عدم تطابق اسم المضيف.
عدم تطابق عنوان البريد الإلكتروني.
عدم تطابق عنوان IP.
الاستيثاق DANE TLSA مُفعّل، لكن لم تطابق أي سجلات TLSA سلسلة الشهادة. هذا الخطأ ممكن فقط في openssl-s_client(1).
مفتاح شهادة EE ضعيف جدًا.
مفتاح شهادة CA ضعيف جدًا.
خوارزمية تلخيص توقيع CA ضعيفة جدًا.
سياق تحقق من الشهادة غير صالح.
خطأ في البحث عن شهادة المُصدر.
شفافية الشهادة مطلوبة، لكن لم تُعثر على SCTs صالحة.
انتهاك اسم الموضوع للوكيل.
أُعيد بواسطة رد التحقق للإشارة إلى أن التحقق من OCSP مطلوب.
أُعيد بواسطة رد التحقق للإشارة إلى فشل التحقق من OCSP.
أُعيد بواسطة رد التحقق للإشارة إلى أن الشهادة غير معترف بها من قبل مستجيب OCSP.
أُعيد بواسطة رد التحقق للإشارة إلى أن استجابة أو أكثر من استجابات OCSP غير صالحة.
أُعيد بواسطة رد التحقق للإشارة إلى فشل التحقق من توقيع استجابة OCSP.
أُعيد بواسطة رد التحقق للإشارة إلى أن استجابة OCSP تحتوي على تاريخ thisUpdate في المستقبل.
أُعيد بواسطة رد التحقق للإشارة إلى أن استجابة OCSP قد انتهت صلاحيتها.
أُعيد بواسطة رد التحقق للإشارة إلى عدم توفر استجابة OCSP للشهادة.
لا يمكن إيجاد خوارزمية توقيع الشهادة.
المفتاح العام للمُصدِر ليس من النوع المطلوب بواسطة التوقيع في شهادة الموضوع.
الخوارزمية المُعطاة في معلومات الشهادة غير متسقة
مع تلك المستخدمة لتوقيع الشهادة.
شهادة CA غير صالحة. إما أنها ليست CA أو أن امتداداتها غير متسقة مع الغرض المُقدم.
لم تُهيأ أي سجلات TLS للتحقق من صحة المفتاح العام الخام، أو لم يتم تمكين DANE على الاتصال.

ملاحظات

ينبغي استخدام الدوال أعلاه بدلاً من الإشارة المباشرة إلى الحقول في بنية X509_VERIFY_CTX.

في إصدارات OpenSSL قبل 1.0، لم تكن الشهادة الحالية المُعادة بواسطة X509_STORE_CTX_get_current_cert() NULL أبدًا. ينبغي للتطبيقات التحقق من قيمة الإرجاع قبل طباعة أي معلومات تصحيح تتعلق بالشهادة الحالية.

إذا مُرر رمز خطأ غير معروف إلى X509_verify_cert_error_string()، فتُعاد القيمة الرقمية للرمز المجهول في مخزن مؤقت ثابت. هذا ليس آمنًا للخيوط ولكنه لن يحدث أبدًا إلا إذا مُرر رمز غير صالح.

العلل

الإصدارات السابقة من هذا التوثيق بدّلت معنى رمزي الخطأ X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT وX509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY.

انظر أيضًا

X509_verify_cert(3)، X509_STORE_CTX_verify(3)، X509_up_ref(3)، X509_free(3).

حقوق النسخ

حقوق النشر 2009-2025 لمؤلفي مشروع 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