تكوين OpenSSL لـ Linux

تنبيه

تشير هذه المقالة إلى CentOS، وهو توزيع Linux يقترب من حالة نهاية العمر الافتراضي (EOL). يرجى مراعاة استخدامك والتخطيط وفقا لذلك. لمزيد من المعلومات، راجع إرشادات نهاية العمر الافتراضي CentOS.

باستخدام Speech SDK، يتم تكوين OpenSSL ديناميكيًا إلى إصدار النظام المضيف.

إشعار

هذه المقالة قابلة للتطبيق فقط عندما يكون Speech SDK مدعومًا على Linux.

لضمان الاتصال، تحقق من تثبيت شهادات OpenSSL في نظامك. قم بتشغيل أمر:

openssl version -d

يجب أن يكون الإخراج على الأنظمة المستندة إلى Ubuntu/Debian:

OPENSSLDIR: "/usr/lib/ssl"

تحقق مما إذا كان هناك دليل certs فرعي ضمن OPENSSLDIR. سيكون /usr/lib/ssl/certs في المثال أعلاه.

  • إذا /usr/lib/ssl/certs كان موجودًا، وإذا كان يحتوي على العديد من ملفات الشهادات الفردية (ذات الامتداد .crt أو .pem ملحق المستعرض)، فلا داعي لاتخاذ مزيد من الإجراءات.

  • إذا كان OPENSSLDIR شيئًا آخر /usr/lib/ssl أو كان هناك ملف حزمة شهادة واحد بدلاً من عدة ملفات فردية، فأنت بحاجة إلى تعيين متغير بيئة SSL مناسب للإشارة إلى مكان العثور على الشهادات.

الأمثلة

فيما يلي بعض الأمثلة على متغيرات البيئة لتكوينها لكل دليل OpenSSL.

  • OPENSSLDIR هو عبارة عن /opt/ssl. يوجد certs دليل فرعي به العديد .crt أو الملفات.pem. عيِّن متغير SSL_CERT_DIR البيئة للإشارة /opt/ssl/certsى إليه قبل استخدام Speech SDK. على سبيل المثال:
export SSL_CERT_DIR=/opt/ssl/certs
  • OPENSSLDIR هو عبارة عن /etc/pki/tls (مثل الأنظمة القائمة على RHEL /CentOS). يوجد دليل certs فرعي بملف حزمة شهادات، على سبيل المثالca-bundle.crt. عيِّن متغير البيئة للإشارة إلى SSL_CERT_FILEهذا الملف قبل استخدام Speech SDK. على سبيل المثال:
export SSL_CERT_FILE=/etc/pki/tls/certs/ca-bundle.crt

فحص إبطال الشهادة الرقمية

عندما يتصل Speech SDK بخدمة Speech، فإنه يتحقق من شهادة أمان طبقة النقل (TLS/SSL). تتحقق Speech SDK من أن الشهادة التي أبلغت عنها نقطة النهاية البعيدة موثوقة ولم يتم إبطالها. يوفر هذا التحقق طبقة من الحماية ضد الهجمات التي تنطوي على انتحال ونواقل أخرى ذات صلة. يتم إجراء الفحص عن طريق استرداد قائمة إبطال الشهادات من هيئة التصديق (CA) تستعين بها Azure. يمكن العثور على قائمة بمواقع تنزيل Azure CA لقوائم بروتوكول أمان طبقة النقل المحدثة في هذا المستند.

إذا كانت الوجهة التي تشكل خدمة Speech تبلغ عن شهادة تم إبطالها في CRL تم استرداده، فإن SDK تنهي الاتصال وتبلغ عن خطأ عبر Canceled حدث. لا يمكن التحقق من أصالة الشهادة التي تم الإبلاغ عنها بدون قائمة إبطال الشهادات محدث. لذلك، يعامل Speech SDK أيضا فشل تنزيل CRL من موقع AZURE CA كخطأ.

تحذير

إذا كان الحل الخاص بك يستخدم وكيلا أو جدار حماية، فيجب تكوينه للسماح بالوصول إلى جميع عناوين URL لقائمة إبطال الشهادات التي يستخدمها Azure. لاحظ أن العديد من عناوين URL هذه خارج microsoft.com المجال، لذلك لا يكفي السماح بالوصول إليها *.microsoft.com . راجع هذا المستند للحصول على التفاصيل. في الحالات الاستثنائية، قد تتجاهل حالات فشل CRL (راجع قسم المراسلة)، ولكن لا ينصح بشدة بهذا التكوين، خاصة بالنسبة لسيناريوهات الإنتاج.

ملفات قائمة إبطال الشهادات الكبيرة (>10 ميغا بايت)

أحد أسباب الفشل المرتبط بـ قائمة إبطال الشهادات هو استخدام ملفات قائمة إبطال الشهادات الكبيرة. عادةً ما تنطبق فئة الخطأ هذه فقط على البيئات الخاصة ذات سلاسل المرجع المصدق (CA) الممتدة. يجب ألا تواجه نقاط النهاية العامة القياسية هذه الفئة من المشكلات.

