SSL_GET_SESSION(3SSL)

الاسم
SSL_get_session, SSL_get0_session, SSL_get1_session - استرداد بيانات جلسة TLS/SSL

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

 SSL_SESSION *SSL_get_session(const SSL *ssl);
 SSL_SESSION *SSL_get0_session(const SSL *ssl);
 SSL_SESSION *SSL_get1_session(SSL *ssl);

الوصف
SSL_get_session() يُرجع مؤشرًا إلى SSL_SESSION المُستخدم فعليًا في ssl. لا يُزاد عداد المرجع لـ SSL_SESSION، لذا قد يُصبح المؤشر غير صالح بعمليات أخرى.

SSL_get0_session() هو نفسه SSL_get_session().

SSL_get1_session() هو نفسه SSL_get_session()، لكن يُزاد عداد المرجع لـ SSL_SESSION بمقدار واحد.

ملاحظات
تحتوي جلسة ssl على كل المعلومات اللازمة لإعادة إنشاء الاتصال دون مصافحة كاملة لإصدارات SSL حتى TLSv1.2. في TLSv1.3، الأمر نفسه صحيح، لكن الجلسات تُنشأ بعد حدوث المصافحة الرئيسية. يُرسل الخادم معلومات الجلسة إلى العميل في وقت يختاره، قد يكون بعد فترة من إنشاء الاتصال الأولي (أو أبدًا). استدعاء هذه الدوال من جانب العميل في TLSv1.3 قبل إنشاء الجلسة سيُعيد كائن SSL_SESSION لكن لا يمكن استخدام ذلك الكائن لاستئناف الجلسة. انظر SSL_SESSION_is_resumable(3) لمعلومات حول كيفية تحديد ما إذا كان كائن SSL_SESSION يمكن استخدامه للاستئناف أم لا.

بالإضافة إلى ذلك، في TLSv1.3، يمكن للخادم إرسال رسائل متعددة تُنشئ جلسة لاتصال واحد. في تلك الحالة، من جانب العميل، ستعيد الدوال أعلاه معلومات فقط عن آخر جلسة استُلمت. من جانب الخادم، ستعيد معلومات فقط عن آخر جلسة أُرسلت، أو إذا لم تُرسل تذاكر جلسة فجلسة الاتصال الحالي.

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

ستُزال جلسة آليًا من خبيئة الجلسة وتُوسم كغير قابلة للاستئناف إذا لم يُغلق الاتصال بشكل نظيف، مثلًا إذا حدث خطأ فادح في الاتصال أو لم يُستدع SSL_shutdown(3) قبل SSL_free(3).

في TLSv1.3، يُوصى باستخدام كل كائن SSL_SESSION للاستئناف مرة واحدة فقط.

SSL_get0_session() يُرجع مؤشرًا إلى الجلسة الفعلية. نظرًا لعدم زيادة عداد المرجع، يكون المؤشر صالحًا فقط أثناء استخدام الاتصال. إذا استُدعي SSL_clear(3) أو SSL_free(3)، قد تُزال الجلسة بالكامل (إذا اعتُبرت سيئة)، ويُصبح المؤشر الذي حُصل عليه غير صالح. حتى لو كانت الجلسة صالحة، يمكن إزالتها في أي وقت بسبب انتهاء المهلة أثناء SSL_CTX_flush_sessions(3).

إذا أُريد الاحتفاظ بالبيانات، سيزيد SSL_get1_session() عداد المرجع، بحيث لا تُزال الجلسة ضمنيًا بعمليات أخرى بل تبقى في الذاكرة. لإزالة الجلسة، يجب استدعاء SSL_SESSION_free(3) صراحةً مرة واحدة لإنقاص عداد المرجع مرة أخرى.

تحتفظ كائنات SSL_SESSION بمعلومات ارتباط داخلية حول قائمة خبيئة الجلسة، عند إدراجها في خبيئة جلسة لكائن SSL_CTX واحد. لذلك، يجب استخدام كائن SSL_SESSION واحد فقط، بغض النظر عن عدد مراجعة، مع كائن SSL_CTX واحد (وكائنات SSL التي أُنشئت من كائن SSL_CTX هذا).

القيم المُرجعة
يمكن أن تحدث قيم الإعادة التالية:

NULL
    لا توجد جلسة متاحة في ssl.

مؤشر إلى SSL_SESSION
    تشير القيمة المُرجعة إلى بيانات جلسة SSL.

انظر أيضًا
ssl(7), SSL_free(3), SSL_clear(3), SSL_SESSION_free(3)

حقوق النسخ
حقوق الطبع والنشر 2000-2018 لمؤلفي مشروع 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.