SSL_CTX_USE_CERTIFICATE(3SSL)

الاسم
SSL_CTX_use_certificate, SSL_CTX_use_certificate_ASN1, SSL_CTX_use_certificate_file, SSL_use_certificate, SSL_use_certificate_ASN1, SSL_use_certificate_file, SSL_CTX_use_certificate_chain_file, SSL_use_certificate_chain_file, SSL_CTX_use_PrivateKey, SSL_CTX_use_PrivateKey_ASN1, SSL_CTX_use_PrivateKey_file, SSL_CTX_use_RSAPrivateKey, SSL_CTX_use_RSAPrivateKey_ASN1, SSL_CTX_use_RSAPrivateKey_file, SSL_use_PrivateKey_file, SSL_use_PrivateKey_ASN1, SSL_use_PrivateKey, SSL_use_RSAPrivateKey, SSL_use_RSAPrivateKey_ASN1, SSL_use_RSAPrivateKey_file, SSL_CTX_check_private_key, SSL_check_private_key, SSL_CTX_use_cert_and_key, SSL_use_cert_and_key - تحميل بيانات الشهادة والمفتاح

موجز
 #include <openssl/ssl.h>

 int SSL_CTX_use_certificate(SSL_CTX *ctx, X509 *x);
 int SSL_CTX_use_certificate_ASN1(SSL_CTX *ctx, int len, const unsigned char *d);
 int SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *file, int type);
 int SSL_use_certificate(SSL *ssl, X509 *x);
 int SSL_use_certificate_ASN1(SSL *ssl, const unsigned char *d, int len);
 int SSL_use_certificate_file(SSL *ssl, const char *file, int type);

 int SSL_CTX_use_certificate_chain_file(SSL_CTX *ctx, const char *file);
 int SSL_use_certificate_chain_file(SSL *ssl, const char *file);

 int SSL_CTX_use_PrivateKey(SSL_CTX *ctx, EVP_PKEY *pkey);
 int SSL_CTX_use_PrivateKey_ASN1(int pk, SSL_CTX *ctx, const unsigned char *d,
                                 long len);
 int SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *file, int type);
 int SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa);
 int SSL_CTX_use_RSAPrivateKey_ASN1(SSL_CTX *ctx, const unsigned char *d, long len);
 int SSL_CTX_use_RSAPrivateKey_file(SSL_CTX *ctx, const char *file, int type);
 int SSL_use_PrivateKey(SSL *ssl, EVP_PKEY *pkey);
 int SSL_use_PrivateKey_ASN1(int pk, SSL *ssl, const unsigned char *d, long len);
 int SSL_use_PrivateKey_file(SSL *ssl, const char *file, int type);
 int SSL_use_RSAPrivateKey(SSL *ssl, RSA *rsa);
 int SSL_use_RSAPrivateKey_ASN1(SSL *ssl, const unsigned char *d, long len);
 int SSL_use_RSAPrivateKey_file(SSL *ssl, const char *file, int type);

 int SSL_CTX_check_private_key(const SSL_CTX *ctx);
 int SSL_check_private_key(const SSL *ssl);

 int SSL_CTX_use_cert_and_key(SSL_CTX *ctx, X509 *x, EVP_PKEY *pkey, STACK_OF(X509) *chain, int override);
 int SSL_use_cert_and_key(SSL *ssl, X509 *x, EVP_PKEY *pkey, STACK_OF(X509) *chain, int override);

الوصف
تُحمّل هذه الدوال الشهادات والمفاتيح الخاصة في كائن SSL_CTX أو SSL، على التوالي.

تُحمّل فئة الدوال SSL_CTX_* الشهادات والمفاتيح في كائن SSL_CTX ctx. تُمرر المعلومات إلى كائنات SSL ssl المنشأة من ctx باستخدام SSL_new(3) عن طريق النسخ، لذا فإن التغييرات المطبقة على ctx لا تنتشر إلى كائنات SSL الموجودة مسبقًا.

تُحمّل فئة الدوال SSL_* الشهادات والمفاتيح فقط في كائن SSL محدد. تُحفظ المعلومات المحددة عند استدعاء SSL_clear(3) لكائن SSL هذا.

SSL_CTX_use_certificate() تُحمّل الشهادة x في ctx، SSL_use_certificate() تُحمّل x في ssl. يمكن تحديد باقي الشهادات اللازمة لتكوين سلسلة الشهادات الكاملة باستخدام الدالة SSL_CTX_add_extra_chain_cert(3). عند النجاح، يُزاد العداد المرجعي لـ x.

