SSL_CONF_CMD(3ssl)

الاسم
SSL_CONF_cmd_value_type, SSL_CONF_cmd - إرسال أمر تهيئة

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

 int SSL_CONF_cmd(SSL_CONF_CTX *ctx, const char *option, const char *value);
 int SSL_CONF_cmd_value_type(SSL_CONF_CTX *ctx, const char *option);

الوصف
الدالة SSL_CONF_cmd() تُنفذ عملية التهيئة option مع المعامل الاختياري value على ctx. غرضها تبسيط تهيئة التطبيق لهياكل SSL_CTX أو SSL بتوفير إطار مشترك لخيارات سطر الأوامر أو ملفات التهيئة.

SSL_CONF_cmd_value_type() تُرجع نوع القيمة التي يشير إليها option.

الأوامر المدعومة لسطر الأوامر
أسماء option المدعومة حاليًا لسطور الأوامر (أي عند تعيين العلم SSL_CONF_FLAG_CMDLINE) مُدرجة أدناه. ملاحظة: جميع أسماء option حساسة لحالة الأحرف. ما لم يُذكر خلاف ذلك، يمكن استخدام الأوامر من قبل كل من العملاء والخوادم ولا يُستخدم المعامل value. البادئة المبدئية لأوامر سطر الأوامر هي - وينعكس ذلك أدناه.

-bugs
    تُعيّن حلول بديلة متنوعة للأخطاء، مثل تعيين SSL_OP_ALL.

-no_comp
    يُعطل دعم ضغط SSL/TLS، مثل تعيين SSL_OP_NO_COMPRESSION. اعتبارًا من OpenSSL 1.1.0، الضغط مُعطل مبدئيًا.

-comp
    يُفعل دعم ضغط SSL/TLS، مثل مسح SSL_OP_NO_COMPRESSION. أُدخل هذا الأمر في OpenSSL 1.1.0. اعتبارًا من OpenSSL 1.1.0، الضغط مُعطل مبدئيًا. يمكن استخدام ضغط TLS فقط في مستوى الأمان 1 أو أقل. من OpenSSL 3.2.0 فصاعدًا، مستوى الأمان المبدئي هو 2، لذا لن يكون لهذا الخيار تأثير دون تغيير مستوى الأمان أيضًا. انظر SSL_CTX_set_security_level(3).

-no_ticket
    يُعطل دعم تذاكر الجلسة، مثل تعيين SSL_OP_NO_TICKET.

-serverpref
    استخدم ترتيب تفضيل الخادم وليس العميل عند تحديد أي حزمة معمّي، أو خوارزمية توقيع، أو منحنى إهليلجي (TLS 1.2)، أو مجموعة (TLS 1.3) لاستخدامها لاتصال وارد. مكافئ لـ SSL_OP_SERVER_PREFERENCE. يُستخدم فقط من قبل الخوادم.

-client_renegotiation
    يسمح للخوادم بقبول إعادة التفاوض التي بدأها العميل. يُعادل ضبط SSL_OP_ALLOW_CLIENT_RENEGOTIATION. يُستخدم فقط بواسطة الخوادم.

-legacy_renegotiation
    يأذن باستخدام إعادة التفاوض القديم غير الآمن. يُعادل ضبط SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION.

-no_renegotiation
    يعطل كل محاولات إعادة التفاوض في (D)TLSv1.2 والإصدارات الأقدم، مثل ضبط SSL_OP_NO_RENEGOTIATION.

-no_resumption_on_reneg
    يضبط SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION. يُستخدم فقط بواسطة الخوادم.

-legacy_server_connect, -no_legacy_server_connect
    يأذن أو يمنع استخدام إعادة التفاوض القديم غير الآمن لعملاء OpenSSL فقط. يُعادل ضبط أو مسح SSL_OP_LEGACY_SERVER_CONNECT.

-prioritize_chacha
    يعطي أولوية لمعميات ChaCha عندما يكون لدى العميل معمي ChaCha20 في أعلى قائمة تفضيلاته. يشير هذا عادةً إلى استخدام عميل دون تسريع أجهزة AES (مثل الهاتف المحمول). يُعادل SSL_OP_PRIORITIZE_CHACHA. يُستخدم فقط بواسطة الخوادم. يتطلب -serverpref.

-allow_no_dhe_kex
    في TLSv1.3، اسمح بوضع تبادل مفاتيح لا يعتمد على (ec)dhe عند الاستئناف. وهذا يعني أنه لن يكون هناك سرية أمامية (forward secrecy) للجلسة المستأنفة.

-prefer_no_dhe_kex
    في TLSv1.3، عند الاستئناف، يُفضّل الخادم وضع تبادل مفاتيح غير قائم على (ec)dhe على الوضع القائم على (ec)dhe. يتطلب -allow_no_dhe_kex. مكافئ لـ SSL_OP_PREFER_NO_DHE_KEX. يُستخدم فقط بواسطة الخوادم.

-strict
    يُفعّل معالجة البروتوكول في الوضع الصارم. مكافئ لتعيين SSL_CERT_FLAG_TLS_STRICT.

-sigalgs algs
    يُعيّن خوارزميات التوقيع المدعومة لـ TLSv1.2 و TLSv1.3. بالنسبة للعملاء، تُستخدم هذه القيمة مباشرةً لامتداد خوارزميات التوقيع المدعومة. بالنسبة للخوادم، تُستخدم لتحديد خوارزميات التوقيع التي يجب دعمها.

    وسيطة algs يجب أن تكون قائمة مفصولة بنقطتين من خوارزميات التوقيع بترتيب تنازلي للأفضلية بالصيغة algorithm+hash أو signature_scheme. بالنسبة للمزوّدين الافتراضيين المرفقين مع OpenSSL، algorithm هو أحد RSA أو DSA أو ECDSA و hash هو اسم قصير OID لخوارزمية مدعومة مثل SHA1 أو SHA224 أو SHA256 أو SHA384 أو SHA512. signature_scheme هو أحد مخططات التوقيع المُعرّفة في TLSv1.3، المُحدّدة باستخدام اسم IETF، مثل ecdsa_secp256r1_sha256 أو ed25519 أو rsa_pss_pss_sha256. قد تُتاح للمزوّدين الإضافيين خوارزميات أخرى عبر قدرة TLS-SIGALG. أسماء مخططات التوقيع وأسماء خوارزميات المفتاح العام (وليس أسماء التجزئة) في الصيغة algorithm+hash غير حساسة لحالة الأحرف. انظر provider-base(7).

    إذا لم يُعيّن هذا الخيار، فجميع خوارزميات التوقيع المدعومة من جميع المزوّدين المُفعّلين مسموح بها.

    ملاحظة: الخوارزميات التي تُحدّد مخطط توقيع PKCS#1 v1.5 (إما باستخدام RSA كـ algorithm أو باستخدام أحد المعرفات rsa_pkcs1_*) تُتجاهل في TLSv1.3 ولن تُفاوض.

