تكوين OpenSSL لـ Linux
باستخدام الإصدار 1.19.0 من Speech SDK والإصدارات الأحدث، يتم تكوين OpenSSL ديناميكيا إلى إصدار النظام المضيف. في الإصدارات السابقة ، يرتبط OpenSSL بشكل ثابت بالمكتبة الأساسية ل SDK.
لضمان الاتصال، تحقق من تثبيت شهادات 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 مناسب للإشارة إلى مكان العثور على الشهادات.
أمثلة
- 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
التحقق من إبطال الشهادة
عندما تتصل حزمة تطوير البرامج (SDK) الخاصة بالكلام (Speech SDK)، فإنها تتحقق من أن شهادة أمان طبقة النقل (TLS) التي تم الإبلاغ عنها بواسطة نقطة النهاية البعيدة موثوق بها ولم يتم إبطالها. وهذا يوفر طبقة من الحماية ضد الهجمات التي تنطوي على الانتحال وغيرها من المتجهات ذات الصلة. يتم إنجاز التحقق عن طريق استرداد قائمة إبطال شهادة (CRL) من مرجع مصدق (CA) يستخدمه Azure. يمكن العثور على قائمة بمواقع تنزيل Azure CA ل TLS CRLs المحدثة في هذا المستند.
إذا أبلغت وجهة تتظاهر بأنها "خدمة الكلام" عن شهادة تم إبطالها في CRL تم استرداده، فستقوم SDK بإنهاء الاتصال والإبلاغ عن خطأ عبر Canceled حدث. نظرا لأنه لا يمكن التحقق من صحة الشهادة التي تم الإبلاغ عنها بدون CRL محدث، فإن Speech SDK ستتعامل بشكل افتراضي أيضا مع الفشل في تنزيل CRL من موقع Azure CA كخطأ.
ملفات CRL كبيرة (>10 ميجابايت)
أحد أسباب الفشل المرتبط ب CRL هو استخدام ملفات CRL الكبيرة بشكل خاص. ينطبق هذا عادة فقط على البيئات الخاصة ذات سلاسل CA الموسعة والمعايير ، ويجب ألا تواجه نقاط النهاية العامة هذه الفئة من المشكلات.
يمكن ضبط الحد الأقصى الافتراضي لحجم CRL المستخدم بواسطة Speech SDK (10 ميغابايت) لكل كائن تكوين. مفتاح الخاصية لهذا الضبط هو CONFIG_MAX_CRL_SIZE_KB والقيمة، المحددة كسلسلة، هي افتراضيا "10000" (10 ميغابايت). على سبيل المثال، عند إنشاء SpeechRecognizer كائن (يدير اتصالا بخدمة الكلام)، يمكنك تعيين هذه الخاصية في SpeechConfigملف . في المقتطف أدناه، يتم ضبط التكوين للسماح بحجم ملف CRL يصل إلى 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")
[config setPropertyTo:@"15000" byName:"CONFIG_MAX_CRL_SIZE_KB"];
تجاوز أو تجاهل فشل CRL
إذا تعذر تكوين بيئة للوصول إلى موقع Azure CA، فلن تتمكن Speech SDK أبدا من استرداد CRL محدث. يمكنك تكوين SDK إما لمتابعة وتسجيل حالات فشل التنزيل أو لتجاوز جميع عمليات التحقق من CRL.
تحذير
تعد فحوصات CRL إجراء أمنيا وتجاوزها يزيد من التعرض للهجمات. ولا ينبغي تجاوزها دون دراسة مستفيضة للآثار الأمنية والآليات البديلة للحماية من ناقلات الهجوم التي تخفف من حدة عمليات التحقق من CRL.
لمتابعة الاتصال عندما يتعذر استرداد CRL، قم بتعيين الخاصية "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")
[config setPropertyTo:@"true" byName:"OPENSSL_CONTINUE_ON_CRL_DOWNLOAD_FAILURE"];
لإيقاف عمليات التحقق من إبطال الشهادة، قم بتعيين الخاصية "OPENSSL_DISABLE_CRL_CHECK" إلى "true". بعد ذلك، أثناء الاتصال بخدمة الكلام، لن تكون هناك محاولة للتحقق من CRL أو تنزيله ولن يكون هناك تحقق تلقائي من شهادة TLS المبلغ عنها.
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")
[config setPropertyTo:@"true" byName:"OPENSSL_DISABLE_CRL_CHECK"];
التخزين المؤقت CRL والأداء
بشكل افتراضي، ستقوم حزمة تطوير البرامج (SDK) الخاصة بالكلام بتخزين CRL الذي تم تنزيله بنجاح على القرص مؤقتا لتحسين زمن الوصول الأولي للاتصالات المستقبلية. عند عدم وجود CRL المخزن مؤقتا أو عند انتهاء صلاحية CRL المخزن مؤقتا، سيتم تنزيل قائمة جديدة.
لا تحتوي بعض توزيعات Linux على TMP متغير أو TMPDIR بيئة محدد. سيؤدي ذلك إلى منع Speech SDK من التخزين المؤقت ل CRLs التي تم تنزيلها ويتسبب في تنزيل CRL جديد عند كل اتصال. لتحسين أداء الاتصال الأولي في هذه الحالة، يمكنك إنشاء متغير بيئة TMPDIR وتعيينه إلى المسار الذي يمكن الوصول إليه لدليل مؤقت..