Partilhar via


Configurar o OpenSSL para Linux

Com o Speech SDK, o OpenSSL é configurado dinamicamente para a versão do sistema host.

Nota

Este artigo só é aplicável quando o SDK de fala é suportado no Linux.

Para garantir a conectividade, verifique se os certificados OpenSSL estão instalados no seu sistema. Execute um comando:

openssl version -d

A saída em sistemas baseados no Ubuntu / Debian deve ser:

OPENSSLDIR: "/usr/lib/ssl"

Verifique se há um certs subdiretório em OPENSSLDIR. No exemplo anterior, seria /usr/lib/ssl/certs.

  • Se o /usr/lib/ssl/certs existir, e se ele contiver muitos arquivos de certificado individuais (com .crt ou .pem extensão), não há necessidade de ações adicionais.

  • Se OPENSSLDIR for algo diferente ou /usr/lib/ssl houver um único arquivo de pacote de certificado em vez de vários arquivos individuais, você precisará definir uma variável de ambiente SSL apropriada para indicar onde os certificados podem ser encontrados.

Exemplos

Aqui estão alguns exemplos de variáveis de ambiente para configurar por diretório OpenSSL.

  • OPENSSLDIR é /opt/ssl. Há um certs subdiretório com muitos .crt ou .pem arquivos. Defina a variável SSL_CERT_DIR de ambiente para apontar /opt/ssl/certs antes de usar o SDK de fala. Por exemplo:
export SSL_CERT_DIR=/opt/ssl/certs
  • OPENSSLDIR é /etc/pki/tls (como em sistemas baseados em RHEL). Há um certs subdiretório com um arquivo de pacote de certificados, por exemplo ca-bundle.crt. Defina a variável SSL_CERT_FILE de ambiente para apontar para esse arquivo antes de usar o SDK de fala. Por exemplo:
export SSL_CERT_FILE=/etc/pki/tls/certs/ca-bundle.crt

Verificações de revogação de certificados

Quando o SDK de Fala se conecta ao serviço de Fala, ele verifica o certificado TLS/SSL (Transport Layer Security). O SDK de Fala verifica se o certificado relatado pelo ponto de extremidade remoto é confiável e não foi revogado. Essa verificação fornece uma camada de proteção contra ataques envolvendo spoofing e outros vetores relacionados. A verificação é realizada recuperando uma lista de revogação de certificados (CRL) de uma autoridade de certificação (CA) usada pelo Azure. Uma lista de locais de download da CA do Azure para CRLs TLS atualizadas pode ser encontrada neste documento.

Se um destino que se apresenta como o serviço de Fala relatar um certificado revogado em uma CRL recuperada, o SDK encerrará a conexão e relatará um erro por meio de um Canceled evento. A autenticidade de um certificado relatado não pode ser verificada sem uma CRL atualizada. Portanto, o SDK de Fala também trata uma falha ao baixar uma CRL de um local de CA do Azure como um erro.

Aviso

Se sua solução usa proxy ou firewall, ela deve ser configurada para permitir o acesso a todas as URLs da lista de revogação de certificados usadas pelo Azure. Observe que muitos desses URLs estão fora do microsoft.com domínio, portanto, permitir o acesso não *.microsoft.com é suficiente. Consulte este documento para obter detalhes. Em casos excecionais, você pode ignorar falhas de CRL (consulte a seção correspondente), mas essa configuração não é altamente recomendada, especialmente para cenários de produção.

Ficheiros CRL grandes (>10 MB)

Uma causa de falhas relacionadas à CRL é o uso de arquivos CRL grandes. Essa classe de erro normalmente só é aplicável a ambientes especiais com cadeias de CA estendidas. Os pontos de extremidade públicos padrão não devem encontrar essa classe de problema.

O tamanho máximo de CRL padrão usado pelo SDK de fala (10 MB) pode ser ajustado por objeto de configuração. A chave de propriedade para este ajuste é CONFIG_MAX_CRL_SIZE_KB e o valor, especificado como uma cadeia de caracteres, é por padrão "10000" (10 MB). Por exemplo, ao criar um SpeechRecognizer objeto (que gerencia uma conexão com o serviço de fala), você pode definir essa propriedade em seu SpeechConfig. No trecho de código a seguir, a configuração é ajustada para permitir um tamanho de arquivo CRL de até 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")

Ignorando ou ignorando falhas de CRL

Se um ambiente não puder ser configurado para acessar um local de CA do Azure, o SDK de Fala não poderá recuperar uma CRL atualizada. Você pode configurar o SDK para continuar e registrar falhas de download ou para ignorar todas as verificações de CRL.

Aviso

As verificações de CRL são uma medida de segurança e ignorá-las aumenta a suscetibilidade a ataques. Eles não devem ser ignorados sem uma consideração completa das implicações de segurança e mecanismos alternativos de proteção contra os vetores de ataque que as verificações CRL atenuam.

Para continuar com a conexão quando uma CRL não puder ser recuperada, defina a propriedade "OPENSSL_CONTINUE_ON_CRL_DOWNLOAD_FAILURE" como "true". Ainda é feita uma tentativa para recuperar uma CRL e as falhas ainda são emitidas nos logs, mas as tentativas de conexão podem continuar.

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

Para desativar as verificações de revogação de certificados, defina a propriedade "OPENSSL_DISABLE_CRL_CHECK" como "true". Em seguida, ao conectar-se ao serviço de fala, não há nenhuma tentativa de verificar ou baixar uma CRL e nenhuma verificação automática de um certificado TLS/SSL relatado.

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

Cache e desempenho de CRL

Por padrão, o SDK de fala armazenará em cache uma CRL baixada com êxito no disco para melhorar a latência inicial de conexões futuras. Quando nenhuma CRL armazenada em cache estiver presente ou quando a CRL armazenada em cache expirar, uma nova lista será baixada.

Algumas distribuições Linux não têm uma TMP variável ou TMPDIR de ambiente definida, portanto, o Speech SDK não armazena em cache as CRLs baixadas. Sem TMP uma variável de TMPDIR ambiente definida, o SDK de fala baixa uma nova CRL para cada conexão. Para melhorar o desempenho da conexão inicial nessa situação, você pode criar uma TMPDIR variável de ambiente e defini-la para o caminho acessível de um diretório temporário..