-client_sigalgs algs
    يُعيّن خوارزميات التوقيع المدعومة المرتبطة بمصادقة العميل لـ TLSv1.2 و TLSv1.3. بالنسبة للخوادم، تُستخدم algs في حقل signature_algorithms لرسالة CertificateRequest. بالنسبة للعملاء، تُستخدم لتحديد خوارزمية التوقيع التي يجب استخدامها مع شهادة العميل. إذا لم يطلب الخادم شهادة، فلا تأثير لهذا الخيار.

    بناء جملة algs مطابق لـ -sigalgs. إذا لم يُعيّن، فسيُستخدم القيمة المُعيّنة لـ -sigalgs بدلاً من ذلك.

-groups groups
    يُعيّن المجموعات المدعومة. بالنسبة للعملاء، تُرسل المجموعات باستخدام امتداد المجموعات المدعومة. بالنسبة للخوادم، يُستخدم لتحديد المجموعة التي يجب استخدامها. يؤثر هذا الإعداد على المجموعات المستخدمة للتوقيعات (في TLSv1.2 والإصدارات الأقدم) وتبادل المفاتيح.

    في أبسط صورها، وسيطة groups هي قائمة مفصولة بنقطتين من المجموعات. الأسماء المفضلة هي تلك المدرجة في سجل IANA TLS Supported Groups <https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-8>.

    لبعض المجموعات، يدعم OpenSSL أسماء مستعارة إضافية. قد يكون هذا الاسم المستعار اسم NIST (مثل P-256)، أو اسم OID لـ OpenSSL (مثل prime256v1)، أو اسم آخر شائع الاستخدام. أسماء المجموعات غير حساسة لحالة الأحرف في OpenSSL 3.5 والإصدارات الأحدث. يجب أن تكون القائمة بترتيب الأفضلية مع المجموعة الأكثر تفضيلاً أولاً.

    ستُستخدم المجموعة الأولى المدرجة أيضًا في key_share الذي يُرسله عميل في ClientHello الخاص بـ TLSv1.3.

    تُدرج الأوامر أدناه أسماء IANA لـ TLS 1.2 و TLS 1.3، على التوالي:

        $ openssl list -tls1_2 -tls-groups
        $ openssl list -tls1_3 -tls-groups

    المجموعات الموصى بها لـ TLS 1.3 موثقة حاليًا في قائمة مجموعات TLS المبدئية في قاعدة كود OpenSSL. بدءًا من OpenSSL 3.5، الخوارزمية الهجينة X25519MLKEM768 هي الأولى في هذه القائمة المبدئية. إنها تخفف من التهديدات من أجهزة الكمبيوتر الكمومية المستقبلية مع توفير حماية تبادل مفاتيح تقليدية متطورة.

    التفاصيل الإضافية بخصوص اعتبارات الخوارزمية ما بعد الكمومية موثقة في قسم HISTORY أدناه.

    صيغة بديلة مُثراة، تُمكّن العملاء من إرسال مفاتيح مشاركة متعددة وتسمح للخوادم بتفضيل بعض المجموعات على أخرى، موصوفة في SSL_CTX_set1_groups_list(3). بما أن TLS 1.2 لا يحتوي على مفاتيح مشاركة ولا آلية إعادة محاولة الترحيب، مع TLS 1.2 تكون الصيغة المُثراة مكافئة في النهاية لقائمة بسيطة مرتبة من المجموعات، كما في الصيغة البسيطة أعلاه.

-curves المجموعات
    هذا مرادف لأمر -groups.

-named_curve المنحنى
    يُعيّن هذا المنحنى المؤقت المستخدم لأوضاع ECDH المؤقتة. هذا قابل للتطبيق فقط في TLS 1.0 و 1.1، ولا ينبغي استخدامه مع إصدارات البروتوكول الأحدث.

    وسيطة المنحنى هي اسم منحنى أو القيمة الخاصة auto التي تختار منحنى مناسبًا بناءً على تفضيلات العميل والخادم. يمكن أن يكون المنحنى إما اسم NIST (مثل P-256) أو اسم OID لـ OpenSSL (مثل prime256v1). حتى مع TLS 1.0 و 1.1، القيمة المبدئية لـ "auto" موصى بها بشدة على اختيار منحنى محدد. أسماء المنحنيات غير حساسة لحالة الأحرف في OpenSSL 3.5 والإصدارات الأحدث.

-tx_cert_comp
    يُمكّن دعم إرسال شهادات مضغوطة لـ TLSv1.3.

-no_tx_cert_comp
    يعطل دعم إرسال شهادات TLSv1.3 المضغوطة.

-rx_cert_comp
    يُمكّن دعم استقبال شهادات مضغوطة لـ TLSv1.3.

-no_rx_cert_comp
    يعطّل دعم استقبال شهادات TLSv1.3 المضغوطة.

-comp
-cipher المُعمِّيات
    يضبط قائمة مجموعات التشفير الخاصة بـ TLSv1.2 وما دونه إلى ciphers. ستُدمج هذه القائمة مع أي مجموعات تشفير TLSv1.3 مُهيأة. ملاحظة: لا يُجرى حاليًا التحقق من صياغة ciphers ما لم يُربط هيكل SSL أو SSL_CTX بـ ctx.

