OpenSSL voor Linux configureren

Let op

In dit artikel wordt verwezen naar CentOS, een Linux-distributie die de status End Of Life (EOL) nadert. Overweeg uw gebruik en planning dienovereenkomstig. Zie de Richtlijnen voor het einde van de levensduur van CentOS voor meer informatie.

Met de Speech SDK is OpenSSL dynamisch geconfigureerd voor de hostsysteemversie.

Notitie

Dit artikel is alleen van toepassing als de Speech SDK wordt ondersteund in Linux.

Controleer of OpenSSL-certificaten op uw systeem zijn geïnstalleerd om de connectiviteit te garanderen. Voer een opdracht uit:

openssl version -d

De uitvoer van Ubuntu-/Debian-systemen moet zijn:

OPENSSLDIR: "/usr/lib/ssl"

Controleer of er een certs submap is onder OPENSSLDIR. In het bovenstaande voorbeeld zou dit zijn /usr/lib/ssl/certs.

  • Als het /usr/lib/ssl/certs bestaat en als deze veel afzonderlijke certificaatbestanden (met .crt of .pem extensie) bevat, hoeft u geen verdere acties uit te voeren.

  • Als OPENSSLDIR iets anders is dan /usr/lib/ssl of als er één certificaatbundelbestand is in plaats van meerdere afzonderlijke bestanden, moet u een geschikte SSL-omgevingsvariabele instellen om aan te geven waar de certificaten kunnen worden gevonden.

Voorbeelden

Hier volgen enkele voorbeeldomgevingsvariabelen die u per OpenSSL-directory wilt configureren.

  • OPENSSLDIR is /opt/ssl. Er is een certs submap met veel .crt of .pem bestanden. Stel de omgevingsvariabele SSL_CERT_DIR in op /opt/ssl/certs voordat u de Speech SDK gebruikt. Voorbeeld:
export SSL_CERT_DIR=/opt/ssl/certs
  • OPENSSLDIR is /etc/pki/tls (zoals op RHEL/CentOS gebaseerde systemen). Er is bijvoorbeeld een certs submap met een certificaatbundelbestand ca-bundle.crt. Stel de omgevingsvariabele SSL_CERT_FILE in om naar dat bestand te verwijzen voordat u de Speech SDK gebruikt. Voorbeeld:
export SSL_CERT_FILE=/etc/pki/tls/certs/ca-bundle.crt

Certificaatintrekkingscontroles

Wanneer de Speech SDK verbinding maakt met de Speech-service, wordt het TLS/SSL-certificaat (Transport Layer Security) gecontroleerd. De Speech SDK controleert of het certificaat dat door het externe eindpunt is gerapporteerd, wordt vertrouwd en is niet ingetrokken. Deze verificatie biedt een beveiligingslaag tegen aanvallen waarbij spoofing en andere gerelateerde vectoren betrokken zijn. De controle wordt uitgevoerd door een certificaatintrekkingslijst (CRL) op te halen van een certificeringsinstantie (CA) die wordt gebruikt door Azure. In dit document vindt u een lijst met Azure CA-downloadlocaties voor bijgewerkte TLS-CRL's.

Als een doel dat als de Speech-service opstelt, een certificaat rapporteert dat is ingetrokken in een opgehaalde CRL, beëindigt de SDK de verbinding en rapporteert deze een fout via een Canceled gebeurtenis. De echtheid van een gerapporteerd certificaat kan niet worden gecontroleerd zonder een bijgewerkte CRL. Daarom behandelt de Speech SDK ook een fout bij het downloaden van een CRL van een Azure CA-locatie als een fout.

Waarschuwing

Als uw oplossing gebruikmaakt van proxy of firewall, moet deze worden geconfigureerd om toegang te verlenen tot alle URL's van certificaatintrekkingslijsten die door Azure worden gebruikt. Houd er rekening mee dat veel van deze URL's zich buiten microsoft.com het domein bevinden, waardoor het niet voldoende is om toegang te *.microsoft.com verlenen. Zie dit document voor meer informatie. In uitzonderlijke gevallen kunt u CRL-fouten negeren (zie de sectie Correspondent), maar deze configuratie wordt sterk afgeraden, met name voor productiescenario's.

Grote CRL-bestanden (>10 MB)

Een oorzaak van CRL-gerelateerde fouten is het gebruik van grote CRL-bestanden. Deze foutklasse is doorgaans alleen van toepassing op speciale omgevingen met uitgebreide CA-ketens. Standaard openbare eindpunten mogen deze klasse van probleem niet tegenkomen.

De standaard maximale CRL-grootte die wordt gebruikt door de Speech SDK (10 MB) kan per configuratieobject worden aangepast. De eigenschapssleutel voor deze aanpassing is CONFIG_MAX_CRL_SIZE_KB en de waarde, opgegeven als tekenreeks, is standaard '10000' (10 MB). Wanneer u bijvoorbeeld een SpeechRecognizer object maakt (waarmee een verbinding met de Speech-service wordt beheerd), kunt u deze eigenschap instellen in de eigenschap SpeechConfig. In het onderstaande codefragment wordt de configuratie aangepast om een CRL-bestandsgrootte van maximaal 15 MB toe te laten.

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

CRL-fouten overslaan of negeren

Als een omgeving niet kan worden geconfigureerd voor toegang tot een Azure CA-locatie, kan de Speech SDK geen bijgewerkte CRL ophalen. U kunt de SDK configureren om door te gaan en downloadfouten te registreren of om alle CRL-controles te omzeilen.

Waarschuwing

CRL-controles zijn een beveiligingsmaatregel en het omzeilen ervan verhoogt de gevoeligheid voor aanvallen. Ze mogen niet worden overgeslagen zonder grondig rekening te houden met de gevolgen van de beveiliging en alternatieve mechanismen voor de bescherming tegen de aanvalsvectoren die door CRL worden gecontroleerd.

Als u wilt doorgaan met de verbinding wanneer een CRL niet kan worden opgehaald, stelt u de eigenschap "OPENSSL_CONTINUE_ON_CRL_DOWNLOAD_FAILURE" in op "true". Er wordt nog steeds geprobeerd om een CRL op te halen en fouten worden nog steeds verzonden in logboeken, maar verbindingspogingen mogen worden voortgezet.

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

Als u certificaatintrekkingscontroles wilt uitschakelen, stelt u de eigenschap "OPENSSL_DISABLE_CRL_CHECK" in op "true". Wanneer u vervolgens verbinding maakt met de Speech-service, wordt er geen poging gedaan om een CRL te controleren of te downloaden en geen automatische verificatie van een gerapporteerd TLS/SSL-certificaat.

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-caching en -prestaties

De Speech SDK slaat standaard een gedownloade CRL op de schijf in de cache op om de initiële latentie van toekomstige verbindingen te verbeteren. Wanneer er geen CRL in de cache aanwezig is of wanneer de CRL in de cache is verlopen, wordt er een nieuwe lijst gedownload.

Voor sommige Linux-distributies is TMP geen omgevingsvariabele TMPDIR gedefinieerd, dus de Speech SDK slaat gedownloade CRL's niet in de cache op. Zonder TMP of TMPDIR omgevingsvariabele gedefinieerd, downloadt de Speech SDK een nieuwe CRL voor elke verbinding. Als u de initiële verbindingsprestaties in deze situatie wilt verbeteren, kunt u een TMPDIR omgevingsvariabele maken en deze instellen op het toegankelijke pad van een tijdelijke map.

Volgende stappen