Bagikan melalui


Persyaratan sertifikat untuk SQL Server

Artikel ini menjelaskan persyaratan sertifikat untuk SQL Server dan cara memeriksa apakah sertifikat memenuhi persyaratan ini.

Persyaratan sertifikat untuk enkripsi SQL Server

Untuk menggunakan Keamanan Lapisan Transportasi (TLS) untuk enkripsi SQL Server, Anda perlu menyediakan sertifikat (salah satu dari tiga jenis digital) yang memenuhi kondisi berikut:

  • Sertifikat harus berada di penyimpanan sertifikat komputer lokal atau penyimpanan sertifikat akun layanan SQL Server. Gunakan penyimpanan sertifikat komputer lokal untuk menghindari konfigurasi ulang sertifikat saat akun startup SQL Server berubah.

  • Akun layanan SQL Server harus memiliki izin yang diperlukan untuk mengakses sertifikat TLS. Untuk informasi selengkapnya, lihat Mengenkripsi koneksi ke SQL Server dengan mengimpor sertifikat.

  • Waktu sistem saat ini harus setelah nilai properti Valid dari dan sebelum nilai properti Valid ke sertifikat. Untuk informasi selengkapnya, lihat Sertifikat Kedaluwarsa.

    Nota

    Sertifikat harus dimaksudkan untuk autentikasi server. Ini memerlukan properti Penggunaan Kunci yang Ditingkatkan dari sertifikat untuk menentukan Autentikasi Server (1.3.6.1.5.5.7.3.1).

  • Sertifikat harus dibuat menggunakan opsi KeySpec dari AT_KEYEXCHANGE. Ini memerlukan sertifikat yang menggunakan Penyedia Penyimpanan Kriptografi warisan untuk menyimpan kunci privat. Biasanya, properti penggunaan kunci sertifikat (KEY_USAGE) juga menyertakan tanda tangan digital dan pengacakan kunci (CERT_KEY_ENCIPHERMENT_KEY_USAGE).

  • Nama Alternatif Subject harus menyertakan semua nama yang mungkin digunakan klien Anda untuk terhubung ke instans SQL Server.

Klien harus dapat memverifikasi kepemilikan sertifikat yang digunakan oleh server. Jika klien memiliki sertifikat kunci publik dari otoritas sertifikasi yang menandatangani sertifikat server, tidak ada konfigurasi lebih lanjut yang diperlukan. Microsoft Windows menyertakan sertifikat kunci publik dari banyak otoritas sertifikasi. Jika sertifikat server ditandatangani oleh otoritas sertifikasi publik atau privat yang kliennya tidak memiliki sertifikat kunci publik, Anda harus menginstal sertifikat kunci publik otoritas sertifikasi yang menandatangani sertifikat server pada setiap klien yang akan terhubung ke SQL Server.

Penting

SQL Server tidak akan dimulai jika sertifikat ada di penyimpanan komputer, tetapi hanya memenuhi beberapa persyaratan dalam daftar di atas dan jika dikonfigurasi secara manual untuk digunakan oleh SQL Server Configuration Manager atau melalui entri registri. Pilih sertifikat lain yang memenuhi semua persyaratan atau hapus sertifikat agar tidak digunakan oleh SQL Server hingga Anda dapat menyediakan sertifikat yang memenuhi persyaratan atau menggunakan sertifikat yang dibuat sendiri seperti yang dibahas dalam SQL Server sertifikat yang ditandatangani sendiri.

Grup ketersediaan AlwaysOn

