Настройка OpenSSL для Linux
При использовании пакета SDK Речи выполняется динамическая настройка OpenSSL в соответствии с версией главной системы.
Примечание.
Эта статья применима, только если пакет 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
, прежде чем использовать пакет SDK Речи. Например:
export SSL_CERT_DIR=/opt/ssl/certs
- OPENSLDIR (
/etc/pki/tls
например, в системах на основе RHEL). В нем располагается подкаталогcerts
с файлом пакета сертификатов, напримерca-bundle.crt
. Настройте переменную средыSSL_CERT_FILE
так, чтобы она указывала на этот файл, прежде чем использовать пакет SDK Речи. Например:
export SSL_CERT_FILE=/etc/pki/tls/certs/ca-bundle.crt
Проверки отзыва сертификатов
Когда пакет SDK службы "Речь" подключается к службе "Речь", он проверяет сертификат TLS/SSL. Пакет SDK службы "Речь" проверяет, является ли сертификат, сообщаемый удаленной конечной точкой, доверенным и не отозван. Эта проверка обеспечивает уровень защиты от атак, использующих подмену и другие связанные векторы. Проверка выполняется путем получения списка отзыва сертификатов (CRL) из центра сертификации (ЦС), используемого Azure. Список расположений загрузки ЦС Azure для обновленных списков отзыва сертификатов TLS можно найти в этом документе.
Если назначение, являющееся службой "Речь", сообщает отозванный сертификат в полученном списке отзыва сертификатов, пакет SDK завершает подключение и сообщает об ошибке Canceled
через событие. Подлинность сообщаемого сертификата не может быть проверена без обновленного списка отзыва сертификатов. Поэтому пакет SDK службы "Речь" также обрабатывает сбой скачивания списка отзыва сертификатов из расположения Центра сертификации Azure в качестве ошибки.
Предупреждение
Если решение использует прокси-сервер или брандмауэр, необходимо настроить его, чтобы разрешить доступ ко всем URL-адресам списка отзыва сертификатов, используемым Azure. Обратите внимание, что многие из этих URL-адресов находятся за пределами microsoft.com
домена, поэтому разрешение доступа *.microsoft.com
недостаточно. Дополнительные сведения см . в этом документе . В исключительных случаях можно игнорировать ошибки CRL (см . раздел корреспондента), но такая конфигурация настоятельно не рекомендуется, особенно для рабочих сценариев.
Большие файлы списков отзыва сертификатов (> 10 МБ)
Одной из причин сбоев, связанных с списком отзыва сертификатов, является использование больших файлов списков отзыва сертификатов. Этот класс ошибок обычно применим только к особым средам с расширенными цепочками ЦС. Стандартные общедоступные конечные точки не должны сталкиваться с проблемами такого класса.
По умолчанию максимальный размер списка отзыва сертификатов, используемый в пакете 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")
speechConfig.properties.SetPropertyByString("CONFIG_MAX_CRL_SIZE_KB", "15000")
Обход или игнорирование ошибок списка отзыва сертификатов
Если среда не может быть настроена для доступа к расположению Центра сертификации Azure, пакет SDK службы "Речь" не может получить обновленный список отзыва сертификатов. Вы можете настроить пакет SDK для продолжения работы и регистрации ошибок скачивания или обхода всех проверок списка отзыва сертификатов.
Предупреждение
Проверки списка отзыва сертификатов — это мера безопасности, и их обход повышает уязвимость к атакам. Их не следует обходить без тщательного рассмотрения угроз безопасности и альтернативных механизмов защиты от векторов атак, которые проверяет список отзыва сертификатов.
Чтобы продолжить подключение, когда не удается получить список отзыва сертификатов, задайте свойству "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");
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"
. Затем при подключении к службе "Речь" не выполняется попытка проверить или скачать список отзыва сертификатов, а также автоматическая проверка сообщаемого 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")
Кэширование и производительность списка отзыва сертификатов
По умолчанию пакет SDK службы "Речь" кэширует успешно загруженный список отзыва сертификатов на диске, чтобы улучшить первоначальную задержку в будущих подключениях. Если кэшированный список отзыва сертификатов отсутствует или истек срок действия кэшированного списка отзыва сертификатов, будет скачан новый список.
Некоторые дистрибутивы Linux не определяют переменную среды или TMPDIR
переменную среды, поэтому пакет SDK службы "Речь" не TMP
кэширует скачанные crls. TMPDIR
Без TMP
определенной переменной среды пакет SDK службы "Речь" скачивает новый список отзыва сертификатов для каждого подключения. Чтобы повысить начальную производительность подключения в такой ситуации, можно создать TMPDIR
переменную среды и задать путь к выбранному временному каталогу..