-ciphersuites 1.3ciphers
    يضبط مجموعات التشفير المتاحة لـ TLSv1.3 إلى قيمة. هذه قائمة مفصولة بنقطتين رأسيتين من أسماء مجموعات تشفير TLSv1.3 حسب ترتيب الأفضلية. ستُدمج هذه القائمة مع أي مجموعات تشفير TLSv1.2 وما دونه مُهيأة. راجع openssl-ciphers(1) لمزيد من المعلومات.

-min_protocol minprot, -max_protocol maxprot
    يضبط الحد الأدنى والأقصى للبروتوكول المدعوم. قيم البروتوكول المدعومة حاليًا هي SSLv3، TLSv1، TLSv1.1، TLSv1.2، TLSv1.3 لـ TLS؛ DTLSv1، DTLSv1.2 لـ DTLS، و None لعدم وجود حد. إذا لم يُحدد الحد الأدنى أو الأقصى، فإن الحد الآخر فقط يُطبق، إذا حُدد. إذا كان تطبيقك يدعم كلاً من TLS و DTLS، يمكنك تحديد أي من هذه الخيارات مرتين، مرة بحد لـ TLS ومرة أخرى بحد مناسب لـ DTLS. لتقييد إصدارات البروتوكول المدعومة، استخدم هذه الأوامر بدلاً من الأوامر البديلة المُهملة أدناه.

-record_padding padding
    يتحكم في استخدام حشو طبقة السجلات لـ TLSv1.3. padding هي سلسلة محارف من الشكل "number[,number]" حيث الرقم الأول (المطلوب) هو حجم كتلة الحشو (بالأوكتيتات) لبيانات التطبيق، والرقم الثاني الاختياري هو حجم كتلة الحشو لرسائل المصافحة والتنبيه. إذا حُذف الرقم الثاني الاختياري، يُطبق نفس الحشو على جميع الرسائل.

    يحاول الحشو حشو سجلات TLSv1.3 بحيث تكون مضاعفًا للطول المُحدد عند الإرسال. قيمة 0 أو 1 تُوقف الحشو حسب السياق. وإلا، يجب أن تكون القيم >1 أو <=16384.

-debug_broken_protocol
    مُتجاهَل.

-no_middlebox
    أوقف "توافق الصندوق الوسيط"، كما هو موصوف أدناه.

  خيارات إضافية
تُقبل الخيارات التالية بواسطة SSL_CONF_cmd()، لكنها لا تُعالج بواسطة أوامر OpenSSL.

-cert file
    يحاول استخدام file كشهادة للسياق المناسب. يستخدم حالياً SSL_CTX_use_certificate_chain_file() إذا وُضع هيكل SSL_CTX أو SSL_use_certificate_file() بنوع ملف PEM إذا وُضع هيكل SSL. هذا الخيار مدعوم فقط إذا سُمحت عمليات الشهادة.

-key file
    يحاول استخدام file كمفتاح خاص للسياق المناسب. هذا الخيار مدعوم فقط إذا سُمحت عمليات الشهادة. ملاحظة: إذا لم يُضبط خيار -key، فلا يُحمّل مفتاح خاص ما لم يُضبط العلم SSL_CONF_FLAG_REQUIRE_PRIVATE.

-dhparam file
    يحاول استخدام file كمجموعة معاملات DH المؤقتة للسياق المناسب. هذا الخيار مدعوم فقط إذا سُمحت عمليات الشهادة.

-no_ssl3, -no_tls1, -no_tls1_1, -no_tls1_2, -no_tls1_3
    يعطّل دعم البروتوكول لـ SSLv3، TLSv1.0، TLSv1.1، TLSv1.2 أو TLSv1.3 بضبط الخيارات المقابلة SSL_OP_NO_SSLv3، SSL_OP_NO_TLSv1، SSL_OP_NO_TLSv1_1، SSL_OP_NO_TLSv1_2 و SSL_OP_NO_TLSv1_3 على التوالي. هذه الخيارات مهملة، استخدم -min_protocol و -max_protocol بدلاً منها.

-anti_replay، -no_anti_replay
    يُشغّل أو يُعطّل حماية إعادة التشغيل على التوالي. مع تشغيل حماية إعادة التشغيل، يكتشف OpenSSL آلياً إذا استُخدمت تذكرة جلسة أكثر من مرة، وفُوض TLSv1.3، وفُعّلت البيانات المبكرة على الخادم. يُفرض مصافحة كاملة إذا استُخدمت تذكرة جلسة مرة ثانية أو لاحقة. مكافحة إعادة التشغيل مفعلة مبدئياً ما لم تُلغَ بواسطة ملف تهيئة وتُستخدم فقط بواسطة الخوادم. إجراءات مكافحة إعادة التشغيل مطلوبة للامتثال لمواصفات TLSv1.3. بعض التطبيقات قد تخفف مخاطر إعادة التشغيل بطرق أخرى وفي هذه الحالات لا تُحتاج وظيفة OpenSSL المدمجة. إيقاف مكافحة إعادة التشغيل يعادل SSL_OP_NO_ANTI_REPLAY.

أوامر ملف التهيئة المدعومة
أسماء option المدعومة حالياً لملفات التهيئة (أي، عندما يُضبط العلم SSL_CONF_FLAG_FILE) مُدرجة أدناه. جميع أسماء option لملف التهيئة غير حساسة لحالة الأحرف لذا يُتعرف على signaturealgorithms وكذلك SignatureAlgorithms. ما لم يُذكر خلاف ذلك، أسماء value غير حساسة لحالة الأحرف أيضاً.

ملاحظة: بادئة الأمر (إذا ضُبطت) تُغير قيم option المُتعرف عليها.

CipherString
    يضبط قائمة حزم التشفير لـ TLSv1.2 وأقل إلى value. ستُدمج هذه القائمة مع أي حزم تشفير TLSv1.3 مكوّنة. ملاحظة: لا يُجرى حالياً فحص بناء جملة value ما لم يُربط هيكل SSL أو SSL_CTX مع ctx.

