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. Kami merekomendasikan penyimpanan sertifikat komputer lokal karena menghindari konfigurasi ulang sertifikat dengan perubahan akun startup SQL Server.

  • 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 Subjek harus menyertakan semua nama yang mungkin digunakan klien Anda untuk menyambungkan 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 di SQL Server yang dihasilkan sertifikat yang ditandatangani sendiri.

Grup ketersediaan AlwaysOn

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

  • Metode 1: Gunakan satu sertifikat pada semua replika grup ketersediaan. Nama umum bersifat arbitrer sehingga bisa menjadi nilai tempat penampung apa pun. Nama host dan FQDN dari semua replika SQL Server dalam grup ketersediaan, dan nama pendengar grup ketersediaan, harus disertakan dalam Nama Alternatif Subjek 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 pendengar grup ketersediaan, kecuali sertifikat ditandatangani oleh Otoritas Sertifikat (CA) publik atau resmi. Jika Anda tidak menyertakan replika grup ketersediaan dan nama pendengar dalam sertifikat, maka Anda perlu menyertakan salah satu nilai Nama Alternatif Subjek di HostNameInCertificate atau jalur ke sertifikat dalam ServerCertificate nilai string koneksi 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 arbitrer sehingga bisa menjadi nilai tempat penampung apa pun. Nama host dan FQDN instans SQL Server masing-masing dan nama pendengar grup ketersediaan harus disertakan dalam Nama Alternatif Subjek sertifikat untuk setiap replika masing-masing. 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 pengujian1:

    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 pengujian2:

    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 disediakan pada semua simpul 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 Mengonfigurasi Mesin Database SQL Server 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

Di 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.

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 ke penyimpanan sertifikat komputer lokal menggunakan snap-in Sertifikat.

  2. Di Pengelola Konfigurasi SQL Server, perluas Konfigurasi Jaringan SQL Server klik kanan instans SQL Server, lalu pilih Properti untuk membuka kotak dialog Protokol untuk <Properti instance_name>.

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

    Cuplikan layar 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 di 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. Tapi, 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