SSL_CTX_use_certificate_ASN1() تُحمّل الشهادة المُرمَّزة بـ ASN1 من موقع الذاكرة d (بطول len) في ctx، SSL_use_certificate_ASN1() تُحمّل الشهادة المُرمَّزة بـ ASN1 في ssl.

SSL_CTX_use_certificate_file() تُحمّل أول شهادة مخزنة في file في ctx. يجب تحديد تنسيق type للشهادة من الأنواع المعروفة SSL_FILETYPE_PEM، SSL_FILETYPE_ASN1. SSL_use_certificate_file() تُحمّل الشهادة من file في ssl. راجع قسم NOTES لمعرفة سبب تفضيل SSL_CTX_use_certificate_chain_file().

تحمل SSL_CTX_use_certificate_chain_file() سلسلة شهادات من file إلى ctx. يجب أن تكون الشهادات بتنسيق PEM ويجب أن تُرتّب بدءًا بشهادة الموضوع (شهادة العميل أو الخادم الفعلية)، متبوعة بشهادات CA وسيطة إن وجدت، وتنتهي بأعلى مستوى (جذر) CA. SSL_use_certificate_chain_file() مماثلة باستثناء أنها تحمل سلسلة الشهادات إلى ssl.

SSL_CTX_use_PrivateKey() تُضيف pkey كمفتاح خاص إلى ctx. ctx يجب ألا يكون NULL. SSL_CTX_use_RSAPrivateKey() تُضيف المفتاح الخاص rsa من نوع RSA إلى ctx. SSL_use_PrivateKey() تُضيف pkey كمفتاح خاص إلى ssl؛ SSL_use_RSAPrivateKey() تُضيف rsa كمفتاح خاص من نوع RSA إلى ssl. إذا كانت شهادة قد عُيِّنت بالفعل والمفتاح الخاص لا ينتمي إلى الشهادة، يُعاد خطأ. لتغيير زوج [شهادة/مفتاح خاص]، يجب تعيين الشهادة الجديدة أولاً باستخدام SSL_use_certificate() أو SSL_CTX_use_certificate() قبل تعيين المفتاح الخاص باستخدام SSL_CTX_use_PrivateKey() أو SSL_use_PrivateKey(). عند النجاح، يُزاد العداد المرجعي لـ pkey/rsa.

SSL_CTX_use_cert_and_key() و SSL_use_cert_and_key() تُسند الشهادة X.509 x، المفتاح الخاص key، وسلسلة الشهادات chain إلى ssl أو ctx المناظر. يجب أن تكون الوسيطة pkey هي المفتاح الخاص للشهادة X.509 x. إذا كانت الوسيطة override تساوي 0، فسيُضبط x و pkey و chain فقط إذا لم تكن جميعها مضبوطة سابقًا. إذا كانت override غير صفرية، فتُضبط الشهادة والمفتاح الخاص وشهادات السلسلة دائمًا. إذا كانت pkey فارغة (NULL)، فيُستخدم المفتاح العام لـ x كمفتاح خاص. يُقصد استخدام هذا مع العتاد (عبر واجهة ENGINE) الذي يُخزّن المفتاح الخاص بأمان، بحيث لا يمكن الوصول إليه بواسطة OpenSSL. يُزاد العدد المرجعي للمفتاح العام (مرتين إذا لم يكن هناك مفتاح خاص)؛ ولا يُنسخ ولا يُكرر. يسمح هذا بنجاح جميع فحوصات التحقق من المفتاح الخاص دون إسناد مفتاح خاص فعلي عبر SSL_CTX_use_PrivateKey()، إلخ.

SSL_CTX_use_PrivateKey_ASN1() تُضيف المفتاح الخاص من النوع pk المُخزّن في موقع الذاكرة d (بطول len) إلى ctx. SSL_CTX_use_RSAPrivateKey_ASN1() تُضيف المفتاح الخاص من نوع RSA المُخزّن في موقع الذاكرة d (بطول len) إلى ctx. SSL_use_PrivateKey_ASN1() و SSL_use_RSAPrivateKey_ASN1() تُضيفان المفتاح الخاص إلى ssl.

SSL_CTX_use_PrivateKey_file() تُضيف أول مفتاح خاص يُوجد في file إلى ctx. يجب تحديد تنسيق type للمفتاح الخاص من الأنواع المعروفة SSL_FILETYPE_PEM، SSL_FILETYPE_ASN1. SSL_CTX_use_RSAPrivateKey_file() تُضيف أول مفتاح RSA خاص يُوجد في file إلى ctx. SSL_use_PrivateKey_file() تُضيف أول مفتاح خاص يُوجد في file إلى ssl؛ SSL_use_RSAPrivateKey_file() تُضيف أول مفتاح RSA خاص يُوجد إلى ssl. ctx يجب ألا يكون فارغًا (NULL).