Ciphersuites
    يضبط حزم التشفير المتاحة لـ TLSv1.3 إلى value. هذه قائمة مفصولة بنقطتين من أسماء حزم تشفير TLSv1.3 بترتيب الأفضلية. ستُدمج هذه القائمة مع أي حزم تشفير TLSv1.2 وأقل مكوّنة. راجع openssl-ciphers(1) لمزيد من المعلومات.

Certificate
    يحاول استخدام الملف القيمة كشهادة للسياق المناسب. يستخدم حالياً SSL_CTX_use_certificate_chain_file() إذا وُضع هيكل SSL_CTX أو SSL_use_certificate_file() بنوع ملف PEM إذا وُضع هيكل SSL. هذا الخيار مدعوم فقط إذا سُمحت عمليات الشهادة.

PrivateKey
    يحاول استخدام الملف القيمة كمفتاح خاص للسياق المناسب. هذا الخيار مدعوم فقط إذا سُمحت عمليات الشهادة. ملاحظة: إذا لم يُضبط خيار المفتاح_الخاص، فلا يُحمّل مفتاح خاص إلا إذا ضُبط SSL_CONF_FLAG_REQUIRE_PRIVATE.

ChainCAFile, ChainCAPath, VerifyCAFile, VerifyCAPath
    تشير هذه الخيارات إلى ملف أو دليل يُستخدم لبناء سلاسل الشهادات أو التحقق من سلاسل الشهادات. هذه الخيارات مدعومة فقط إذا سُمحت عمليات الشهادة.

RequestCAFile
    يشير هذا الخيار إلى ملف يحتوي على مجموعة من الشهادات بصيغة PEM. تُرسل أسماء الموضوعات للشهادات إلى النظير في امتداد سلطات_الشهادات لـ TLS 1.3 (في ClientHello أو CertificateRequest) أو في طلب شهادة للإصدارات السابقة من TLS.

ServerInfoFile
    يحاول استخدام الملف القيمة في امتداد "معلومات الخادم" باستخدام الدالة SSL_CTX_use_serverinfo_file.

DHParameters
    يحاول استخدام الملف القيمة كمجموعة معاملات DH المؤقتة للسياق المناسب. هذا الخيار مدعوم فقط إذا سُمحت عمليات الشهادة.

RecordPadding
    يتحكم في استخدام حشو طبقة السجلات لـ TLSv1.3. value هي سلسلة محارف بالصيغة "رقم[،رقم]" حيث الرقم الأول (المطلوب) هو حجم كتلة الحشو (بالبايت) لبيانات التطبيق، والرقم الثاني الاختياري هو حجم كتلة الحشو لرسائل المصافحة والتنبيه. إذا حُذف الرقم الثاني الاختياري، يُطبق نفس الحشو على جميع الرسائل.

    يحاول الحشو حشو سجلات TLSv1.3 بحيث تكون مضاعفًا للطول المُحدد عند الإرسال. قيمة 0 أو 1 تُوقف الحشو حسب السياق. وإلا، يجب أن تكون القيم >1 أو <=16384.

    لاحظ أنه بالنسبة لكائنات QUIC، يُجرى الحشو دائمًا على مستوى الحزمة، وبالتالي لا يمكن إجراؤه على مستوى السجل. ونظرًا لعدم وجود معرفة بنوع كائنات SSL التي تُنشأ عند إنشاء ملف التهيئة، يُتجاهل هذا الخيار بصمت لكائنات QUIC.

SignatureAlgorithms
    يُعيّن خوارزميات التوقيع المدعومة لـ TLSv1.2 و TLSv1.3. بالنسبة للعملاء، تُستخدم هذه القيمة مباشرةً لامتداد خوارزميات التوقيع المدعومة. بالنسبة للخوادم، تُستخدم لتحديد خوارزميات التوقيع التي يجب دعمها.

    وسيطة value ينبغي أن تكون قائمة مفصولة بنقطتين من خوارزميات التوقيع بترتيب تنازلي للأفضلية بالصيغة algorithm+hash أو signature_scheme. بالنسبة للمزودين الافتراضيين المرفقين مع OpenSSL، algorithm هو أحد RSA أو DSA أو ECDSA و hash هو اسم قصير لـ OID خوارزمية مدعومة مثل SHA1 أو SHA224 أو SHA256 أو SHA384 أو SHA512. signature_scheme هو أحد مخططات التوقيع المعرفة في TLSv1.3، والمحددة باستخدام اسم IANA، مثل ecdsa_secp256r1_sha256 أو ed25519 أو rsa_pss_pss_sha256. أسماء مخططات التوقيع وأسماء خوارزميات المفتاح العام (ولكن ليس أسماء التجزئة) في الصيغة algorithm+hash غير حساسة لحالة الأحرف. قد يوفر مزودون إضافيون مخططات توقيع أخرى عبر قدرة TLS_SIGALG. انظر "CAPABILITIES" في provider-base(7).

    إذا لم يُعيّن هذا الخيار، فجميع خوارزميات التوقيع المدعومة من جميع المزوّدين المُفعّلين مسموح بها.

    ملاحظة: الخوارزميات التي تُحدّد مخطط توقيع PKCS#1 v1.5 (إما باستخدام RSA كـ algorithm أو باستخدام أحد المعرفات rsa_pkcs1_*) تُتجاهل في TLSv1.3 ولن تُفاوض.

ClientSignatureAlgorithms
    يضبط خوارزميات التوقيع المدعومة المرتبطة بمصادقة العميل لـ TLSv1.2 و TLSv1.3. بالنسبة للخوادم، تُستخدم القيمة في حقل signature_algorithms لرسالة CertificateRequest. بالنسبة للعملاء، تُستخدم لتحديد خوارزمية التوقيع التي ستُستخدم مع شهادة العميل. إذا لم يطلب الخادم شهادة، فلا تأثير لهذا الخيار.

    صيغة value مطابقة لـ SignatureAlgorithms. إذا لم تُضبط، فستُستخدم القيمة المضبوطة لـ SignatureAlgorithms بدلاً من ذلك.

