Configurare OpenSSL per Linux
Con Speech SDK OpenSSL è configurato dinamicamente per la versione del sistema host.
Nota
Questo articolo si applica solo se Speech SDK è supportato in Linux.
Per garantire la connettività verificare che nel sistema siano installati i certificati OpenSSL. Eseguire un comando:
openssl version -d
L'output nei sistemi basati su Ubuntu/Debian deve essere:
OPENSSLDIR: "/usr/lib/ssl"
Controllare se è presente una certs
sottodirectory in OPENSSLDIR. Nell'esempio precedente, sarebbe /usr/lib/ssl/certs
.
Non è necessario eseguire ulteriori azioni, se esiste
/usr/lib/ssl/certs
e se contiene molti file di certificato singoli (con estensione.crt
o.pem
).Se OPENSSLDIR è diverso da
/usr/lib/ssl
o è presente un singolo file bundle del certificato, anziché più file singoli, è necessario impostare una variabile di ambiente SSL appropriata per indicare dove trovare i certificati.
Esempi
Ecco alcune variabili di ambiente di esempio da configurare per ogni directory OpenSSL.
- OPENSSLDIR è
/opt/ssl
. Esiste unacerts
sottodirectory con molti file.crt
o.pem
. Impostare la variabile di ambienteSSL_CERT_DIR
in modo che punti a/opt/ssl/certs
prima di usare Speech SDK. Ad esempio:
export SSL_CERT_DIR=/opt/ssl/certs
- OPENSSLDIR è
/etc/pki/tls
(ad esempio, nei sistemi basati su RHEL). Esiste una sottodirectorycerts
con un file bundle del certificato, ad esempioca-bundle.crt
. Impostare la variabile di ambienteSSL_CERT_FILE
in modo che punti a tale file prima di usare Speech SDK. Ad esempio:
export SSL_CERT_FILE=/etc/pki/tls/certs/ca-bundle.crt
Controlli di revoca dei certificati
Quando Speech SDK si connette al servizio Voce, questo controlla il certificato TLS/SSL (Transport Layer Security). Speech SDK verifica che il certificato segnalato dall'endpoint remoto sia attendibile e non sia revocato. Questa verifica fornisce un livello di protezione contro gli attacchi che coinvolgono lo spoofing e altri vettori correlati. Il controllo viene eseguito recuperando un elenco di revoche di certificati (CRL) da un'autorità di certificazione (CA) usata da Azure. Un elenco dei percorsi di download della CA di Azure per i CRL TLS aggiornati è disponibile in questo documento.
Se una destinazione esposta come servizio Voce segnala un certificato revocato in un CRL recuperato, l'SDK terminerà la connessione e segnalerà un errore tramite un evento Canceled
. L'autenticità di un certificato segnalato non può essere verificata senza un CRL aggiornato. Di conseguenza, l'SDK di Voce considererà un errore anche scaricare un CRL da un percorso della CA di Azure.
Avviso
Se la soluzione usa proxy o firewall, deve essere configurata per consentire l'accesso a tutti gli URL dell'elenco di revoche di certificati usati da Azure. Si noti che molti di questi URL sono esterni al dominio di microsoft.com
, quindi non è sufficiente consentire l'accesso a *.microsoft.com
. Per informazioni dettagliate vedere questo documento. In casi eccezionali è possibile ignorare gli errori CRL (vedere sezione corrispondente) ma si sconsiglia fortemente di usare tale configurazione, soprattutto per gli scenari di produzione.
File CRL di grandi dimensioni (10 MB) >
Una causa di errori correlati all’elenco di revoche di certificati è l'uso di file CRL di grandi dimensioni. Questa classe di errore in genere si applica solo a ambienti speciali con catene di CA estese. Gli endpoint pubblici standard non devono riscontrare questa classe di problemi.
Le dimensioni predefinite massime di CRL usate da Speech SDK (10 MB) possono essere modificate in base all’oggetto di configurazione. La chiave di proprietà per questa modifica è CONFIG_MAX_CRL_SIZE_KB
e il valore, specificato come stringa, è "10000" (10 MB) per impostazione predefinita. Ad esempio, se si crea un oggetto SpeechRecognizer
(che gestisce una connessione al servizio Voce), è possibile impostare questa proprietà nel relativo SpeechConfig
. Nel frammento di codice seguente, la configurazione viene modificata in modo da consentire una dimensione del file CRL fino 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")
Escludere o ignorare gli errori CRL
Se non è possibile configurare un ambiente per accedere a un percorso della CA di Azure, l'SDK di VOCE non potrà recuperare un CRL aggiornato. È possibile configurare l'SDK per continuare e registrare gli errori di download o escludere tutti i controlli CRL.
Avviso
I controlli CRL sono una misura di sicurezza: escluderli aumenta la sensibilità agli attacchi. Non devono essere esclusi senza un'attenta considerazione delle implicazioni di sicurezza e dei meccanismi alternativi per la protezione contro i vettori di attacco che i controlli CRL attenuano.
Per continuare con la connessione quando non è possibile recuperare un CRL, impostare la proprietà "OPENSSL_CONTINUE_ON_CRL_DOWNLOAD_FAILURE"
su "true"
. Verrà comunque effettuato un tentativo per recuperare un CRL e gli errori verranno comunque generati nei log, ma i tentativi di connessione continueranno ad essere consentiti.
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")
Per disattivare i controlli di revoca dei certificati impostare la proprietà "OPENSSL_DISABLE_CRL_CHECK"
su "true"
. Quindi, durante la connessione al servizio Voce, non viene eseguito alcun tentativo per controllare o scaricare un CRL e non verrà eseguita alcuna verifica automatica di un certificato TLS/SSL segnalato.
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")
Memorizzazione nella cache e prestazioni di un elenco di revoche di certificati
Per impostazione predefinita, Speech SDK memorizza nella cache un CRL scaricato correttamente su disco per migliorare la latenza iniziale delle connessioni future. Se non è presente alcun CRL memorizzato nella cache o se il CRL memorizzato nella cache è scaduto, verrà scaricato un nuovo elenco.
Alcune distribuzioni Linux non hanno TMP
o una variabile di ambiente definita TMPDIR
, quindi l'SDK di Voce non memorizza nella cache i CRL scaricati. Senza TMP
o una variabile di ambiente definita TMPDIR
, l'SDK di Voce scaricherà un nuovo CRL ad ogni connessione. Per migliorare le prestazioni di connessione iniziali in questa situazione è possibile creare una TMPDIR
variabile di ambiente e impostarla sul percorso accessibile di una directory temporanea.
Contenuto correlato
- Panoramica di Speech SDK
- Installare Speech SDK