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

Внимание

Эта статья ссылается на CentOS, дистрибутив Linux, который приближается к состоянию конца жизни (EOL). Пожалуйста, рассмотрите возможность использования и планирования соответствующим образом. Дополнительные сведения см. в руководстве centOS End Of Life.

При использовании пакета 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
  • Каталог OPENSSLDIR находится по пути /etc/pki/tls (как в системах на базе RHEL/CentOS). В нем располагается подкаталог 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. В приведенном ниже фрагменте кода конфигурация корректируется таким образом, чтобы размер файла списка отзыва сертификатов составлял не более 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 переменную среды и задать путь к выбранному временному каталогу..

Следующие шаги