Groups
    يضبط المجموعات المدعومة. بالنسبة للعملاء، تُرسل المجموعات باستخدام امتداد المجموعات المدعومة. بالنسبة للخوادم، يُستخدم لتحديد المجموعة التي ستُستخدم. يؤثر هذا الإعداد على المجموعات المستخدمة للتوقيعات (في TLSv1.2 والإصدارات الأقدم) وتبادل المفاتيح. ستُستخدم المجموعة الأولى المدرجة أيضًا لـ key_share الذي يرسله عميل في TLSv1.3 ClientHello.

    وسيطة groups هي قائمة مفصولة بنقطتين من المجموعات. الأسماء المفضلة هي تلك المدرجة في سجل IANA TLS Supported Groups <https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-8>. بالنسبة لبعض المجموعات، يدعم OpenSSL أسماء مستعارة إضافية. قد يكون هذا الاسم المستعار اسم NIST (مثل P-256)، أو اسم OID لـ OpenSSL (مثل prime256v1)، أو اسم آخر شائع الاستخدام. أسماء المجموعات غير حساسة لحالة الأحرف في OpenSSL 3.5 والإصدارات الأحدث. ينبغي أن تكون القائمة بترتيب الأفضلية مع المجموعة الأكثر تفضيلاً أولاً.

    تسرد الأوامر أدناه المجموعات المتاحة لـ TLS 1.2 و TLS 1.3، على التوالي:

        $ openssl list -tls1_2 -tls-groups
        $ openssl list -tls1_3 -tls-groups

    صيغة بديلة مُثراة، تُمكّن العملاء من إرسال مفاتيح مشاركة متعددة وتسمح للخوادم بتفضيل بعض المجموعات على أخرى، موصوفة في SSL_CTX_set1_groups_list(3). بما أن TLS 1.2 لا يحتوي على مفاتيح مشاركة ولا آلية إعادة محاولة الترحيب، مع TLS 1.2 تكون الصيغة المُثراة مكافئة في النهاية لقائمة بسيطة مرتبة من المجموعات، كما في الصيغة البسيطة أعلاه.

Curves
    هذا مرادف لأمر "Groups".

MinProtocol
    يضبط الحد الأدنى لإصدار SSL أو TLS أو DTLS المدعوم.

    قيم البروتوكول المدعومة حاليًا هي SSLv3 و TLSv1 و TLSv1.1 و TLSv1.2 و TLSv1.3 و DTLSv1 و DTLSv1.2. تنطبق حدود SSL و TLS فقط على السياقات القائمة على TLS، بينما تنطبق حدود DTLS فقط على السياقات القائمة على DTLS. يمكن تكرار الأمر مع مثيل واحد يضبط حد TLS، والآخر يضبط حد DTLS. القيمة None تنطبق على كلا النوعين من السياقات وتعطل الحدود.

MaxProtocol
    يُعيِّن هذا أقصى إصدار مدعوم من SSL أو TLS أو DTLS.

    قيم البروتوكول المدعومة حاليًا هي SSLv3 و TLSv1 و TLSv1.1 و TLSv1.2 و TLSv1.3 و DTLSv1 و DTLSv1.2. تنطبق حدود SSL و TLS فقط على السياقات القائمة على TLS، بينما تنطبق حدود DTLS فقط على السياقات القائمة على DTLS. يمكن تكرار الأمر مع مثيل واحد يضبط حد TLS، والآخر يضبط حد DTLS. القيمة None تنطبق على كلا النوعين من السياقات وتعطل الحدود.

البروتوكول
    يمكن استخدام هذا لتمكين أو تعطيل إصدارات معينة من بروتوكول SSL أو TLS أو DTLS.

    الوسيط value هو قائمة مفصولة بفواصل من البروتوكولات المدعومة لتمكينها أو تعطيلها. إذا سُبق البروتوكول بـ - فذلك الإصدار مُعطَّل.

    جميع إصدارات البروتوكول مُفعَّلة مبدئيًا. تحتاج إلى تعطيل إصدار بروتوكول واحد على الأقل حتى يكون لهذا الإعداد أي تأثير. تمكين بعض إصدارات البروتوكول فقط لا يُعطِّل إصدارات البروتوكول الأخرى.

    قيم البروتوكول المدعومة حاليًا هي SSLv3 وTLSv1 وTLSv1.1 وTLSv1.2 وTLSv1.3 وDTLSv1 وDTLSv1.2. القيمة الخاصة ALL تشير إلى جميع الإصدارات المدعومة.

    لا يمكن لهذا تمكين بروتوكولات مُعطَّلة باستخدام MinProtocol أو MaxProtocol، لكن يمكنه تعطيل بروتوكولات لا تزال مسموحة بهما.

    أمر Protocol هش ومُهمَل؛ لا تستخدمه. استخدم MinProtocol وMaxProtocol بدلاً منه. إذا استخدمت Protocol، فتأكد من أن نطاق البروتوكولات المُفعَّلة الناتج لا يحتوي على "ثغرات"، مثلاً إذا كان TLS 1.0 وTLS 1.2 كلاهما مُفعَّلين، فتأكد أيضًا من ترك TLS 1.1 مُفعَّلاً.

