Konfigurowanie biblioteki OpenSSL dla systemu Linux

Uwaga

W tym artykule odwołuje się do systemu CentOS — dystrybucji systemu Linux, która zbliża się do stanu zakończenia życia (EOL). Rozważ odpowiednie użycie i planowanie. Aby uzyskać więcej informacji, zobacz wskazówki dotyczące zakończenia życia systemu CentOS.

Za pomocą zestawu SPEECH SDK biblioteka OpenSSL jest dynamicznie konfigurowana do wersji systemu hosta.

Uwaga

Ten artykuł ma zastosowanie tylko wtedy, gdy zestaw SPEECH SDK jest obsługiwany w systemie Linux.

Aby zapewnić łączność, sprawdź, czy certyfikaty OpenSSL zostały zainstalowane w systemie. Uruchom polecenie:

openssl version -d

Dane wyjściowe w systemach opartych na systemie Ubuntu/Debian powinny być następujące:

OPENSSLDIR: "/usr/lib/ssl"

Sprawdź, czy w obszarze OPENSSLDIR znajduje certs się podkatalog. W powyższym przykładzie będzie to /usr/lib/ssl/certs.

  • Jeśli obiekt /usr/lib/ssl/certs istnieje i zawiera wiele pojedynczych plików certyfikatów (z rozszerzeniem lub .pem z .crt nim), nie ma potrzeby dalszych akcji.

  • Jeśli funkcja OPENSSLDIR jest czymś innym niż /usr/lib/ssl lub istnieje jeden plik pakietu certyfikatów zamiast wielu pojedynczych plików, należy ustawić odpowiednią zmienną środowiskową SSL, aby wskazać, gdzie można znaleźć certyfikaty.

Przykłady

Oto kilka przykładowych zmiennych środowiskowych do skonfigurowania dla katalogu OpenSSL.

  • OPENSSLDIR to /opt/ssl. certs Istnieje podkatalog z wieloma .crt plikami lub.pem. Ustaw zmienną środowiskową SSL_CERT_DIR , aby wskazywała wartość /opt/ssl/certs na przed użyciem zestawu SPEECH SDK. Na przykład:
export SSL_CERT_DIR=/opt/ssl/certs
  • OPENSSLDIR to /etc/pki/tls (podobnie jak w systemach opartych na systemie RHEL/CentOS). certs Istnieje podkatalog z plikiem pakietu certyfikatów, na przykład ca-bundle.crt. Ustaw zmienną środowiskową SSL_CERT_FILE , aby wskazywała ten plik przed użyciem zestawu SPEECH SDK. Na przykład:
export SSL_CERT_FILE=/etc/pki/tls/certs/ca-bundle.crt

Sprawdzanie odwołania certyfikatów

Gdy zestaw SPEECH SDK łączy się z usługą Rozpoznawanie mowy, sprawdza certyfikat Transport Layer Security (TLS/SSL). Zestaw SPEECH SDK sprawdza, czy certyfikat zgłoszony przez zdalny punkt końcowy jest zaufany i nie został odwołany. Ta weryfikacja zapewnia warstwę ochrony przed atakami obejmującymi fałszowanie i inne powiązane wektory. Sprawdzanie jest wykonywane przez pobranie listy odwołania certyfikatów (CRL) z urzędu certyfikacji używanego przez platformę Azure. Listę lokalizacji pobierania urzędu certyfikacji platformy Azure dla zaktualizowanych list CRL protokołu TLS można znaleźć w tym dokumencie.

Jeśli miejsce docelowe pozujące jako usługa rozpoznawania mowy zgłasza certyfikat, który został odwołany w pobranej liście CRL, zestaw SDK przerywa połączenie i zgłasza błąd za pośrednictwem Canceled zdarzenia. Nie można sprawdzić autentyczności zgłoszonego certyfikatu bez zaktualizowanej listy CRL. W związku z tym zestaw SDK usługi Mowa traktuje również błąd pobierania listy CRL z lokalizacji urzędu certyfikacji platformy Azure jako błąd.

Ostrzeżenie

