Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:Linux üzerinde SQL Server
Linux üzerinde SQL Server, bir istemci uygulaması ile SQL Server örneği arasında bir ağ üzerinden iletilen verileri şifrelemek için Aktarım Katmanı Güvenliği'ni (TLS) kullanabilir.
İşletim sistemi desteği
SQL Server hem Windows hem de Linux'ta aynı TLS protokollerini destekler: 1.3, 1.2, 1.1 ve 1.0.
SQL Server 2025'te (17.x) başlayarak:
- TLS 1.3 varsayılan olarak etkindir
- SUSE Linux Enterprise Server (SLES) desteklenmiyor
TLS'yi yapılandırma adımları, SQL Server'ın çalıştığı işletim sistemine özgüdür.
Note
TLS, Always On kullanılabilirlik grubu veritabanı yansıtma uç noktaları için desteklenmez.
Sertifika gereksinimleri
Sertifikalarınızın şu gereksinimleri karşıladığından emin olun:
Geçerli sistem saati sertifikanın
Valid fromözelliğinden sonra ve sertifikanınValid toözelliğinden önce olmalıdır.Sertifika, sunucu kimlik doğrulaması için tasarlanmalıdır. Bu,
Enhanced Key Usagebelirtmek için sertifikanınServer Authentication (1.3.6.1.5.5.7.3.1)özelliğini gerektirir.Sertifika,
KeySpecAT_KEYEXCHANGEseçeneği kullanılarak oluşturulmalıdır. Genellikle, sertifikanın anahtar kullanım özelliği (KEY_USAGE) anahtar şifrelemesi (CERT_KEY_ENCIPHERMENT_KEY_USAGE) içerir.Sertifikanın
Subjectözelliği, ortak adın (CN) sunucu bilgisayarın ana bilgisayar adı veya tam etki alanı adı (FQDN) ile aynı olduğunu belirtmelidir.Note
Wildcard sertifikaları desteklenir.
OpenSSL kitaplıklarını kullanmak üzere yapılandırma (isteğe bağlı)
/opt/mssql/lib/ dizininde şifreleme için hangi libcrypto.so ve libssl.so kitaplıklarının kullanılması gerektiğine başvuran sembolik bağlantılar oluşturabilirsiniz. SQL Server'ı, sistem tarafından sağlanan varsayılandan farklı bir OpenSSL sürümünü kullanmaya zorlamak istiyorsanız bu yararlı olur. Bu sembolik bağlantılar yoksa, SQL Server sistemde varsayılan olarak yapılandırılmış OpenSSL kitaplıklarını yükler.
Bu sembolik bağlantılar libcrypto.so ve libssl.so olarak adlandırılmalı ve /opt/mssql/lib/ dizinine yerleştirilmelidir.
Note
Sertifika oluşturmak için Let's Encrypt kullanma örneği için, Azure'da verilerin gücünü Linux Azure VM'lerde SQL Server ve Azure AI arama ile açığa çıkarma hakkında bilgiler için blog gönderisine bakın .
Overview
TLS, bir istemci uygulamasından SQL Server'a bağlantıları şifrelemek için kullanılır. Doğru yapılandırıldığında TLS, istemci ile sunucu arasındaki iletişimler için hem gizlilik hem de veri bütünlüğü sağlar. TLS bağlantıları istemci veya sunucu tarafından başlatılabilir.
Note
TLS, Always On kullanılabilirlik grubu veritabanı yansıtma uç noktaları için desteklenmez.
Aşağıdaki bölümde istemci tarafından başlatılan şifrelemenin ayarlanması açıklanmaktadır.
Sertifika oluşturma
/CN SQL Server konağınızın tam etki alanı adıyla eşleşmelidir.
Caution
Bu örnekte otomatik olarak imzalanan bir sertifika kullanılır. Üretim senaryolarında otomatik olarak imzalanan sertifikalar kullanılmamalıdır. CA sertifikalarını kullanmanız gerekir.
Sertifikalarınızı ve özel anahtarlarınızı kaydettiğiniz klasörlerin kullanıcı veya grup tarafından mssql erişilebilir olduğundan ve izinlerin (700drwx------) olarak ayarlandığından emin olun. İzinleri 700 (drwx------) olarak ayarlanmış ve mssql kullanıcısına veya grubuna ait klasörleri manuel olarak oluşturabilirsiniz. Alternatif olarak, izinleri 755 (drwxr-xr-x) olarak ayarlayın ve klasörlerin grup tarafından erişilebilir mssql olduğundan emin olun. Örneğin, aşağıdaki örnekte gösterildiği gibi, sslcert yolu altında /var/opt/mssql/ adlı bir klasör oluşturabilir ve sertifikayı ve özel anahtarı dosya izinlerini 600 olarak ayarlayarak kaydedebilirsiniz.
openssl req -x509 -nodes -newkey rsa:2048 -subj '/CN=mssql.contoso.com' -keyout mssql.key -out mssql.pem -days 365
sudo chown mssql:mssql mssql.pem mssql.key
sudo chmod 600 mssql.pem mssql.key
# Save the certificate to the certs folder under /etc/ssl/
sudo mv mssql.pem /etc/ssl/certs/
# Save the private key to the private folder under /etc/ssl/
sudo mv mssql.key /etc/ssl/private/
SQL Server'ı yapılandırma
SQL Server 2022 (16.x) ve önceki sürümler için:
systemctl stop mssql-server
sudo cat /var/opt/mssql/mssql.conf
sudo /opt/mssql/bin/mssql-conf set network.tlscert /etc/ssl/certs/mssql.pem
sudo /opt/mssql/bin/mssql-conf set network.tlskey /etc/ssl/private/mssql.key
sudo /opt/mssql/bin/mssql-conf set network.tlsprotocols 1.2
sudo /opt/mssql/bin/mssql-conf set network.forceencryption 0
systemctl restart mssql-server
SQL Server 2025 (17.x) için:
systemctl stop mssql-server
sudo cat /var/opt/mssql/mssql.conf
sudo /opt/mssql/bin/mssql-conf set network.tlscert /etc/ssl/certs/mssql.pem
sudo /opt/mssql/bin/mssql-conf set network.tlskey /etc/ssl/private/mssql.key
sudo /opt/mssql/bin/mssql-conf set network.forceencryption 0
systemctl restart mssql-server
Sertifikayı istemci makinenize (Windows, Linux veya macOS) kaydetme
CA imzalı bir sertifika kullanıyorsanız, kullanıcı sertifikası yerine Sertifika Otoritesi (CA) sertifikasını istemci makineye kopyalayın.
Kendi imzalı sertifikayı kullanıyorsanız, dosyayı
.pemdağıtımınız için klasöre kopyalayın ve etkinleştirmek için komutu çalıştırın:Ubuntu: Sertifikayı ,
/usr/share/ca-certificates/adresine kopyalayın, uzantısını ,.crtolarak yeniden adlandırın ve sistem CA sertifikası olarak etkinleştirmek için kullanındpkg-reconfigure ca-certificates.RHEL: Sertifikayı kopyalayıp
/etc/pki/ca-trust/source/anchors/sistem CA sertifikası olarak etkinleştirmek için kullanınupdate-ca-trust.SUSE: Sertifikayı kopyalayın
/usr/share/pki/trust/anchors/ve sistem CA sertifikası olarak etkinleştirinupdate-ca-certificates.Windows: Dosyayı
.pemMevcut Kullanıcı>Güvenilir Kök Sertifikasyon Otoriteleri>Sertifikaları altında sertifika olarak içe aktarın.macOS:
Sertifikayı
/usr/local/etc/openssl/certskonumuna kopyalayın.Karma değerini almak için aşağıdaki komutu çalıştırın:
/usr/local/Cellar/openssl/1.0.2l/openssl x509 -hash -in mssql.pem -nooutSertifikayı değer olarak yeniden adlandırın. Örneğin, kullanın
mv mssql.pem dc2dd900.0./usr/local/etc/openssl/certsöğesinindc2dd900.0içinde olduğundan emin olun.
Örnek bağlantı dizeleri
Caution
Parolanız varsayılan SQL Server password ilkesini izlemelidir. Varsayılan olarak, parola en az sekiz karakter uzunluğunda olmalı ve şu dört kümeden üçünün karakterlerini içermelidir: büyük harfler, küçük harfler, 10 tabanındaki basamaklar ve simgeler. Parolalar en çok 128 karakter uzunluğunda olabilir. Mümkün olduğunca uzun ve karmaşık parolalar kullanın.
SQL Server Management Studio
sqlcmdsqlcmd -S <sqlhostname> -N -U sa -P '<password>'ADO.NET
"Encrypt=True; TrustServerCertificate=False;"ODBC
"Encrypt=Yes; TrustServerCertificate=no;"JDBC
"encrypt=true; trustServerCertificate=false;"
Yaygın bağlantı hataları
| Hata iletisi | Düzelt |
|---|---|
The certificate chain was issued by an authority that is not trusted. |
bu hata, istemciler TLS el sıkışması sırasında SQL Server tarafından sunulan sertifikadaki imzayı doğrulayamadıklarında oluşur. İstemcinin doğrudan SQL Server sertifikasına veya SQL Server sertifikasını imzalayan CA'ya güvendiğinden emin olun. |
The target principal name is incorrect. |
SQL Server'ın sertifikasındaki ortak isim alanının, istemcinin bağlantı dizesi'inde belirtilen sunucu adıyla eşleştiğinden emin olun. |
An existing connection was forcibly closed by the remote host. |
İstemci SQL Server için gereken TLS protokolü sürümünü desteklemediğinde bu hata oluşabilir. Örneğin, SQL Server TLS 1.2 gerektirecek şekilde yapılandırılmışsa, istemcilerinizin TLS 1.2 protokollerini de desteklediğinden emin olun. |
Ubuntu 20.04 ve diğer son Linux dağıtım sürümleri
Belirti
Linux örneğindeki bir SQL Server, 112 bitten az güvenlik (örnek: MD5, SHA-1) kullanılarak imza algoritmasıyla oluşturulmuş bir sertifikayı yüklediğinde, aşağıdaki örnekte olduğu gibi bir bağlantı hatasıyla karşılayabilirsiniz:
A connection was successfully established with the server, but then an error occurred during the login process. (provider: SSL Provider, error: 0 - An existing connection was forcibly closed by the remote host.) (Microsoft SQL Server, Error: 10054)
Hatanın nedeni, Ubuntu 20.04 ve sonraki sürümlerde OpenSSL güvenlik düzeyi 2'nin varsayılan olarak etkinleştirilmesidir. Güvenlik düzeyi 2, 112 bitten az güvenlik düzeyine sahip TLS bağlantılarının kurulmasını engeller.
Çözüm
En az 112 bit güvenlik kullanarak imza algoritmasına sahip bir sertifika yükleyin. Bu gereksinimi karşılayan imza algoritmaları SHA-224, SHA-256, SHA-384 ve SHA-512'yi içerir.