Options
    الوسيط value هو قائمة مفصولة بفواصل من عدة أعلام لتعيينها. إذا سُبقت سلسلة العلم بـ - فهي مُعطَّلة. راجع دالة SSL_CTX_set_options(3) لمزيد من التفاصيل حول الخيارات الفردية.

    كل خيار مُدرَج أدناه. حيث تكون العملية مُفعَّلة مبدئيًا، يُحتاج إلى صيغة -flag لتعطيلها.

    SessionTicket: دعم تذكرة الجلسة، مُفعَّل مبدئيًا. عكس SSL_OP_NO_TICKET: أي -SessionTicket هو نفس تعيين SSL_OP_NO_TICKET.

    Compression: دعم ضغط SSL/TLS، مُعطَّل مبدئيًا. عكس SSL_OP_NO_COMPRESSION.

    EmptyFragments: استخدام أجزاء فارغة كإجراء مضاد ضد ثغرة بروتوكول SSL 3.0/TLS 1.0 التي تؤثر على المُعمِّيات CBC. هو مُعيَّن مبدئيًا. عكس SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS.

    Bugs: تمكين حلول بديلة متنوعة للأخطاء. نفس SSL_OP_ALL.

    DHSingle: تمكين مفاتيح DH للاستخدام الفردي، مُعيَّن مبدئيًا. عكس SSL_OP_DH_SINGLE. يُستخدم فقط بواسطة الخوادم.

    ECDHSingle: تمكين مفاتيح ECDH للاستخدام الفردي، مُعيَّن مبدئيًا. عكس SSL_OP_ECDH_SINGLE. يُستخدم فقط بواسطة الخوادم.

    ServerPreference: استخدام ترتيب تفضيل الخادم وليس العميل عند تحديد أي حزمة معمِّي أو خوارزمية توقيع أو منحنى إهليلجي (TLS 1.2) أو مجموعة (TLS 1.3) لاستخدامها لاتصال وارد. مكافئ لـ SSL_OP_SERVER_PREFERENCE. يُستخدم فقط بواسطة الخوادم.

    PrioritizeChaCha: يُعطي أولوية للمُعمِّيات ChaCha عندما يكون لدى العميل معمِّي ChaCha20 في أعلى قائمة تفضيلاته. هذا يشير عادةً إلى استخدام عميل محمول. مكافئ لـ SSL_OP_PRIORITIZE_CHACHA. يُستخدم فقط بواسطة الخوادم.

    NoResumptionOnRenegotiation: تعيين علم SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION. يُستخدم فقط بواسطة الخوادم.

    NoRenegotiation: يُعطِّل جميع محاولات إعادة التفاوض في TLSv1.2 والإصدارات الأقدم، وهو نفس ضبط SSL_OP_NO_RENEGOTIATION.

    UnsafeLegacyRenegotiation: يسمح باستخدام إعادة التفاوض القديمة غير الآمنة. مكافئ لـ SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION.

    UnsafeLegacyServerConnect: يسمح باستخدام إعادة التفاوض القديمة غير الآمنة لعملاء OpenSSL فقط. مكافئ لـ SSL_OP_LEGACY_SERVER_CONNECT.

    EncryptThenMac: يستخدم امتداد التشفير ثم MAC، مُفعَّل مبدئيًا. عكس SSL_OP_NO_ENCRYPT_THEN_MAC: أي أن -EncryptThenMac هو نفس ضبط SSL_OP_NO_ENCRYPT_THEN_MAC.

    AllowNoDHEKEX: في TLSv1.3 يسمح بوضع تبادل مفاتيح غير قائم على (ec)dhe عند الاستئناف. هذا يعني أنه لن يكون هناك سرية تطلعية للجلسة المستأنفة. مكافئ لـ SSL_OP_ALLOW_NO_DHE_KEX.

    PreferNoDHEKEX: في TLSv1.3، عند الاستئناف، يفضل الخادم وضع تبادل مفاتيح غير قائم على (ec)dhe على الوضع القائم على (ec)dhe. يتطلب AllowNoDHEKEX. مكافئ لـ SSL_OP_PREFER_NO_DHE_KEX. يُستخدم فقط بواسطة الخوادم.

    MiddleboxCompat: إذا ضُبط، تُرسل رسائل تغيير المُعمِّي الوهمية (CCS) في TLSv1.3. هذا يجعل TLSv1.3 يبدو أشبه بـ TLSv1.2 بحيث لا تقطع الصناديق الوسيطة التي لا تفهم TLSv1.3 الاتصال. هذا الخيار مضبوط مبدئيًا. قد لا تضبطه إصدارات OpenSSL المستقبلية مبدئيًا. مكافئ لـ SSL_OP_ENABLE_MIDDLEBOX_COMPAT.

    AntiReplay: إذا ضُبط، يكتشف OpenSSL آليًا إذا استُخدمت تذكرة جلسة أكثر من مرة، وتفاوض على TLSv1.3، وفُعِّلت البيانات المبكرة على الخادم. يُفرض مصافحة كاملة إذا استُخدمت تذكرة جلسة مرة ثانية أو لاحقة. هذا الخيار مضبوط مبدئيًا ويُستخدم فقط بواسطة الخوادم. إجراءات منع إعادة التشغيل مطلوبة للامتثال لمواصفات TLSv1.3. قد تتمكن بعض التطبيقات من تخفيف مخاطر إعادة التشغيل بطرق أخرى، وفي هذه الحالات لا تكون وظيفة OpenSSL المدمجة مطلوبة. تعطيل منع إعادة التشغيل مكافئ لضبط SSL_OP_NO_ANTI_REPLAY.

    ExtendedMasterSecret: يستخدم امتداد السر الرئيسي الموسع، مُفعَّل مبدئيًا. عكس SSL_OP_NO_EXTENDED_MASTER_SECRET: أي أن -ExtendedMasterSecret هو نفس ضبط SSL_OP_NO_EXTENDED_MASTER_SECRET.

    CANames: يستخدم امتداد أسماء المراجع المصدقة (CA)، مُفعَّل مبدئيًا. عكس SSL_OP_DISABLE_TLSEXT_CA_NAMES: أي أن -CANames هو نفس ضبط SSL_OP_DISABLE_TLSEXT_CA_NAMES.

    KTLS: يُفعِّل TLS النواة إذا دعم الدعم في التجميع، وكان مدعومًا من قبل مجموعات المُعمِّيات والامتدادات المتفاوض عليها. مكافئ لـ SSL_OP_ENABLE_KTLS.

    StrictCertCheck: يُفعِّل فحص الشهادة الصارم. مكافئ لضبط SSL_CERT_FLAG_TLS_STRICT باستخدام SSL_CTX_set_cert_flags().

    TxCertificateCompression: يدعم إرسال الشهادات المضغوطة، مُفعَّل مبدئيًا. عكس SSL_OP_NO_TX_CERTIFICATE_COMPRESSION: أي أن -TxCertificateCompression هو نفس ضبط SSL_OP_NO_TX_CERTIFICATE_COMPRESSION.

    RxCertificateCompression: يدعم استقبال الشهادات المضغوطة، مُفعَّل مبدئيًا. عكس SSL_OP_NO_RX_CERTIFICATE_COMPRESSION: أي أن -RxCertificateCompression هو نفس ضبط SSL_OP_NO_RX_CERTIFICATE_COMPRESSION.

    KTLSTxZerocopySendfile: يستخدم وضع الإرسال بدون نسخ (zerocopy) لـ sendfile()، مما يعطي تحسينًا في الأداء عند استخدامه مع تفريغ أجهزة KTLS. لاحظ أنه قد تُنقل سجلات TLS غير صالحة إذا تغير الملف أثناء إرساله. هذا الخيار ليس له تأثير إذا لم يُفعَّل KTLS. مكافئ لـ SSL_OP_ENABLE_KTLS_TX_ZEROCOPY_SENDFILE. هذا الخيار ينطبق فقط على Linux. KTLS sendfile على FreeBSD لا يقدم خيارًا لتعطيل النسخ الصفري ويعمل دائمًا في هذا الوضع.

    IgnoreUnexpectedEOF: مكافئ لـ SSL_OP_IGNORE_UNEXPECTED_EOF. يجب عليك فقط تفعيل هذا الخيار إذا كان البروتوكول الذي يعمل عبر TLS يمكنه اكتشاف هجوم الاقتطاع بنفسه، وكان التطبيق يتحقق من هجوم الاقتطاع ذلك.