Jeśli twoje rozwiązanie używa serwera proxy lub zapory, należy skonfigurować tak, aby zezwalać na dostęp do wszystkich adresów URL listy odwołania certyfikatów używanych przez platformę Azure. Należy pamiętać, że wiele z tych adresów URL znajduje się poza domeną microsoft.com , więc zezwolenie na dostęp nie *.microsoft.com jest wystarczające. Aby uzyskać szczegółowe informacje, zobacz ten dokument . W wyjątkowych przypadkach można zignorować błędy listy CRL (zobacz sekcję korespondenta), ale taka konfiguracja nie jest zdecydowanie zalecana, szczególnie w przypadku scenariuszy produkcyjnych.

Duże pliki listy CRL (>10 MB)

Jedną z przyczyn błędów związanych z listą CRL jest użycie dużych plików listy CRL. Ta klasa błędów ma zwykle zastosowanie tylko do specjalnych środowisk z rozszerzonymi łańcuchami urzędów certyfikacji. Standardowe publiczne punkty końcowe nie powinny napotkać tej klasy problemu.

Domyślny maksymalny rozmiar listy CRL używany przez zestaw SPEECH SDK (10 MB) można dostosować dla obiektu konfiguracji. Klucz właściwości dla tej korekty to CONFIG_MAX_CRL_SIZE_KB i wartość określona jako ciąg jest domyślnie "10000" (10 MB). Na przykład podczas tworzenia SpeechRecognizer obiektu (który zarządza połączeniem z usługą Rozpoznawanie mowy), można ustawić tę właściwość w jego SpeechConfigobiekcie . W poniższym fragmencie kodu konfiguracja jest dostosowywana w celu zezwolenia na rozmiar pliku listy CRL do 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")

Pomijanie lub ignorowanie błędów listy CRL

Jeśli nie można skonfigurować środowiska w celu uzyskania dostępu do lokalizacji urzędu certyfikacji platformy Azure, zestaw SPEECH SDK nie może pobrać zaktualizowanej listy CRL. Zestaw SDK można skonfigurować tak, aby kontynuować i rejestrować błędy pobierania lub pomijać wszystkie kontrole listy CRL.

Ostrzeżenie

Kontrole listy CRL to środek bezpieczeństwa i pomijanie ich zwiększa podatność na ataki. Nie należy ich pomijać bez dokładnego rozważenia implikacji zabezpieczeń i alternatywnych mechanizmów ochrony przed wektorami ataków, które sprawdza listy CRL.

Aby kontynuować połączenie, gdy nie można pobrać listy CRL, ustaw właściwość "OPENSSL_CONTINUE_ON_CRL_DOWNLOAD_FAILURE" na "true". Próba pobrania listy CRL jest nadal podejmowana, a błędy są nadal emitowane w dziennikach, ale próby połączenia mogą być kontynuowane.

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

Aby wyłączyć kontrole odwołania certyfikatów, ustaw właściwość "OPENSSL_DISABLE_CRL_CHECK" na "true". Następnie podczas nawiązywania połączenia z usługą rozpoznawania mowy nie będzie podejmowana próba sprawdzenia ani pobrania listy CRL i automatycznej weryfikacji zgłoszonego certyfikatu TLS/SSL.

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

Buforowanie i wydajność listy CRL

Domyślnie zestaw SDK usługi Mowa będzie buforować pomyślnie pobraną listę CRL na dysku, aby poprawić początkowe opóźnienie przyszłych połączeń. Jeśli nie ma buforowanej listy CRL lub gdy buforowana lista CRL wygasła, zostanie pobrana nowa lista.

Niektóre dystrybucje systemu Linux nie mają zdefiniowanej TMP zmiennej środowiskowej ani TMPDIR , więc zestaw SPEECH SDK nie buforuje pobranych list CRL. Bez TMP zdefiniowanej zmiennej środowiskowej zestaw TMPDIR SPEECH SDK pobiera nową listę CRL dla każdego połączenia. Aby poprawić wydajność początkowego połączenia w tej sytuacji, możesz utworzyć zmienną środowiskową TMPDIR i ustawić ją na dostępną ścieżkę katalogu tymczasowego.

Następne kroki