Linuxos OpenSSL konfigurálása

Figyelemfelhívás

Ez a cikk a CentOS-ra, egy olyan Linux-disztribúcióra hivatkozik, amely közel áll az élettartam (EOL) állapotához. Ennek megfelelően fontolja meg a használatot és a tervezést. További információ: CentOS End Of Life útmutató.

A Speech SDK-val az OpenSSL dinamikusan konfigurálva van a gazdarendszer verziójára.

Feljegyzés

Ez a cikk csak akkor alkalmazható, ha a Speech SDK Linuxon támogatott.

A kapcsolat biztosításához ellenőrizze, hogy az OpenSSL-tanúsítványok telepítve vannak-e a rendszerben. Parancs futtatása:

openssl version -d

Az Ubuntu/Debian-alapú rendszerek kimenetének a következőnek kell lennie:

OPENSSLDIR: "/usr/lib/ssl"

Ellenőrizze, hogy van-e certs alkönyvtár az OPENSSLDIR alatt. A fenti példában az lenne /usr/lib/ssl/certs.

  • Ha létezik, /usr/lib/ssl/certs és sok különálló tanúsítványfájlt tartalmaz (a kiterjesztéssel együtt vagy .pem kiterjesztéssel .crt együtt), nincs szükség további műveletekre.

  • Ha az OPENSSLDIR más, mint /usr/lib/ssl egy tanúsítványcsomagfájl több különálló fájl helyett, akkor be kell állítania egy megfelelő SSL-környezeti változót, amely jelzi, hogy hol találhatók a tanúsítványok.

Példák

Íme néhány példa az OpenSSL-címtárakra konfigurálni kívánt környezeti változókra.

  • OPENSSLDIR is /opt/ssl. Van egy certs alkönyvtár, amely sok .crt vagy fájlból áll .pem . Állítsa be a környezeti változót SSL_CERT_DIR úgy, hogy a Speech SDK használata előtt mutasson /opt/ssl/certs . Példa:
export SSL_CERT_DIR=/opt/ssl/certs
  • AZ OPENSSLDIR (hasonlóan az /etc/pki/tls RHEL/CentOS-alapú rendszerekhez). Van egy certsca-bundle.crtalkönyvtár például egy tanúsítványcsomagfájllal. A Speech SDK használata előtt állítsa a környezeti változót SSL_CERT_FILE arra a fájlra. Példa:
export SSL_CERT_FILE=/etc/pki/tls/certs/ca-bundle.crt

Tanúsítvány-visszavonási ellenőrzések

Amikor a Speech SDK csatlakozik a Speech szolgáltatáshoz, ellenőrzi a Transport Layer Security (TLS/SSL) tanúsítványt. A Speech SDK ellenőrzi, hogy a távoli végpont által jelentett tanúsítvány megbízható-e, és nem lett-e visszavonva. Ez az ellenőrzés védelmet nyújt a hamisítást és más kapcsolódó vektorokat érintő támadások ellen. Az ellenőrzés egy visszavont tanúsítványok listájának (CRL) az Azure által használt hitelesítésszolgáltatótól való lekérésével történik. A dokumentumban megtalálható a frissített TLS CRL-ek Azure CA-letöltési helyeinek listája.

Ha a Speech szolgáltatásként megjelenő célhely egy lekért CRL-ben visszavont tanúsítványt jelent, az SDK megszakítja a kapcsolatot, és egy eseményen keresztül Canceled hibát jelez. A jelentett tanúsítványok hitelessége nem ellenőrizhető frissített CRL nélkül. Ezért a Speech SDK hibaként kezeli a CRL Azure CA-helyről való letöltésének meghiúsulását is.

Figyelmeztetés