SSL_CTX_check_private_key() تفحص اتساق المفتاح الخاص مع الشهادة المناظرة المُحمّلة في ctx. إذا كان أكثر من زوج مفتاح/شهادة (RSA/DSA) مُثبّتًا، فسيُفحص آخر عنصر مُثبّت. إذا كان آخر عنصر مثلاً شهادة أو مفتاح RSA، فسيُفحص زوج مفتاح/شهادة RSA. SSL_check_private_key() تُؤدي نفس الفحص لـ ssl. إذا لم يُضف أي مفتاح/شهادة صراحةً لهذا ssl، فسيُفحص آخر عنصر أُضيف إلى ctx.

ملاحظات
يمكن لمخزن الشهادات الداخلي لـ OpenSSL حمل عدة أزواج مفتاح خاص/شهادة في وقت واحد. تعتمد الشهادة المُستخدمة على المُعمِّي المُختار، انظر أيضًا SSL_CTX_set_cipher_list(3).

عند قراءة الشهادات والمفاتيح الخاصة من ملف، يمكن لملفات النوع SSL_FILETYPE_ASN1 (المعروفة أيضًا باسم DER، ترميز ثنائي) احتواء شهادة واحدة أو مفتاح خاص واحد فقط، وبالتالي SSL_CTX_use_certificate_chain_file() قابل للتطبيق فقط على تنسيق PEM. يمكن لملفات النوع SSL_FILETYPE_PEM احتواء أكثر من عنصر واحد.

SSL_CTX_use_certificate_chain_file() تُضيف أول شهادة تُوجد في الملف إلى مخزن الشهادات. تُضاف الشهادات الأخرى إلى مخزن شهادات السلسلة باستخدام SSL_CTX_add1_chain_cert(3). ملاحظة: إصدارات OpenSSL قبل 1.0.2 كان لديها مخزن سلسلة شهادات واحد فقط لجميع أنواع الشهادات، بينما OpenSSL 1.0.2 والإصدارات الأحدث لديها مخزن سلسلة منفصل لكل نوع. يجب استخدام SSL_CTX_use_certificate_chain_file() بدلاً من الدالة SSL_CTX_use_certificate_file() للسماح باستخدام سلاسل شهادات كاملة حتى عند عدم استخدام تخزين CA موثوق أو عندما لا تُضاف CA المُصدِرة للشهادة إلى تخزين CA الموثوق.

إذا كانت هناك حاجة لشهادات إضافية لإكمال السلسلة أثناء مفاوضات TLS، فتُبحث شهادات CA بالإضافة إلى ذلك في مواقع شهادات CA الموثوقة، انظر SSL_CTX_load_verify_locations(3).

يمكن أن تكون المفاتيح الخاصة المحملة من ملف مُعمّاة. لتحميل المفاتيح المُعمّاة بنجاح، يجب أن تكون دالة تُعيد كلمة السر قد وُفّرت، انظر SSL_CTX_set_default_passwd_cb(3). (قد تكون ملفات الشهادات مُعمّاة أيضًا من الناحية الفنية، لكن ذلك لا معنى له لأن البيانات في الشهادة تُعتبر عامة على أي حال.)

جميع الدوال لتعيين شهادة جديدة ستستبدل أي شهادة موجودة من نفس النوع التي وُضعت مسبقًا. وبالمثل، جميع الدوال لتعيين مفتاح خاص جديد ستستبدل أي مفتاح خاص وُضع مسبقًا. يجب على التطبيقات استدعاء SSL_CTX_check_private_key(3) أو SSL_check_private_key(3) حسب الاقتضاء بعد تحميل شهادة جديدة ومفتاح خاص لتأكيد تطابق الشهادة والمفتاح.

القيم المُرجعة
عند النجاح، تُرجع الدوال 1. وإلا، افحص كومة الأخطاء لمعرفة السبب.

انظر أيضًا
ssl(7), SSL_new(3), SSL_clear(3), SSL_CTX_load_verify_locations(3), SSL_CTX_set_default_passwd_cb(3), SSL_CTX_set_cipher_list(3), SSL_CTX_set_client_CA_list(3), SSL_CTX_set_client_cert_cb(3), SSL_CTX_add_extra_chain_cert(3)

حقوق النسخ
حقوق النشر 2000-2024 لمؤلفي مشروع OpenSSL. جميع الحقوق محفوظة.

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

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

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

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