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. SQL Server hem Windows hem de Linux'ta aynı TLS protokollerini destekler: 1.2, 1.1 ve 1.0.
Not
SQL Server 2025'te (17.x) başlayarak TLS 1.3 varsayılan olarak etkindir.
TLS'yi yapılandırma adımları, SQL Server'ın çalıştığı işletim sistemine özgüdür.
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.Not
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.
Not
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 .
Genel bakış
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.
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.
Dikkat
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 mssql kullanıcı/grup tarafından erişilebilir olduğundan ve izninin 700 (drwx-----) olarak ayarlandığından emin olun.
700 (drwx------) olarak ayarlanmış ve mssql kullanıcı/gruba ait izinlerle el ile klasörler oluşturabilir veya izni, diğer kullanıcıya ait olan ancak 755 kullanıcı grubu tarafından erişilebilen drwxr-xr-x (mssql) olarak ayarlayabilirsiniz. Örneğin, sslcertyolunun altında /var/opt/mssql/ adlı bir klasör oluşturabilir ve aşağıdaki örnekte gösterildiği gibi 600olarak ayarlanmış dosyalarda izinleri olan sertifikayı ve özel anahtarı 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
#Saving the certificate to the certs folder under /etc/ssl/ which has the following permission 755(drwxr-xr-x)
sudo mv mssql.pem /etc/ssl/certs/ drwxr-xr-x
#Saving the private key to the private folder under /etc/ssl/ with permissions set to 755(drwxr-xr-x)
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ı sertifika kullanıyorsanız, kullanıcı sertifikası yerine Sertifika Yetkilisi (CA) sertifikasını istemci makinesine kopyalamanız gerekir.
Otomatik olarak imzalanan sertifikayı kullanıyorsanız,
.pemdosyasını dağıtımla ilgili olarak aşağıdaki klasörlere kopyalayın ve bunları etkinleştirmek için komutları yürütin:Ubuntu : Sertifikayı
/usr/share/ca-certificates/kopyalayın, uzantısını.crtolarak yeniden adlandırın vedpkg-reconfigure ca-certificateskullanarak sistem CA sertifikası olarak etkinleştirin.RHEL : Sertifikayı
/etc/pki/ca-trust/source/anchors/kopyalayın ve sistem CA sertifikası olarak etkinleştirmek içinupdate-ca-trustkullanın.SUSE : Sertifikayı
/usr/share/pki/trust/anchors/kopyalayın ve sistem CA sertifikası olarak etkinleştirmek içinupdate-ca-certificateskullanın.Windows:
.pemdosyasını Geçerli Kullanıcı > Güvenilen Kök Sertifika Yetkilileri > Sertifikalaraltında sertifika olarak içeri aktarın.macOS :
Sertifikayı
/usr/local/etc/openssl/certs'a kopyalaKarma 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:
mv mssql.pem dc2dd900.0. Emin olun kidc2dd900.0/usr/local/etc/openssl/certs'de.
Örnek bağlantı dizeleri
Dikkat
Parolanız, SQL Server varsayılanparola ilkesine uygun olmalıdır. 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
sqlcmd
sqlcmd -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 mesajı | Düzeltmek |
|---|---|
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 Ad alanının istemcinin bağlantı dizesinde 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:
Sunucuyla başarıyla bağlantı kuruldu, ancak oturum açma işlemi sırasında bir hata oluştu. (sağlayıcı: SSL Sağlayıcısı, hata: 0 - Var olan bir bağlantı uzak konak tarafından zorla kapatıldı.) (Microsoft SQL Server, Hata: 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.