Jika instans SQL Server Anda adalah bagian dari grup ketersediaan Always On, Anda dapat menggunakan salah satu metode berikut untuk membuat sertifikat Anda:

  • Metode 1: Gunakan satu sertifikat pada semua replika grup ketersediaan. Nama umum bersifat sewenang-wenang sehingga bisa menjadi nilai pengganti apa pun. Nama host dan FQDN dari semua replika SQL Server dalam grup ketersediaan, serta nama pendengar grup ketersediaan SQL Server, harus dicantumkan dalam Subject Alternative Name sertifikat. Jika replika tambahan ditambahkan ke grup ketersediaan setelah sertifikat asli dibuat, maka sertifikat harus diregenerasi dengan nama semua replika dan dilaporkan kembali ke setiap replika. Sertifikat juga harus diimpor ke penyimpanan sertifikat pada semua klien yang terhubung ke replika grup ketersediaan atau listener (pendengar) grup ketersediaan, kecuali sertifikat tersebut ditandatangani oleh CA (Otoritas Sertifikat) publik atau resmi. Jika Anda tidak menyertakan replika grup ketersediaan dan nama listener dalam sertifikat, maka Anda perlu menyertakan salah satu nilai Nama Alternatif Subjek di HostNameInCertificate atau jalur ke sertifikat dalam nilai ServerCertificate connection string saat menyambungkan ke grup ketersediaan. Menentukan nama dalam sertifikat adalah pendekatan yang direkomendasikan.

    Berikut ini adalah contoh properti yang menentukan sertifikat yang dikonfigurasi dengan benar untuk grup ketersediaan dengan dua server bernama test1.<your company>.com dan test2.<your company>.com, dan listener grup ketersediaan bernama aglistener.<your company>.com:

    CN = <hostname is recommended but not required when certificates are configured using SQL Server Configuration Manager>
    DNS Name = aglistener.<your company>.com 
    DNS Name = test1.<your company>.com
    DNS Name = test2.<your company>.com
    DNS Name = aglistener
    DNS Name = test1
    DNS Name = test2
    
  • Metode 2: Gunakan sertifikat terpisah untuk setiap replika grup ketersediaan. Menambahkan replika ke grup ketersediaan setelah sertifikat dibuat lebih mudah saat menggunakan sertifikat terpisah karena Anda hanya perlu membuat sertifikat untuk replika baru, alih-alih memodifikasi semua sertifikat pada semua replika yang ada. Nama umum bersifat sembarang sehingga dapat berupa nilai pengganti apa pun. Nama host dan FQDN dari setiap instans SQL Server serta nama pendengar grup ketersediaan harus termasuk dalam Subject Alternative Name sertifikat untuk setiap replika. Impor setiap sertifikat ke replika masing-masing, dan, kecuali sertifikat ditandatangani oleh Otoritas Sertifikat (CA) publik atau resmi, lalu imporsemua sertifikat ke semua penyimpanan sertifikat pada semua klien yang terhubung ke replika, atau pendengar grup ketersediaan.

    Berikut ini adalah contoh properti yang menentukan sertifikat yang dikonfigurasi dengan benar untuk grup ketersediaan dengan dua instans bernama test1.<your company>.com dan test2.<your company>.com, dan pendengar grup ketersediaan bernama aglistener.<your company>.com:

    Sertifikat pada tes1:

    CN= <hostname is recommended but not required when certificates are configured using SQL Server Configuration Manager>
    DNS Name= test1.<your company>.com 
    DNS Name= aglistener.<your company>.com
    DNS Name= aglistener
    DNS Name= test1
    

    Sertifikat pada test2:

    CN= <hostname is recommended but not required when certificates are configured using SQL Server Configuration Manager>
    DNS Name= test2.<your company>.com 
    DNS Name= aglistener.<your company>.com 
    DNS Name= aglistener
    DNS Name= test2 
    

Instans kluster failover

Jika SQL Server dikonfigurasi sebagai instans kluster failover, Anda harus menginstal sertifikat server dengan nama host, atau nama DNS (FQDN) server virtual yang sepenuhnya memenuhi syarat pada semua simpul di kluster failover. dan sertifikat harus diinstal pada semua node kluster failover. Misalnya, jika Anda memiliki dua kluster node, dengan node bernama test1.<your company>.com dan test2.<your company>.com, dan Anda memiliki server virtual bernama virtsql, Anda perlu menginstal sertifikat untuk virtsql.<your company>.com pada kedua simpul.

Impor sertifikat ke kluster failover dalam urutan yang didokumentasikan dalam Konfigurasi SQL Server Database Engine untuk mengenkripsi koneksi.

Berikut ini adalah contoh properti yang menentukan sertifikat yang dikonfigurasi dengan benar untuk instans kluster failover:

CN = virtsql.<your company>.com
DNS Name = virtsql.<your company>.com
DNS Name = virtsql

Untuk informasi selengkapnya tentang kluster SQL, silakan lihat Sebelum Menginstal Failover Clustering.

Periksa apakah sertifikat memenuhi persyaratan

Pada SQL Server 2019 (15.x) dan versi yang lebih baru, SQL Server Configuration Manager secara otomatis memvalidasi semua persyaratan sertifikat selama fase konfigurasi itu sendiri. Jika SQL Server berhasil dimulai setelah Anda mengonfigurasi sertifikat, ini adalah indikasi yang baik bahwa SQL Server dapat menggunakan sertifikat tersebut. Tetapi beberapa aplikasi klien mungkin masih memiliki persyaratan lain untuk sertifikat yang dapat digunakan untuk enkripsi, dan Anda mungkin mengalami kesalahan yang berbeda tergantung pada aplikasi yang digunakan. Dalam skenario itu, Anda perlu memeriksa dokumentasi dukungan aplikasi klien untuk informasi lebih lanjut tentang subjek.

Memverifikasi KeySpec dan Penggunaan Kunci

Persyaratan KeySpec (AT_KEYEXCHANGE) adalah penyebab umum kegagalan konfigurasi sertifikat. Gunakan metode berikut untuk memverifikasi bahwa sertifikat Anda memenuhi persyaratan ini.

Menggunakan certutil

Jalankan certutil dengan -v opsi untuk menampilkan properti sertifikat terperinci, termasuk KeySpec dan Key Usage:

certutil -v -store My "<certificate_thumbprint>"

Dalam output, cari nilai berikut:

KeySpec = 1 -- AT_KEYEXCHANGE
Key Usage = Key Encipherment, Digital Signature (a0)
Enhanced Key Usage:
    Server Authentication (1.3.6.1.5.5.7.3.1)

Jika KeySpec = 2 (AT_SIGNATURE), sertifikat tidak dapat digunakan untuk enkripsi SQL Server.

Menggunakan PowerShell

Jalankan perintah PowerShell berikut untuk memeriksa KeySpec sertifikat di penyimpanan komputer lokal:

Get-ChildItem Cert:\LocalMachine\My | ForEach-Object {
    $cert = $_
    $key = $cert.PrivateKey
    [PSCustomObject]@{
        Subject   = $cert.Subject
        Thumbprint = $cert.Thumbprint
        KeySpec   = if ($key) { $key.CspKeyContainerInfo.KeyNumber } else { 'No private key' }
        NotAfter  = $cert.NotAfter
    }
} | Format-Table -AutoSize

Verifikasi bahwa KeySpec menunjukkan Exchange (sesuai dengan AT_KEYEXCHANGE). Jika menunjukkan Signature, minta sertifikat baru dengan pengaturan yang benar KeySpec .

Membuat sertifikat menggunakan AD CS

Jika organisasi Anda menggunakan Active Directory Certificate Services (AD CS) sebagai otoritas sertifikat internal (CA), buat sertifikat yang memenuhi persyaratan SQL Server dengan mengikuti langkah-langkah berikut:

  1. Buka snap-in MMC Sertifikat untuk komputer lokal (certlm.msc).
  2. Perluas Sertifikat Pribadi, klik kanan, dan pilih Semua Tugas>Minta Sertifikat Baru.
  3. Pilih Kebijakan Enrolmen Active Directory dan pilih Berikutnya.
  4. Pilih templat sertifikat yang mendukung autentikasi server. Server Web atau templat kustom yang dikonfigurasi untuk autentikasi server biasanya memenuhi persyaratan. Verifikasi dengan administrator CA Anda bahwa templat menggunakan Penyedia Layanan Kriptografi (CSP) warisan dengan KeySpec = AT_KEYEXCHANGE, bukan Penyedia Penyimpanan Kunci (KSP).
  5. Pada halaman Properti Sertifikat :
    • Atur Common Name (CN) ke nama host atau FQDN instans SQL Server Anda.
    • Pada tab Nama Alternatif Subjek , tambahkan entri DNS untuk semua nama host yang digunakan klien untuk menyambungkan (nama host, FQDN, dan alias apa pun).
  6. Selesaikan wizard pendaftaran dan pastikan sertifikat baru muncul di Pribadi>Sertifikat.
  7. KeySpec Verifikasi dengan menggunakan certutil atau PowerShell seperti yang dijelaskan dalam Memverifikasi KeySpec dan Penggunaan Kunci.

Penting