يمكن ضبط الحد الأقصى الافتراضي لحجم قائمة إبطال الشهادات الذي تستخدمه Speech SDK (10 ميغابايت) لكل عنصر تكوين. مفتاح الخاصية لهذا الضبط هو CONFIG_MAX_CRL_SIZE_KB والقيمة المحددة كسلسلة، بشكل افتراضي "10000" (10 ميغا بايت). على سبيل المثال، عند إنشاء كائن SpeechRecognizer (يدير اتصالا بخدمة Speech)، يمكنك تعيين هذه الخاصية في SpeechConfig. في المقتطف أدناه، يتم ضبط التكوين للسماح بحجم ملف قائمة إبطال الشهادات يصل إلى 15 ميغابايت.

config.SetProperty("CONFIG_MAX_CRL_SIZE_KB"", "15000");
config->SetProperty("CONFIG_MAX_CRL_SIZE_KB"", "15000");
config.setProperty("CONFIG_MAX_CRL_SIZE_KB"", "15000");
speech_config.set_property_by_name("CONFIG_MAX_CRL_SIZE_KB"", "15000")
speechConfig.properties.SetPropertyByString("CONFIG_MAX_CRL_SIZE_KB", "15000")

تجاوز أو تجاهل حالات فشل قائمة إبطال الشهادات

إذا تعذر تكوين بيئة للوصول إلى موقع Azure CA، فلا يمكن ل Speech SDK استرداد CRL محدث. يمكنك تكوين SDK إما للمتابعة وتسجيل حالات فشل التنزيل أو لتجاوز جميع عمليات التحقق من قائمة إبطال الشهادات.

تحذير

عمليات فحص قائمة إبطال الشهادات هي إجراء أمني وتجاوزها يزيد من قابلية التعرض للهجمات. لا ينبغي تجاوزها دون دراسة شاملة للآليات الأمنية والآليات البديلة للحماية من نواقل الهجوم التي تخففها عمليات فحص قائمة إلغاء الشهادات.

لمتابعة الاتصال عندما يتعذر استرداد قائمة إبطال الشهادات، قم بتعيين الخاصية "OPENSSL_CONTINUE_ON_CRL_DOWNLOAD_FAILURE" إلى "true". لا تزال هناك محاولة لاسترداد CRL ولا تزال حالات الفشل تنبعث في السجلات، ولكن يسمح بمتابعة محاولات الاتصال.

config.SetProperty("OPENSSL_CONTINUE_ON_CRL_DOWNLOAD_FAILURE", "true");
config->SetProperty("OPENSSL_CONTINUE_ON_CRL_DOWNLOAD_FAILURE", "true");
config.setProperty("OPENSSL_CONTINUE_ON_CRL_DOWNLOAD_FAILURE", "true");
speech_config.set_property_by_name("OPENSSL_CONTINUE_ON_CRL_DOWNLOAD_FAILURE", "true")

speechConfig.properties.SetPropertyByString("OPENSSL_CONTINUE_ON_CRL_DOWNLOAD_FAILURE", "true")

لإيقاف عمليات تدقيق إبطال الشهادة، عيّن الخاصية "OPENSSL_DISABLE_CRL_CHECK" إلى "true". بعد ذلك، أثناء الاتصال بخدمة Speech، لن تكون هناك محاولة للتحقق من CRL أو تنزيله ولن يتم التحقق التلقائي من شهادة TLS/SSL المبلغ عنها.

config.SetProperty("OPENSSL_DISABLE_CRL_CHECK", "true");
config->SetProperty("OPENSSL_DISABLE_CRL_CHECK", "true");
config.setProperty("OPENSSL_DISABLE_CRL_CHECK", "true");
speech_config.set_property_by_name("OPENSSL_DISABLE_CRL_CHECK", "true")
speechConfig.properties.SetPropertyByString("OPENSSL_DISABLE_CRL_CHECK", "true")

التخزين المؤقت والأداء لقائمة إبطال الشهادات

بشكل افتراضي، سوف تخزن Speech SDK مؤقتًا قائمة إبطال الشهادات تم تنزيله بنجاح على القرص لتحسين زمن الانتقال الأولي للاتصالات المستقبلية. عندما لا يكون CRL المخزن مؤقتا موجودا أو عند انتهاء صلاحية CRL المخزن مؤقتا، يتم تنزيل قائمة جديدة.

لا تحتوي بعض توزيعات Linux على TMP متغير بيئة أو TMPDIR محدد، لذلك لا تقوم Speech SDK بتخزين قوائم CRا التي تم تنزيلها مؤقتا. بدون TMP تحديد متغير البيئة أو TMPDIR تحديده، يقوم Speech SDK بتنزيل CRL جديد لكل اتصال. لتحسين أداء الاتصال الأولي في هذه الحالة، يمكنك إنشاءTMPDIR متغير بيئة وتعيينه إلى المسار الذي يمكن الوصول إليه لدليل مؤقت.

الخطوات التالية