VerifyMode
    وسيطة value هي قائمة مفصولة بفواصل من العلامات لضبطها.

    Peer يُفعِّل التحقق من النظير: للعملاء فقط.

    Request يطلب شهادة من العميل لكن لا يشترطها. للخوادم فقط.

    Require يطلب ويشترط شهادة من العميل: يحدث خطأ إذا لم يقدم العميل شهادة. للخوادم فقط.

    Once يطلب شهادة من العميل فقط عند الاتصال الأولي: لا عند إعادة التفاوض. للخوادم فقط.

    RequestPostHandshake يهيئ الاتصال لدعم الطلبات لكن لا يشترط شهادة من العميل بعد المصافحة. لا تُطلب شهادة أثناء المصافحة الأولية. يجب أن يوفر تطبيق الخادم آلية لطلب شهادة بعد المصافحة. للخوادم فقط. TLSv1.3 فقط.

    RequiresPostHandshake يهيئ الاتصال لدعم الطلبات ويشترط شهادة من العميل بعد المصافحة: يحدث خطأ إذا لم يقدم العميل شهادة. لا تُطلب شهادة أثناء المصافحة الأولية. يجب أن يوفر تطبيق الخادم آلية لطلب شهادة بعد المصافحة. للخوادم فقط. TLSv1.3 فقط.

ClientCAFile, ClientCAPath
    ملف أو دليل شهادات بصيغة PEM تُستخدم أسماؤها كمجموعة الأسماء المقبولة لمراجع التصديق الخاصة بالعميل. للخوادم فقط. هذا الخيار مدعوم فقط إذا سُمحت عمليات الشهادات.

أنواع الأوامر المدعومة
ترجع الدالة SSL_CONF_cmd_value_type() حالياً أحد الأنواع التالية:

SSL_CONF_TYPE_UNKNOWN
    سلسلة المحارف option غير معروفة، يمكن استخدام قيمة الإرجاع هذه للإشارة إلى أخطاء بناء الجملة.

SSL_CONF_TYPE_STRING
    القيمة هي سلسلة محارف دون أي بنية محددة.

SSL_CONF_TYPE_FILE
    القيمة هي اسم ملف.

SSL_CONF_TYPE_DIR
    القيمة هي اسم دليل.

SSL_CONF_TYPE_NONE
    سلسلة المحارف الخاصة بالقيمة غير مستخدمة، مثل خيار سطر أوامر لا يأخذ معاملًا.

ملاحظات
ترتيب العمليات مهم. يمكن استخدام هذا لتعيين إما القيم المبدئية أو القيم التي لا يمكن تجاوزها. على سبيل المثال، إذا استدعى تطبيق:

 SSL_CONF_cmd(ctx, "Protocol", "-SSLv3");
 SSL_CONF_cmd(ctx, userparam, uservalue);

سيعطل دعم SSLv3 مبدئيًا لكن يمكن للمستخدم تجاوزه. أما إذا كان تسلسل الاستدعاء هو:

 SSL_CONF_cmd(ctx, userparam, uservalue);
 SSL_CONF_cmd(ctx, "Protocol", "-SSLv3");

SSLv3 معطل دائمًا ويُتجاهل أي محاولة من المستخدم لتجاوز ذلك.

بفحص رمز الإرجاع للدالة SSL_CONF_cmd() يمكن الاستعلام عما إذا كان option معينًا معروفًا، وهذا مفيد إذا خُلطت قيم SSL_CONF_cmd() مع عمليات إضافية خاصة بالتطبيق.

على سبيل المثال، قد يستدعي تطبيق SSL_CONF_cmd() وإذا أرجع -2 (أمر غير معروف) يستمر في معالجة الأوامر الخاصة بالتطبيق.

يمكن للتطبيقات أيضًا استخدام SSL_CONF_cmd() لمعالجة سطور الأوامر رغم أن الدالة المساعدة SSL_CONF_cmd_argv() تُستخدم عادةً بدلًا من ذلك. إحدى طرق فعل ذلك هي تعيين البادئة إلى قيمة مناسبة باستخدام SSL_CONF_CTX_set1_prefix()، وتمرير المعامل الحالي إلى option والمعامل التالي إلى value (التي قد تكون NULL).

في هذه الحالة، إذا كانت قيمة الإرجاع موجبة فتُستخدم لتخطي ذلك العدد من المعاملات حيث عولجت بواسطة SSL_CONF_cmd(). إذا أُرجع -2 فإن option غير معروف ويمكن فحص المعاملات الخاصة بالتطبيق بدلًا من ذلك. إذا أُرجع -3 فإن معاملًا مطلوبًا مفقود ويُشار إلى خطأ. إذا أُرجع 0 حدث خطأ آخر ويمكن الإبلاغ عنه للمستخدم.