Sertifikat yang dibuat dengan Penyedia Penyimpanan Kunci (KSP), seperti Penyedia Penyimpanan Kunci Perangkat LunakMicrosoft, menggunakan KeySpec = 0 dan tidak kompatibel dengan SQL Server. Saat membuat templat sertifikat Anda di AD CS, pilih CSP warisan seperti Penyedia Kriptografi Microsoft RSA SChannel untuk memastikan KeySpec = AT_KEYEXCHANGE.

Anda dapat menggunakan salah satu metode berikut untuk memeriksa validitas sertifikat untuk digunakan dengan SQL Server:

  • alat sqlcheck: sqlcheck adalah alat baris perintah yang memeriksa pengaturan komputer dan akun layanan saat ini dan menghasilkan laporan teks ke jendela Konsol yang berguna untuk memecahkan masalah berbagai kesalahan koneksi. Output memiliki informasi berikut mengenai sertifikat:

    Details for SQL Server Instance: This Certificate row in this section provides more details regarding the certificate being used by SQL Server (Self-generated, hard-coded thumbprint value, etc.).
    
    Certificates in the Local Computer MY Store: This section shows detailed information regarding all the certificates found in the computer certificate store.
    

    Untuk informasi selengkapnya tentang kemampuan alat dan untuk petunjuk pengunduhan, lihat Selamat Datang di wiki CSS_SQL_Networking_Tools.

  • alat certutil: certutil.exe adalah program antarmuka baris perintah yang diinstal sebagai bagian dari Layanan Sertifikat. Anda dapat menggunakan certutil.exe untuk membuang dan menampilkan informasi sertifikat. -v Gunakan opsi untuk mendapatkan informasi terperinci. Untuk informasi selengkapnya, lihat certutil.

  • Snap-in Sertifikat: Anda juga dapat menggunakan jendela snap-in Sertifikat untuk melihat informasi selengkapnya tentang sertifikat di berbagai penyimpanan sertifikat di komputer. Tetapi alat ini tidak menampilkan informasi KeySpec. Untuk informasi selengkapnya tentang cara melihat sertifikat dengan snap-in MMC, lihat Cara: Melihat sertifikat dengan snap-in MMC.

Mengimpor sertifikat dengan nama yang berbeda ke nama host

Saat ini, Anda hanya dapat mengimpor sertifikat menggunakan SQL Server Configuration Manager jika nama subjek sertifikat cocok dengan nama host komputer.

Jika Anda ingin menggunakan sertifikat dengan nama subjek yang berbeda, ikuti langkah-langkah berikut:

  1. Impor sertifikat menggunakan snap-in Sertifikat ke penyimpanan sertifikat komputer lokal.

  2. Di SQL Server Configuration Manager, perluas Konfigurasi Jaringan SQL Server klik kanan instans SQL Server, lalu pilih Properti untuk membuka kotak dialog Protocols untuk properti <instance_name>.

  3. Pada tab Sertifikat , pilih sertifikat yang Anda impor ke penyimpanan sertifikat dari daftar dropdown Sertifikat :

    Screenshot tab sertifikat dari kotak dialog properti di SQL Server Configuration Manager.

Mengimpor sertifikat dengan nama yang berbeda ke nama host menghasilkan pesan kesalahan berikut:

The selected certificate name does not match FQDN of this hostname. This property is required by SQL Server
Certificate name: random-name
Computer name: sqlserver.domain.com

Sertifikat kedaluwarsa

SQL Server hanya memeriksa validitas sertifikat pada saat konfigurasi. Misalnya, Anda tidak dapat menggunakan SQL Server Configuration Manager pada SQL Server 2019 (15.x) dan versi yang lebih baru, untuk menyediakan sertifikat yang kedaluwarsa. SQL Server terus berjalan tanpa masalah jika sertifikat kedaluwarsa setelah diprovisikan. Tetapi, beberapa aplikasi klien seperti Power BI memeriksa validitas sertifikat pada setiap koneksi dan menimbulkan kesalahan jika instans SQL Server dikonfigurasi untuk menggunakan sertifikat yang kedaluwarsa untuk enkripsi. Kami menyarankan agar Anda tidak menggunakan sertifikat yang kedaluwarsa untuk enkripsi SQL Server.

Langkah selanjutnya