Dela via


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 en certs underkatalog med många .crt eller .pem filer. Ange miljövariabeln SSL_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 en certs underkatalog med en certifikatpaketfil, till exempel ca-bundle.crt. Ange miljövariabeln SSL_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..