SQL Server SHA1 TO SHA256 change
SQL Server SHA1 TO SHA256 change ,SQL server 2012,SQL server 2014 ,SQL SERVER 2016 versiyonlarından öncesinde SQL Server bağlanırken sha1 algoritmasını kullanarak bağlanmaktadır ve bu güvenlik açığı olarak karşımıza gelmektedir.
The remote service uses an SSL certificate chain that has been signed using a cryptographically weak hashing algorithm (e.g. MD2, MD4, MD5, or SHA1). These signature algorithms are known to be vulnerable to collision attacks. An attacker can exploit this to generate another certificate with the same digital signature, allowing an attacker to masquerade as the affected service. Note that this plugin reports all SSL certificate chains signed with SHA-1 that expire after January 1, 2017 as vulnerable. This is in accordance with Google’s gradual sunsetting of the SHA-1 cryptographic hash algorithm. Note that certificates in the chain that are contained in the Nessus CA database (known_CA.inc) have been ignored.
Bu açığı gidermek için iki yöntem bulunmaktadır.
İlk yöntem SQL serverınızı 2017,2019 ,… versiyonlarınlarına çıkarak güvenlik zafiyetini gidererek SHA1 ile bağlantıyı SHA256 olarak değiştirebilirsiniz.
Diğer yöntem ise bu yazımızda anlatacağım sertifika oluşturarak sertifikiyı sql server’a tanıtma yöntemi
iİlk olarak powershell’i açarak başlıyoruz.
powershell komutu kullanarak SSL sertifikası oluşturabilirsiniz.
$computerName = $env:COMPUTERNAME.ToLower()
$domain = ([System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()).Name
$dn = "CN=$computerName.$domain"
New-SelfSignedCertificate -Subject $dn `
-DnsName "$computerName.$domain", 'localhost' `
-KeyAlgorithm "RSA" -KeyLength 2048 -HashAlgorithm "SHA256" `
-NotAfter (Get-Date).AddMonths(60) -KeySpec KeyExchange `
-Provider "Microsoft RSA SChannel Cryptographic Provider" `
-CertStoreLocation "cert:\LocalMachine\My" -FriendlyName SSLSQLCON
Yukarıdaki kodu çalıştırdık ve aşağıdaki gibi sertifikanın oluştuğunu görüyoruz.
Windows arama kısmına Manage Computer Certificates yazabilir ya da çalıştıra certlm.msc yazarak aşağıdaki ekranı açabilirsiniz.
Aşağıda sertifikanın oluştuğunu görmekteyiz.
Yukarıda kırmızı ile işaretli olan alan expire olma süresidir. Bu süreyi aşağıdaki parametre sayesinde değiştirebilirsiniz.
-NotAfter (Get-Date).AddMonths(60) -KeySpec KeyExchange `
Sertifika üzerinde sağ click All TASKS \Manage Private Keys sekmesine gelerek SQL servis hesabına yetki tanımlıyoruz.
Yetki tanımlandıktan sonra aşağıdaki yerden export’unu alıyoruz.
Next diyerek devam ediyoruz.
“Yes, Export the private key” tabına tıklayarak devam ediyoruz.
Aşağıda export paralasonı veriyoruz.
SQl Sertifikasının exportunu alacağımız yeri seçiyoruz.
Sonraki ekran finish diyerek devam ediyoruz.
Trusted Root Certification altındaki Certificates üzerinde sağ clisk yaparak “All Tasks\Import” a tıklıyoruz.
Next diyerek devam ediyoruz.
Exportu aldığımız yerdeki sertifikayı seçerek devam ediyoruz.
Exporttaki password alanına yazdığım şifreyi girerek devam ediyoruz.
Next diyerek devam ediyoruz.
Sonraki gelen ekranda finish diyerek import işlemini bitirmiş oluyoruz.
SQL Server2016 Configuration Manager ‘ı seçerek devam ediyoruz
Değişiklik yapılacak SQL server servisinin üzerinde Properties ‘i seçiyoruz.
Force Encryption =”yes” olarak seçilerek diğer adıma geçiyoruz.
Certificate kısmında -FriendlyName SSLSQLCON ismini seçerek devam ediyoruz isterseniz farklı bir isimde belirtebilirisiniz.
SQL Servisini restart ederek sha1 olarak bağlanan sql servisini sha256 ile bağlanacak şekilde ayarlamış olduk.
Yukarıdaki adımları tamamladıktan sonra SQL Server zaafiyetiniz giderilmiş oluyor. Sertifikayı siz oluşturmak istemiyorsanız kurumunuzda sertifika üreten birimden yardım alabilirisiniz.
The remote service uses an SSL certificate chain that has been signed using a cryptographically weak hashing algorithm (e.g. MD2, MD4, MD5, or SHA1). These signature algorithms are known to be vulnerable to collision attacks. An attacker can exploit this to generate another certificate with the same digital signature, allowing an attacker to masquerade as the affected service. Note that this plugin reports all SSL certificate chains signed with SHA-1 that expire after January 1, 2017 as vulnerable. This is in accordance with Google’s gradual sunsetting of the SHA-1 cryptographic hash algorithm. Note that certificates in the chain that are contained in the Nessus CA database (known_CA.inc) have been ignored.