يمكن للتطبيقات استخدام الدالة SSL_CONF_cmd_value_type() للتحقق من وجود أمر أو لإجراء فحص نحوي إضافي أو ترجمة لقيمة الأمر. على سبيل المثال، إذا كانت قيمة الإرجاع SSL_CONF_TYPE_FILE يمكن لتطبيق ترجمة اسم مسار نسبي إلى اسم مسار مطلق.

القيم المُرجعة
SSL_CONF_cmd() تُرجع 1 إذا كانت قيمة option معروفة و value غير مستخدمة، وتُرجع 2 إذا استُخدم كل من option و value. بعبارة أخرى، تُرجع عدد المعاملات التي عولجت. هذا مفيد عند معالجة سطور الأوامر.

قيمة إرجاع -2 تعني أن option غير معروف.

قيمة إرجاع -3 تعني أن option معروف والأمر يتطلب قيمة لكن value هي NULL.

رمز إرجاع 0 يشير إلى أن كلاً من option و value صالحان لكن حدث خطأ أثناء محاولة تنفيذ العملية: على سبيل المثال بسبب خطأ في نحو value، وفي هذه الحالة قد يوفر طابور الأخطاء معلومات إضافية.

أمثلة
تعيين خوارزميات التوقيع المدعومة:

 SSL_CONF_cmd(ctx, "SignatureAlgorithms", "ECDSA+SHA256:RSA+SHA256:DSA+SHA256");

توجد طرق متنوعة لاختيار البروتوكولات المدعومة.

يُعيّن هذا إصدار البروتوكول الأدنى إلى TLSv1، وبالتالي يُعطّل SSLv3. هذه هي الطريقة الموصى بها لتعطيل البروتوكولات.

 SSL_CONF_cmd(ctx, "MinProtocol", "TLSv1");

ما يلي يُعطّل SSLv3 أيضًا:

 SSL_CONF_cmd(ctx, "Protocol", "-SSLv3");

ما يلي سيفعّل أولاً جميع البروتوكولات، ثم يُعطّل SSLv3. إذا لم تُعطّل أي إصدارات بروتوكول من قبل، فسيكون لهذا نفس تأثير "-SSLv3"، ولكن إذا عُطّلت بعض الإصدارات، فسيعيد تفعيلها قبل تعطيل SSLv3.

 SSL_CONF_cmd(ctx, "Protocol", "ALL,-SSLv3");

فعّل TLSv1.2 فقط:

 SSL_CONF_cmd(ctx, "MinProtocol", "TLSv1.2");
 SSL_CONF_cmd(ctx, "MaxProtocol", "TLSv1.2");

هذا يُفعّل TLSv1.2 فقط أيضًا:

 SSL_CONF_cmd(ctx, "Protocol", "-ALL,TLSv1.2");

عطّل تذاكر جلسة TLS:

 SSL_CONF_cmd(ctx, "Options", "-SessionTicket");

فعّل الضغط:

 SSL_CONF_cmd(ctx, "Options", "Compression");

عيّن المنحنيات المدعومة إلى P-256، P-384:

 SSL_CONF_cmd(ctx, "Curves", "P-256:P-384");

انظر أيضًا
ssl(7), SSL_CONF_CTX_new(3), SSL_CONF_CTX_set_flags(3), SSL_CONF_CTX_set1_prefix(3), SSL_CONF_CTX_set_ssl_ctx(3), SSL_CONF_cmd_argv(3), SSL_CTX_set_options(3)

التاريخ
أُضيفت الدالة SSL_CONF_cmd() في OpenSSL 1.0.2.

خيار SSL_OP_NO_SSL2 ليس له تأثير منذ الإصدار 1.1.0، لكن الكليّة محفوظة للتوافق مع الإصدارات السابقة.

أُضيف SSL_CONF_TYPE_NONE في OpenSSL 1.1.0. في الإصدارات السابقة من OpenSSL، كان تمرير أمر لا يأخذ معاملًا يُرجع SSL_CONF_TYPE_UNKNOWN.

أُضيف MinProtocol و MaxProtocol في OpenSSL 1.1.0.

أُضيف AllowNoDHEKEX و PrioritizeChaCha في OpenSSL 1.1.1.

خيار UnsafeLegacyServerConnect لم يعد مُعيَّنًا مبدئيًا منذ OpenSSL 3.0.

أُضيف خيارا TxCertificateCompression و RxCertificateCompression في OpenSSL 3.2.

أُضيف PreferNoDHEKEX في OpenSSL 3.3.

يُقدّم OpenSSL 3.5 دعمًا لتبادل مفاتيح TLS ما بعد الكم (PQ) عبر مجموعات TLS MLKEM512 و MLKEM768 و MLKEM1024. تستند هذه إلى الخوارزميات الأساسية ML-KEM-512 و ML-KEM-768 و ML-KEM-1024 من FIPS 203.

يُقدّم OpenSSL 3.5 أيضًا دعمًا لثلاث مجموعات TLS هجينة لتبادل مفاتيح ECDH PQ: X25519MLKEM768 و SecP256r1MLKEM768 و SecP384r1MLKEM1024. تُوفّر أداءً لوحدة المعالجة المركزية (CPU) مشابهًا لمجموعة ECDH المرتبطة، وإن كان ذلك على حساب رسائل تبادل مفاتيح أكبر حجمًا بشكل ملحوظ. المجموعة الثالثة، SecP384r1MLKEM1024، أكثر استهلاكًا لوحدة المعالجة المركزية بشكل كبير، ويرجع ذلك إلى حد كبير إلى التكلفة العالية لوحدة المعالجة المركزية لـ ECDH للمجموعة الأساسية P-384. كما أن رسائل تبادل المفاتيح الخاصة بها، التي تقترب من 1700 بايت، أكبر من الـ 1200 بايت تقريبًا للمجموعتين الأوليين.

بدءاً من OpenSSL 3.5، لا تتأثر أسماء مجموعات تبادل المفاتيح بحالة الحروف.

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