.\" -*- coding: UTF-8 -*- .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.45) .\" .\" Standard preamble: .\" ======================================================================== .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .de IX .. .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .if n .ds AD l .\" .\" Required to disable full justification in groff 1.23.0. .\" ======================================================================== .\" .IX Title "SSL_CTX_SET_GENERATE_SESSION_ID 3ssl" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH SSL_CTX_SET_GENERATE_SESSION_ID 3ssl "7 أبريل 2026" 3.6.2 OpenSSL .if n .ad l .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .nh .SH الاسم SSL_CTX_set_generate_session_id, SSL_set_generate_session_id, SSL_has_matching_session_id, GEN_SESSION_CB \&\- معالجة توليد مُعرّفات جلسة SSL (للخادم فقط) .SH موجز .IX Header موجز .Vb 1 \& #include \& \& typedef int (*GEN_SESSION_CB)(SSL *ssl, unsigned char *id, \& unsigned int *id_len); \& \& int SSL_CTX_set_generate_session_id(SSL_CTX *ctx, GEN_SESSION_CB cb); \& int SSL_set_generate_session_id(SSL *ssl, GEN_SESSION_CB, cb); \& int SSL_has_matching_session_id(const SSL *ssl, const unsigned char *id, \& unsigned int id_len); .Ve .SH الوصف .IX Header الوصف \&\fBSSL_CTX_set_generate_session_id()\fP تُعيِّن دالة الاستدعاء لتوليد مُعرّفات جلسة جديدة لجلسات SSL/TLS لـ \fBctx\fP لتكون \fBcb\fP. .PP \&\fBSSL_set_generate_session_id()\fP تُعيِّن دالة الاستدعاء لتوليد مُعرّفات جلسة جديدة لجلسات SSL/TLS لـ \fBssl\fP لتكون \fBcb\fP. .PP \&\fBSSL_has_matching_session_id()\fP تتحقق مما إذا كانت جلسة ذات مُعرّف \fBid\fP (بطول \fBid_len\fP) موجودة بالفعل في خبيئة الجلسة الداخلية للسياق الأصلي لـ \fBssl\fP. .SH ملاحظات .IX Header ملاحظات عند إنشاء جلسة جديدة بين العميل والخادم، يُولِّد الخادم مُعرّف جلسة. مُعرّف الجلسة هو تسلسل عشوائي من البايتات. طول مُعرّف الجلسة يتراوح بين 1 و32 بايت. مُعرّف الجلسة ليس حاسمًا أمنيًا لكن يجب أن يكون فريدًا للخادم. بالإضافة إلى ذلك، يُنقل مُعرّف الجلسة بنص واضح عند إعادة استخدام الجلسة، لذا يجب ألّا يحتوي على معلومات حساسة. .PP بدون تعيين دالة استدعاء، سيُولِّد خادم OpenSSL مُعرّف جلسة فريدًا من أرقام شبه عشوائية بأقصى طول ممكن. باستخدام دالة الاستدعاء، يمكن تغيير مُعرّف الجلسة ليحتوي على معلومات إضافية مثل مُعرّف مضيف لتحسين موازنة التحميل أو تقنيات التخزين المؤقت الخارجي. .PP تستقبل دالة الاستدعاء مؤشرًا إلى موقع الذاكرة لوضع \&\fBid\fP فيه ومؤشرًا إلى الحد الأقصى المسموح به للطول \fBid_len\fP. المخزن المؤقت في الموقع \fBid\fP مضمون فقط أن يكون بحجم \fBid_len\fP. يُسمح لدالة الاستدعاء فقط بتوليد مُعرّف أقصر وتقليل \fBid_len\fP؛ يجب ألّا تزيد دالة الاستدعاء \fBid_len\fP أو تكتب في الموقع \&\fBid\fP متجاوزة الحد المعطى. .PP يُملأ الموقع \fBid\fP بـ 0x00 قبل استدعاء دالة الاستدعاء، لذا قد تملأ دالة الاستدعاء جزءًا فقط من الطول الممكن وتترك \fBid_len\fP دون تغيير مع الحفاظ على قابلية التكرار. .PP نظرًا لأن الجلسات يجب أن تُفرَّق، يجب أن تكون مُعرّفات الجلسة فريدة. بدون دالة الاستدعاء، يُستخدم رقم عشوائي، بحيث يكون احتمال توليد نفس مُعرّف الجلسة صغيرًا جدًا (2^256 لـ SSLv3/TLSv1). لضمان تفرد مُعرّف الجلسة المُولَّد، يجب على دالة الاستدعاء استدعاء \&\fBSSL_has_matching_session_id()\fP وتوليد مُعرّف آخر إذا حدث تعارض. إذا لم يُحل تعارض المُعرّف، سيفشل المصافحة. إذا رمّز التطبيق مثلًا مُعرّف مضيف فريد، ورقم عملية فريد، ورقم تسلسلي فريد في مُعرّف الجلسة، يمكن تحقيق التفرد بسهولة دون إضافة عشوائية (ومع ذلك يجب الحرص على عدم تسريب معلومات سرية بهذه الطريقة). إذا لم يستطع التطبيق ضمان التفرد، يُوصى باستخدام الحد الأقصى \fBid_len\fP وملء البايتات غير المستخدمة لترميز معلومات خاصة ببيانات عشوائية لتجنب التصادمات. .PP \&\fBSSL_has_matching_session_id()\fP ستستعلم فقط عن خبيئة الجلسة الداخلية، وليس الخارجية. نظرًا لأن مُعرّف الجلسة يُولَّد قبل اكتمال المصافحة، لا يُضاف فورًا إلى الخبيئة. إذا كان خيط آخر يستخدم نفس خبيئة الجلسة الداخلية، يمكن أن تحدث حالة سباق حيث يُولِّد خيط آخر نفس مُعرّف الجلسة. يمكن أن تحدث التصادمات أيضًا عند استخدام خبيئة جلسة خارجية، لأن الخبيئة الخارجية لا تُختبر مع \fBSSL_has_matching_session_id()\fP وتنطبق نفس حالة السباق. .PP يجب أن تُرجع دالة الاستدعاء 0 إذا لم تستطع توليد مُعرّف جلسة لأي سبب، وتُرجع 1 عند النجاح. .SH "القيم المُرجعة" .IX Header "القيم المُرجعة" \&\fBSSL_CTX_set_generate_session_id()\fP و \fBSSL_set_generate_session_id()\fP تُرجعان 1 عند النجاح و0 عند الفشل. .PP \&\fBSSL_has_matching_session_id()\fP تُرجع 1 إذا كانت جلسة أخرى بنفس المُعرّف موجودة بالفعل في الخبيئة، أو 0 بخلاف ذلك. .SH أمثلة .IX Header أمثلة دالة الاستدعاء المدرجة ستُولِّد مُعرّف جلسة مع مُعرّف الخادم المُعطى، وستملأ الباقي ببايتات شبه عشوائية: .PP .Vb 1 \& const char session_id_prefix = "www\-18"; \& \& #define MAX_SESSION_ID_ATTEMPTS 10 \& static int generate_session_id(SSL *ssl, unsigned char *id, \& unsigned int *id_len) \& { \& unsigned int count = 0; \& \& do { \& RAND_pseudo_bytes(id, *id_len); \& /* \& * بادئة مُعرّف الجلسة بالبادئة المطلوبة. ملاحظة: إذا كانت \& * البادئة طويلة جدًا، قصّها \- لكن ستكون هناك تأثيرات أسوأ \& * على أي حال، مثلًا قد يتمكن الخادم من إنشاء مُعرّف جلسة \& * واحد فقط (أي البادئة!) لذا ستفشل جميع مفاوضات الجلسة \& * المستقبلية بسبب التعارضات. \& */ \& memcpy(id, session_id_prefix, strlen(session_id_prefix) < *id_len ? \& strlen(session_id_prefix) : *id_len); \& } while (SSL_has_matching_session_id(ssl, id, *id_len) \& && ++count < MAX_SESSION_ID_ATTEMPTS); \& if (count >= MAX_SESSION_ID_ATTEMPTS) \& return 0; \& return 1; \& } .Ve .SH "انظر أيضًا" .IX Header "انظر أيضًا" \&\fBssl\fP\|(7), \fBSSL_get_version\fP\|(3) .SH "حقوق النسخ" .IX Header "حقوق النسخ" حقوق النشر 2001\-2020 لمؤلفي مشروع OpenSSL. جميع الحقوق محفوظة. .PP مرخص بموجب رخصة Apache 2.0 (المشار إليها فيما يلي بـ ”الرخصة“). لا يجوز لك استخدام هذا الملف إلا وفقًا لشروط الرخصة. يمكنك الحصول على نسخة منها في الملف LICENSE الموجود في حزمة التوزيع المصدرية أو على الرابط . .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .