Konfigurace OpenSSL pro Linux

Upozornění

Tento článek odkazuje na CentOS, linuxovou distribuci, která se blíží stavu Konec životnosti (EOL). Zvažte své použití a plánování odpovídajícím způsobem. Další informace najdete v doprovodných materiálech CentOS End Of Life.

Se sadou Speech SDK se OpenSSL dynamicky konfiguruje na verzi hostitelského systému.

Poznámka:

Tento článek platí jenom v případě, že je sada Speech SDK podporovaná v Linuxu.

Pokud chcete zajistit připojení, ověřte, že jsou ve vašem systému nainstalované certifikáty OpenSSL. Spusťte příkaz:

openssl version -d

Výstup systémů založených na Ubuntu/Debianu by měl být:

OPENSSLDIR: "/usr/lib/ssl"

Zkontrolujte, jestli v části OPENSSLDIR existuje certs podadresář. V předchozím příkladu by to bylo /usr/lib/ssl/certs.

  • Pokud existuje /usr/lib/ssl/certs a pokud obsahuje mnoho jednotlivých souborů certifikátu (s .crt příponou nebo .pem příponou), není potřeba provádět další akce.

  • Pokud je opensSLDIR něco jiného než /usr/lib/ssl nebo existuje soubor sady certifikátů místo více jednotlivých souborů, musíte nastavit odpovídající proměnnou prostředí SSL, která označuje, kde se certifikáty nacházejí.

Příklady

Tady je několik ukázkových proměnných prostředí pro konfiguraci pro každý adresář OpenSSL.

  • OPENSSLDIR je /opt/ssl. certs Existuje podadresář s mnoha .crt soubory nebo .pem soubory. Před použitím sady Speech SDK nastavte proměnnou SSL_CERT_DIR prostředí tak, aby ukazovala na /opt/ssl/certs bod. Příklad:
export SSL_CERT_DIR=/opt/ssl/certs
  • OPENSSLDIR je /etc/pki/tls (například v systémech založených na RHEL/CentOS). certs Existuje podadresář se souborem sady certifikátů, například ca-bundle.crt. Před použitím sady Speech SDK nastavte proměnnou SSL_CERT_FILE prostředí tak, aby ukazovala na tento soubor. Příklad:
export SSL_CERT_FILE=/etc/pki/tls/certs/ca-bundle.crt

Kontroly odvolání certifikátu

Když se sada Speech SDK připojí ke službě Speech, zkontroluje certifikát TLS/SSL (Transport Layer Security). Sada Speech SDK ověřuje, že certifikát hlášený vzdáleným koncovým bodem je důvěryhodný a neodvolal se. Toto ověření poskytuje vrstvu ochrany proti útokům zahrnujícím falšování identity a další související vektory. Tato kontrola se provádí načtením seznamu odvolaných certifikátů (CRL) z certifikační autority (CA), kterou používá Azure. Seznam umístění ke stažení certifikační autority Azure pro aktualizované seznamy CRL protokolu TLS najdete v tomto dokumentu.

Pokud cíl, který se zobrazuje jako služba Speech, hlásí certifikát, který byl odvolán v načtené seznamu CRL, sada SDK ukončí připojení a hlásí chybu prostřednictvím Canceled události. Pravost ohlášeného certifikátu se nedá zkontrolovat bez aktualizovaného seznamu CRL. Sada Speech SDK proto zachází také s chybou při stahování seznamu CRL z umístění certifikační autority Azure.

Upozorňující

Pokud vaše řešení používá proxy server nebo bránu firewall, měla by být nakonfigurovaná tak, aby povolovala přístup ke všem adresám URL seznamu odvolaných certifikátů používaným Azure. Všimněte si, že mnoho z těchto adres URL je mimo microsoft.com doménu, takže povolení přístupu *.microsoft.com nestačí. Podrobnosti najdete v tomto dokumentu . Ve výjimečných případech můžete ignorovat selhání seznamu CRL (viz část odpovídající), ale tato konfigurace se důrazně nedoporučuje, zejména pro produkční scénáře.

Velké soubory CRL (>10 MB)

Jednou z příčin selhání souvisejících s CRL je použití velkých souborů CRL. Tato třída chyb se obvykle vztahuje pouze na speciální prostředí s rozšířenými řetězy certifikační autority. Standardní veřejné koncové body by se neměly setkat s touto třídou problému.

Výchozí maximální velikost seznamu CRL používaná sadou Speech SDK (10 MB) je možné upravit pro každý objekt konfigurace. Klíč vlastnosti pro tuto úpravu je CONFIG_MAX_CRL_SIZE_KB a hodnota zadaná jako řetězec je ve výchozím nastavení 10000 (10 MB). Například při vytváření objektu SpeechRecognizer (který spravuje připojení ke službě Speech), můžete tuto vlastnost nastavit v jeho SpeechConfig. V následujícím fragmentu kódu se konfigurace upraví tak, aby umožňovala velikost souboru seznamu CRL až 15 MB.

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

Obejití nebo ignorování selhání seznamu CRL

Pokud prostředí není možné nakonfigurovat pro přístup k umístění certifikační autority Azure, sada Speech SDK nemůže načíst aktualizovaný CRL. Sadu SDK můžete nakonfigurovat tak, aby pokračovala a protokolovat selhání stahování, nebo aby obešla všechny kontroly seznamu CRL.

Upozorňující

Kontroly seznamu CRL jsou bezpečnostní opatření a jejich obejití zvyšuje citlivost vůči útokům. Neměly by se obcházet bez důkladného zvážení dopadů na zabezpečení a alternativních mechanismů pro ochranu před vektory útoku, které kontrolují seznamy CRL.

Chcete-li pokračovat v připojení, pokud CRL nelze načíst, nastavte vlastnost "OPENSSL_CONTINUE_ON_CRL_DOWNLOAD_FAILURE" na "true"hodnotu . Pokus o načtení seznamu CRL a selhání se stále v protokolech vygeneruje, ale pokusy o připojení mohou pokračovat.

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

Chcete-li vypnout kontroly odvolání certifikátu, nastavte vlastnost "OPENSSL_DISABLE_CRL_CHECK" na "true"hodnotu . Při připojování ke službě Speech se pak nebudete pokoušet zkontrolovat ani stáhnout CRL a bez automatického ověření hlášeného certifikátu 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")

Ukládání seznamu CRL do mezipaměti a výkon

Sada Speech SDK ve výchozím nastavení uloží na disk úspěšně stažený seznam CRL, aby se zlepšila počáteční latence budoucích připojení. Pokud není k dispozici seznam CRL v mezipaměti nebo když vyprší platnost seznamu CRL v mezipaměti, stáhne se nový seznam.

Některé linuxové distribuce nemají definovanou proměnnou prostředí ani TMPDIR proměnnou TMP prostředí, takže sada Speech SDK nestahuje seznamy CRL do mezipaměti. Bez TMP definované proměnné prostředí sada TMPDIR Speech SDK stáhne nový CRL pro každé připojení. Pokud chcete zvýšit výkon počátečního připojení v této situaci, můžete vytvořit proměnnou TMPDIR prostředí a nastavit ji na přístupnou cestu dočasného adresáře.

Další kroky