Konfigurera OpenSSL för Linux
Med Speech SDK konfigureras OpenSSL dynamiskt till värdsystemversionen.
Kommentar
Den här artikeln gäller endast om Speech SDK stöds i Linux.
Kontrollera att OpenSSL-certifikat är installerade i systemet för att säkerställa anslutningen. Kör ett kommando:
openssl version -d
Utdata från Ubuntu/Debian-baserade system bör vara:
OPENSSLDIR: "/usr/lib/ssl"
Kontrollera om det finns en certs
underkatalog under OPENSSLDIR. I föregående exempel skulle det vara /usr/lib/ssl/certs
.
Om det
/usr/lib/ssl/certs
finns, och om det innehåller många enskilda certifikatfiler (med.crt
eller.pem
tillägg), finns det inget behov av ytterligare åtgärder.Om OPENSSLDIR är något annat än
/usr/lib/ssl
eller om det finns en enda certifikatpaketfil i stället för flera enskilda filer, måste du ange en lämplig SSL-miljövariabel för att ange var certifikaten finns.
Exempel
Här följer några exempel på miljövariabler som ska konfigureras per OpenSSL-katalog.
- OPENSSLDIR är
/opt/ssl
. Det finns encerts
underkatalog med många.crt
eller.pem
filer. Ange miljövariabelnSSL_CERT_DIR
så att den pekar på/opt/ssl/certs
innan du använder Speech SDK. Till exempel:
export SSL_CERT_DIR=/opt/ssl/certs
- OPENSSLDIR är
/etc/pki/tls
(som i RHEL-baserade system). Det finns encerts
underkatalog med en certifikatpaketfil, till exempelca-bundle.crt
. Ange miljövariabelnSSL_CERT_FILE
så att den pekar på filen innan du använder Speech SDK. Till exempel:
export SSL_CERT_FILE=/etc/pki/tls/certs/ca-bundle.crt
Kontroller av återkallade certifikat
När Speech SDK ansluter till Speech-tjänsten kontrollerar den TLS/SSL-certifikatet (Transport Layer Security). Speech SDK verifierar att certifikatet som rapporteras av fjärrslutpunkten är betrott och inte återkallas. Den här verifieringen ger ett lager av skydd mot attacker som involverar förfalskning och andra relaterade vektorer. Kontrollen utförs genom att hämta en lista över återkallade certifikat (CRL) från en certifikatutfärdare (CA) som används av Azure. En lista över nedladdningsplatser för Azure CA för uppdaterade TLS-CRL:er finns i det här dokumentet.
Om ett mål som utger sig för att vara Speech-tjänsten rapporterar ett återkallat certifikat i en hämtad CRL, avslutar SDK:t anslutningen och rapporterar ett fel via en Canceled
händelse. Autentiteten för ett rapporterat certifikat kan inte kontrolleras utan en uppdaterad CRL. Därför behandlar Speech SDK även ett fel vid nedladdning av en CRL från en Azure CA-plats.
Varning
Om din lösning använder proxy eller brandvägg bör den konfigureras för att tillåta åtkomst till alla url:er för listan över återkallade certifikat som används av Azure. Observera att många av dessa URL:er ligger utanför microsoft.com
domänen, så det räcker inte att tillåta åtkomst.*.microsoft.com
Mer information finns i det här dokumentet . I undantagsfall kan du ignorera CRL-fel (se avsnittet korrespondent), men sådan konfiguration rekommenderas starkt inte, särskilt inte för produktionsscenarier.
Stora CRL-filer (>10 MB)
En orsak till CRL-relaterade fel är användningen av stora CRL-filer. Den här felklassen gäller vanligtvis endast för särskilda miljöer med utökade CA-kedjor. Offentliga standardslutpunkter bör inte stöta på den här problemklassen.
Den maximala crl-standardstorleken som används av Speech SDK (10 MB) kan justeras per konfigurationsobjekt. Egenskapsnyckeln för den här justeringen är CONFIG_MAX_CRL_SIZE_KB
och värdet, som anges som en sträng, är som standard "10000" (10 MB). När du till exempel skapar ett SpeechRecognizer
objekt (som hanterar en anslutning till Speech-tjänsten) kan du ange den här egenskapen i dess SpeechConfig
. I följande kodfragment justeras konfigurationen för att tillåta en CRL-filstorlek på upp till 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")
Kringgå eller ignorera CRL-fel
Om en miljö inte kan konfigureras för åtkomst till en Azure CA-plats kan Speech SDK inte hämta en uppdaterad CRL. Du kan konfigurera SDK antingen för att fortsätta och logga nedladdningsfel eller för att kringgå alla CRL-kontroller.
Varning
CRL-kontroller är en säkerhetsåtgärd och om du kringgår dem ökar risken för attacker. De bör inte kringgås utan noggrann hänsyn till säkerhetskonsekvenserna och alternativa mekanismer för att skydda mot de angreppsvektorer som CRL-kontroller minimerar.
Om du vill fortsätta med anslutningen när en CRL inte kan hämtas anger du egenskapen "OPENSSL_CONTINUE_ON_CRL_DOWNLOAD_FAILURE"
till "true"
. Ett försök görs fortfarande att hämta en CRL och fel genereras fortfarande i loggar, men anslutningsförsök tillåts fortsätta.
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")
Om du vill inaktivera kontroller för återkallade certifikat anger du egenskapen "OPENSSL_DISABLE_CRL_CHECK"
till "true"
. När du ansluter till Speech-tjänsten görs sedan inget försök att kontrollera eller ladda ned en CRL och ingen automatisk verifiering av ett rapporterat TLS/SSL-certifikat.
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-cachelagring och prestanda
Som standard cachelagrar Speech SDK en crl som har laddats ned på disken för att förbättra den inledande svarstiden för framtida anslutningar. När det inte finns någon cachelagrad CRL eller när den cachelagrade listan har upphört att gälla, laddas en ny lista ned.
Vissa Linux-distributioner har TMP
ingen definierad miljövariabel eller TMPDIR
en miljövariabel, så Speech SDK cachelagrar inte nedladdade CRL:er. Utan TMP
definierad miljövariabel laddar TMPDIR
Speech SDK ned en ny CRL för varje anslutning. För att förbättra den inledande anslutningsprestandan i den här situationen kan du skapa en TMPDIR
miljövariabel och ställa in den på den tillgängliga sökvägen för en tillfällig katalog..