Ha a megoldás proxyt vagy tűzfalat használ, úgy kell konfigurálni, hogy engedélyezze az Azure által használt összes tanúsítvány-visszavonási lista URL-címéhez való hozzáférést. Vegye figyelembe, hogy ezen URL-címek nagy része tartományon kívül microsoft.com esik, ezért a hozzáférés *.microsoft.com engedélyezése nem elegendő. A részletekért tekintse meg ezt a dokumentumot . Kivételes esetekben figyelmen kívül hagyhatja a CRL-hibákat (lásd a levelező szakaszt), de ez a konfiguráció erősen nem ajánlott, különösen éles helyzetekben.

Nagyméretű CRL-fájlok (>10 MB)

A CRL-sel kapcsolatos hibák egyik oka a nagy CRL-fájlok használata. Ez a hibaosztály általában csak a kiterjesztett CA-láncokkal rendelkező speciális környezetekre vonatkozik. A standard nyilvános végpontok nem találkozhatnak ezzel a problémával.

A Speech SDK által használt alapértelmezett maximális CRL-méret (10 MB) konfigurációs objektumonként módosítható. A beállítás tulajdonságkulcsa, CONFIG_MAX_CRL_SIZE_KB és a sztringként megadott érték alapértelmezés szerint "10000" (10 MB). Ha például létrehoz egy SpeechRecognizer objektumot (amely kezeli a Speech szolgáltatással való kapcsolatot), beállíthatja ezt a tulajdonságot a sajátjában SpeechConfig. Az alábbi kódrészletben a konfiguráció úgy van beállítva, hogy a CRL-fájl mérete legfeljebb 15 MB legyen.

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")

CRL-hibák megkerülése vagy figyelmen kívül hagyása

Ha egy környezet nem konfigurálható egy Azure CA-hely eléréséhez, a Speech SDK nem tudja lekérni a frissített CRL-t. Konfigurálhatja az SDK-t a letöltési hibák folytatására és naplózására, vagy az összes CRL-ellenőrzés megkerülésére.

Figyelmeztetés

A CRL-ellenőrzések biztonsági intézkedésnek számítanak, és megkerülésük növeli a támadásokra való fogékonyságot. Ezeket nem szabad megkerülni anélkül, hogy alaposan figyelembe kellene venni a CRL-ellenőrzések által enyhített támadási vektorok elleni védelem biztonsági következményeit és alternatív mechanizmusait.

Ha folytatni szeretné a kapcsolatot, ha egy CRL nem kérhető le, állítsa a tulajdonságot "OPENSSL_CONTINUE_ON_CRL_DOWNLOAD_FAILURE" a következőre "true": . A rendszer továbbra is megkísérli lekérni a CRL-t, és a hibák továbbra is ki lesznek bocsátva a naplókban, de a kapcsolati kísérletek folytathatók.

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")

A tanúsítvány-visszavonási ellenőrzések kikapcsolásához állítsa a tulajdonságot "OPENSSL_DISABLE_CRL_CHECK" a következőre "true": . Ezután a Speech szolgáltatáshoz való csatlakozás során nem kísérel meg ellenőrizni vagy letölteni a CRL-t, és nem kell automatikusan ellenőriznie a jelentett TLS/SSL-tanúsítványt.

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")

CRL-gyorsítótárazás és teljesítmény

Alapértelmezés szerint a Speech SDK gyorsítótáraz egy sikeresen letöltött CRL-t a lemezen a jövőbeli kapcsolatok kezdeti késésének javítása érdekében. Ha nincs gyorsítótárazott CRL, vagy ha a gyorsítótárazott CRL lejárt, a rendszer letölt egy új listát.

Egyes Linux-disztribúciókban nincs meghatározva környezeti TMPTMPDIR változó, ezért a Speech SDK nem gyorsítótárazza a letöltött CRL-eket. A Speech SDK definíció nélkül vagy TMPDIR környezeti változó nélkül TMP letölt egy új CRL-t minden kapcsolathoz. Ebben a helyzetben a kezdeti kapcsolat teljesítményének javítása érdekében létrehozhat egy környezeti változótTMPDIR, és beállíthatja egy ideiglenes könyvtár akadálymentes elérési útjára.

Következő lépések