Fix SQL Server SSL Provider [SSL routines::unsupported protocol]
Intro
Artikel ini membahas penyelesaian masalah koneksi database Microsoft SQL Server yang menghasilkan error:
SSL Provider: [SSL routines::unsupported protocol]
Error ini umumnya terjadi karena perbedaan versi protokol SSL/TLS antara client dan server, atau karena konfigurasi security level yang terlalu ketat pada sistem operasi yang lebih baru.
Masalah
Ketika mencoba melakukan koneksi ke database Microsoft SQL Server, Anda akan mendapatkan error yang mirip seperti ini:

Error ini dapat muncul pada berbagai aplikasi yang menggunakan koneksi database, seperti:
- Aplikasi Laravel/PHP
- Tools database management
- Script custom yang menggunakan ODBC/FreeTDS
Akar Masalah
Error SSL routines::unsupported protocol disebabkan oleh:
- Security Level yang Terlalu Tinggi: Versi Ubuntu yang lebih baru memiliki default security level yang lebih ketat
- Kompatibilitas Protocol: Microsoft SQL Server versi lama menggunakan protokol SSL/TLS yang sudah deprecated
- Konfigurasi OpenSSL: Pengaturan cipher string yang tidak kompatible
Ubuntu 22.04
Environment
Alat dan bahan yang digunakan:
- OS: Ubuntu 22.04
- PHP: 8.3
- Database: Microsoft SQL Server 2014 - 12.0.2000.8 (X64)
- Framework: Laravel 12
Langkah Langkah
-
Buka file konfigurasi OpenSSL:
sudo nano /etc/ssl/openssl.cnf -
Cari bagian CipherString:

-
Ubah nilai CipherString: Ganti dari:
CipherString = DEFAULT@SECLEVEL=2Menjadi:
CipherString = DEFAULT@SECLEVEL=0 -
Simpan dan restart service:
sudo systemctl restart apache2 # atau sudo systemctl restart nginx
Mengapa Ini Bekerja
Mengubah SECLEVEL=2 ke SECLEVEL=0 akan:
- Menurunkan tingkat keamanan OpenSSL dari level 2 ke level 0
- Mengizinkan penggunaan algoritma enkripsi yang lebih lama
- Memungkinkan koneksi ke server SSL yang menggunakan protokol deprecated
⚠️ Catatan Keamanan: Solusi ini menurunkan level keamanan SSL. Pastikan jaringan Anda aman dan pertimbangkan untuk upgrade SQL Server jika memungkinkan.
Ubuntu 24.04
Environment
Alat dan bahan yang digunakan:
- OS: Ubuntu 24.04
- PHP: 8.3
- Database: Microsoft SQL Server 2014 - 12.0.2000.8 (X64)
Langkah Langkah
-
Buka file konfigurasi OpenSSL:
sudo nano /etc/ssl/openssl.cnf -
Scroll ke bagian paling bawah file:

-
Tambahkan konfigurasi berikut di bagian paling bawah:
[ssl_sect] system_default = system_default_sect [system_default_sect] CipherString = DEFAULT:@SECLEVEL=0 -
Konfigurasi akhir akan terlihat seperti ini:

-
Simpan file dan restart service:
sudo systemctl restart apache2 # atau sudo systemctl restart nginx
Mengapa Ini Bekerja
Pada Ubuntu 24.04, konfigurasi OpenSSL menggunakan section-based configuration yang lebih terstruktur. Dengan menambahkan section [ssl_sect] dan [system_default_sect], kita:
- Membuat konfigurasi SSL yang spesifik untuk sistem
- Mengatur CipherString dengan SECLEVEL=0 secara terpisah
- Mempertahankan kompatibilitas dengan konfigurasi OpenSSL yang lebih baru
Verifikasi
Setelah menerapkan salah satu solusi di atas, Anda dapat memverifikasi koneksi dengan cara:
Testing Sederhana
<?php
try {
$serverName = "your-server-ip";
$connectionOptions = [
"Database" => "your_database",
"Uid" => "your_username",
"PWD" => "your_password",
"Encrypt" => true,
"TrustServerCertificate" => true
];
$conn = sqlsrv_connect($serverName, $connectionOptions);
if ($conn) {
echo "Connection successful!";
} else {
print_r(sqlsrv_errors());
}
} catch (Exception $e) {
echo "Error: " . $e->getMessage();
}
?>
Troubleshooting Tambahan
Jika Masih Bermasalah
-
Restart sistem setelah mengubah konfigurasi OpenSSL
-
Periksa log error:
tail -f /var/log/apache2/error.log # atau tail -f /var/log/nginx/error.log -
Verifikasi konfigurasi OpenSSL:
openssl version -a -
Test koneksi dengan telnet:
telnet your-server-ip 1433
Other Possible Errors
- Certificate verification failed: Tambahkan
TrustServerCertificate=truepada connection string - Login timeout expired: Periksa firewall dan network connectivity
- Protocol version not supported: Pastikan SQL Server support TLS 1.0+
Konklusi
Error SSL Provider SSL routines::unsupported protocol dapat diatasi dengan menurunkan security level OpenSSL. Meski solusi ini efektif, penting untuk mempertimbangkan implikasi keamanan dan jika memungkinkan, lakukan upgrade pada SQL Server untuk mendukung protokol SSL/TLS yang lebih modern.
Ringkasan Solusi:
- Ubuntu 22.04: Ubah
CipherString = DEFAULT@SECLEVEL=2menjadiCipherString = DEFAULT@SECLEVEL=0 - Ubuntu 24.04: Tambahkan section SSL configuration baru dengan
CipherString = DEFAULT:@SECLEVEL=0
Kedua solusi telah ditest dan berfungsi dengan baik pada environment yang disebutkan di atas.
Catatan
Artikel ini berdasarkan pengalaman troubleshooting pada environment production. Selalu lakukan backup konfigurasi sebelum melakukan perubahan.