Aracılığıyla paylaş


Linux için OpenSSL’yi yapılandırma

Konuşma SDK'sı ile OpenSSL, konak sistemi sürümüne dinamik olarak yapılandırılır.

Not

Bu makale yalnızca Konuşma SDK'sının Linux'ta desteklendiği durumlarda geçerlidir.

Bağlantıyı sağlamak için Sisteminizde OpenSSL sertifikalarının yüklü olduğunu doğrulayın. Bir komut çalıştırın:

openssl version -d

Ubuntu/Debian tabanlı sistemlerde çıkış şu şekilde olmalıdır:

OPENSSLDIR: "/usr/lib/ssl"

OPENSSLDIR altında bir certs alt dizin olup olmadığını denetleyin. Önceki örnekte /usr/lib/ssl/certsolacaktır.

  • /usr/lib/ssl/certs varsa ve çok sayıda tek tek sertifika dosyası içeriyorsa (veya uzantıyla .crt .pem), başka eylemlere gerek yoktur.

  • OPENSSLDIR, birden çok ayrı dosya yerine tek bir sertifika paketi dosyası veya dışında /usr/lib/ssl bir dosyaysa, sertifikaların nerede bulunabileceğini belirtmek için uygun bir SSL ortam değişkeni ayarlamanız gerekir.

Örnekler

Aşağıda OpenSSL dizini başına yapılandırılan bazı örnek ortam değişkenleri verilmiştir.

  • OPENSSLDIR şudur: /opt/ssl. Çok sayıda .crt veya .pem dosya içeren bir certs alt dizin vardır. Konuşma SDK'sını kullanmadan önce ortam değişkenini SSL_CERT_DIR işaret /opt/ssl/certs etmek için ayarlayın. Örneğin:
export SSL_CERT_DIR=/opt/ssl/certs
  • OPENSSLDIR ( /etc/pki/tls RHEL tabanlı sistemlerde olduğu gibi). Sertifika paket dosyası içeren bir certs alt dizin vardır, örneğin ca-bundle.crt. Konuşma SDK'sını kullanmadan önce ortam değişkenini SSL_CERT_FILE bu dosyayı işaret etmek için ayarlayın. Örneğin:
export SSL_CERT_FILE=/etc/pki/tls/certs/ca-bundle.crt

Sertifika iptal denetimleri

Konuşma SDK'sı Konuşma hizmetine bağlandığında Aktarım Katmanı Güvenliği (TLS/SSL) sertifikasını denetler. Konuşma SDK'sı, uzak uç nokta tarafından bildirilen sertifikaya güvenildiğini ve iptal edilmemiş olduğunu doğrular. Bu doğrulama, kimlik sahtekarlığına ve diğer ilgili vektörlere karşı bir koruma katmanı sağlar. Denetim, Azure tarafından kullanılan bir sertifika yetkilisinden (CA) sertifika iptal listesi (CRL) alınarak gerçekleştirilir. Güncelleştirilmiş TLS CRL'leri için Azure CA indirme konumlarının listesi bu belgede bulunabilir.

Konuşma hizmeti gibi davranan bir hedef alınan CRL'de iptal edilmiş bir sertifika bildirirse SDK bağlantıyı sonlandırır ve bir Canceled olay aracılığıyla bir hata bildirir. Bildirilen bir sertifikanın orijinalliği güncelleştirilmiş CRL olmadan denetlenemez. Bu nedenle Konuşma SDK'sı, Azure CA konumundan CRL indirilememesini de hata olarak ele alır.

Uyarı

Çözümünüz ara sunucu veya güvenlik duvarı kullanıyorsa, Azure tarafından kullanılan tüm sertifika iptal listesi URL'lerine erişime izin verecek şekilde yapılandırılmalıdır. Bu URL'lerin çoğunun etki alanı dışında microsoft.com olduğunu, dolayısıyla erişime *.microsoft.com izin vermenin yeterli olmadığını unutmayın. Ayrıntılar için bu belgeye bakın. Olağanüstü durumlarda CRL hatalarını yoksayabilirsiniz (muhabir bölümüne bakın), ancak özellikle üretim senaryoları için bu tür bir yapılandırma kesinlikle önerilmez.

Büyük CRL dosyaları (>10 MB)

CRL ile ilgili hataların bir nedeni büyük CRL dosyalarının kullanılmasıdır. Bu hata sınıfı genellikle yalnızca genişletilmiş CA zincirlerine sahip özel ortamlar için geçerlidir. Standart genel uç noktalar bu sorun sınıfıyla karşılaşmamalıdır.

Konuşma SDK'sı (10 MB) tarafından kullanılan varsayılan en büyük CRL boyutu yapılandırma nesnesi başına ayarlanabilir. Bu ayarlamanın özellik anahtarıdır CONFIG_MAX_CRL_SIZE_KB ve dize olarak belirtilen değer varsayılan olarak "10000" (10 MB) olur. Örneğin, bir SpeechRecognizer nesne oluştururken (Konuşma hizmeti bağlantısını yöneten), bu özelliği içinde SpeechConfigayarlayabilirsiniz. Aşağıdaki kod parçacığında yapılandırma, 15 MB'a kadar CRL dosya boyutuna izin vermek için ayarlanır.

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 hatalarını atlama veya yoksayma

Bir ortam Azure CA konumuna erişecek şekilde yapılandırılamıyorsa Konuşma SDK'sı güncelleştirilmiş bir CRL'yi alamaz. SDK'yi devam edip indirme hatalarını günlüğe kaydedecek veya tüm CRL denetimlerini atlayacak şekilde yapılandırabilirsiniz.

Uyarı

CRL denetimleri bir güvenlik önlemidir ve bunların atlanması saldırılara karşı duyarlılığı artırır. CrL denetimlerinin azaltdığı saldırı vektörlerine karşı koruma için güvenlik etkileri ve alternatif mekanizmalar dikkate alınmadan atlanmamalıdır.

CRL alınamayınca bağlantıya devam etmek için özelliğini "OPENSSL_CONTINUE_ON_CRL_DOWNLOAD_FAILURE" olarak "true"ayarlayın. CRL almaya yönelik bir girişimde bulunulmaya devam edilir ve hatalar günlüklerde yine de gösterilir, ancak bağlantı girişimlerinin devam etmesi için izin verilir.

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

Sertifika iptal denetimlerini kapatmak için özelliğini "OPENSSL_DISABLE_CRL_CHECK" olarak "true"ayarlayın. Ardından Konuşma hizmetine bağlanırken CRL'yi denetleme veya indirme girişimi olmaz ve bildirilen TLS/SSL sertifikasının otomatik doğrulaması olmaz.

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 önbelleğe alma ve performans

Konuşma SDK'sı, gelecekteki bağlantıların ilk gecikme süresini iyileştirmek için varsayılan olarak diskte başarıyla indirilen bir CRL'yi önbelleğe alır. Önbelleğe alınmış CRL olmadığında veya önbelleğe alınan CRL'nin süresi dolduğunda yeni bir liste indirilir.

Bazı Linux dağıtımlarında tanımlanmış bir TMP veya TMPDIR ortam değişkeni olmadığından Konuşma SDK'sı indirilen CRL'leri önbelleğe almaz. Konuşma SDK'sı tanımlanmamış veya TMPDIR ortam değişkeni tanımlanmadan TMP her bağlantı için yeni bir CRL indirir. Bu durumda ilk bağlantı performansını geliştirmek için bir TMPDIR ortam değişkeni oluşturabilir ve bunu geçici bir dizinin erişilebilir yoluna ayarlayabilirsiniz..