Настройка OpenSSL для Linux

При использовании Speech 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 перед использованием Speech SDK. Например:
export SSL_CERT_DIR=/opt/ssl/certs
  • OPENSSLDIR — это /etc/pki/tls (например, на системах на основе RHEL). В нем располагается подкаталог certs с файлом пакета сертификатов, например ca-bundle.crt. Настройте переменную среды SSL_CERT_FILE так, чтобы она указывала на этот файл, прежде чем использовать SDK речевых технологий. Например:
export SSL_CERT_FILE=/etc/pki/tls/certs/ca-bundle.crt

Проверки отзыва сертификатов

Помимо стандартных проверок срока действия сертификата OpenSSL, Speech SDK может включить дополнительную проверку отзыва для сертификата TLS/SSL. Пакет SDK "Речь" проверяет, является ли сертификат, сообщаемый удаленной конечной точкой, доверенным и не отозван. Эта проверка обеспечивает добавленный уровень защиты от атак с использованием скомпрометированных сертификатов. Проверка выполняется путем получения списка отзыва сертификатов (CRL) из центра сертификации (ЦС), используемого Azure. Список мест загрузки ЦС Azure для обновленных списков аннулирования сертификатов TLS можно найти в этом документе.

Примечание.

По умолчанию проверки CRL отключены в Speech SDK 1.48 и более поздних версиях.

Если назначение, выдающее себя за службу "Речь", сообщает о наличии отозванного сертификата в полученном списке отзыва сертификатов, пакет SDK завершает подключение и через событие Canceled сообщает об ошибке. Подлинность сообщенного сертификата не может быть проверена без обновленного списка отозванных сертификатов (CRL). Поэтому SDK распознавания речи также обрабатывает сбой загрузки CRL из расположения Центра сертификации Azure как ошибку.

Предупреждение

Если решение использует прокси-сервер или брандмауэр, необходимо настроить его, чтобы разрешить доступ ко всем URL-адресам списка отзыва сертификатов, используемым Azure. Обратите внимание, что многие из этих URL-адресов находятся за пределами microsoft.com домена, поэтому разрешение доступа *.microsoft.com недостаточно. См. в этом документе для получения подробной информации.

Большие файлы CRL

Одной из причин сбоев, связанных с CRL, является использование больших файлов CRL. Этот класс ошибок, как правило, относится только к специфическим средам с расширенными цепочками ЦС. Стандартные общедоступные конечные точки не должны сталкиваться с проблемами такого класса.

Максимальный размер списка отзыва сертификатов по умолчанию, используемый Speech SDK, можно настроить для каждого конфигурационного объекта. Ключ свойства для этой корректировки - CONFIG_MAX_CRL_SIZE_KB, а значение, заданное в виде строки, в настоящее время по умолчанию "100000" (100 МБ). Например, при создании SpeechRecognizer объекта (который управляет подключением к службе речевого сервиса), это свойство можно установить в его SpeechConfig. В следующем фрагменте кода конфигурация настраивается для разрешения размера файла CRL до 150 МБ.

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

Обход или игнорирование сбоев CRL

Если среда не может быть настроена для доступа к расположению Центра сертификации Azure, речевая SDK не может получить обновленный CRL (список отзыва сертификатов). Вы можете настроить SDK таким образом, чтобы либо продолжать работу и записывать ошибки загрузки, либо обходить все проверки 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")

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

Чтобы отключить проверку отзыва сертификатов, задайте свойству "OPENSSL_DISABLE_CRL_CHECK" значение "true". Затем, при подключении к службе распознавания речи, не выполняется проверка или загрузка списка отзыва сертификатов (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")

Кэширование списка отзыва сертификатов (CRL) и производительность

По умолчанию SDK будет кэшировать успешно загруженный CRL на диске для улучшения начальной задержки при будущих соединениях. Если кэшированный список отзыва сертификатов отсутствует или истек срок действия кэшированного списка отзыва сертификатов, будет скачан новый список.

Некоторые дистрибутивы Linux не имеют определённой переменной среды TMP или TMPDIR, поэтому среда исполнения SDK для речи не кэширует загруженные CRLs. TMP Если ни TMP, ни переменные среды не определены, пакет SDK для речевых технологий загружает новый список отзыва сертификатов для каждого подключения. Чтобы повысить начальную производительность подключения в такой ситуации, можно создать TMPDIR переменную среды и задать путь к выбранному временному каталогу..