Bagikan melalui


UBAH SERTIFIKAT (Transact-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSistem Platform Analitik (PDW)Database SQL di Microsoft Fabric

Mengubah kata sandi yang digunakan untuk mengenkripsi kunci privat sertifikat, menghapus kunci privat, atau mengimpor kunci privat jika tidak ada. Mengubah ketersediaan sertifikat menjadi Service Broker.

Konvensi sintaks transact-SQL

Syntax

-- Syntax for SQL Server and Azure SQL Database  
  
ALTER CERTIFICATE certificate_name   
      REMOVE PRIVATE KEY  
    | WITH PRIVATE KEY ( <private_key_spec> )  
    | WITH ACTIVE FOR BEGIN_DIALOG = { ON | OFF }  
  
<private_key_spec> ::=   
      {   
        { FILE = 'path_to_private_key' | BINARY = private_key_bits }  
         [ , DECRYPTION BY PASSWORD = 'current_password' ]  
         [ , ENCRYPTION BY PASSWORD = 'new_password' ]  
      }  
    |  
      {  
         [ DECRYPTION BY PASSWORD = 'current_password' ]  
         [ [ , ] ENCRYPTION BY PASSWORD = 'new_password' ]  
      }  
-- Syntax for Parallel Data Warehouse  
  
ALTER CERTIFICATE certificate_name   
{  
      REMOVE PRIVATE KEY  
    | WITH PRIVATE KEY (   
        FILE = '<path_to_private_key>',  
        DECRYPTION BY PASSWORD = '<key password>' )
}  

Arguments

certificate_name
Nama unik tempat sertifikat diketahui dalam database.

HAPUS KUNCI PRIVAT
Menentukan bahwa kunci privat tidak akan lagi dipertahankan di dalam database.

DENGAN KUNCI PRIVAT Menentukan bahwa kunci privat sertifikat dimuat ke dalam SQL Server.

BERKAS = 'path_to_private_key'
Menentukan jalur lengkap, termasuk nama file, ke kunci privat. Parameter ini dapat berupa jalur lokal atau jalur UNC ke lokasi jaringan. File diakses dalam konteks keamanan akun layanan SQL Server. Saat Anda menggunakan opsi ini, pastikan akun layanan memiliki akses ke file yang ditentukan.

Jika Anda hanya menentukan nama file, file disimpan di folder data pengguna default untuk instans. Folder ini mungkin atau mungkin bukan folder DATA SQL Server. Untuk SQL Server Express LocalDB, folder data pengguna default untuk instans adalah jalur yang ditentukan oleh %USERPROFILE% variabel lingkungan untuk akun yang membuat instans.

BINER = 'private_key_bits'
Berlaku untuk: SQL Server 2012 (11.x) dan yang lebih baru.

Bit kunci privat ditentukan sebagai konstanta biner. Bit ini dapat dalam bentuk terenkripsi. Jika dienkripsi, Anda harus memberikan kata sandi dekripsi. SQL Server tidak melakukan pemeriksaan kebijakan kata sandi pada kata sandi ini. Bit kunci privat harus dalam format file PVK.

DEKRIPSI MENURUT KATA SANDI ='current_password'
Menentukan kata sandi yang diperlukan untuk mendekripsi kunci privat.

ENKRIPSI MENURUT KATA SANDI ='new_password'
Menentukan kata sandi yang digunakan untuk mengenkripsi kunci privat sertifikat dalam database. new_password harus memenuhi persyaratan kebijakan kata sandi Windows komputer yang menjalankan instans SQL Server. Untuk informasi selengkapnya, lihat Kebijakan Kata Sandi.

ACTIVE FOR BEGIN_DIALOG = { ON | NONAKTIF }
Membuat sertifikat tersedia untuk inisiator percakapan dialog Service Broker.

Remarks

Kunci privat harus sesuai dengan kunci publik yang ditentukan oleh certificate_name.

Anda dapat menghilangkan klausa DECRYPTION BY PASSWORD jika kata sandi dalam file dilindungi dengan kata sandi null.

Saat Anda mengimpor kunci privat sertifikat yang sudah ada dalam database, kunci privat secara otomatis dilindungi oleh kunci master database. Untuk melindungi kunci privat dengan kata sandi, gunakan klausa ENCRYPTION BY PASSWORD.

Opsi HAPUS KUNCI PRIVAT menghapus kunci privat sertifikat dari database. Anda dapat menghapus kunci privat saat menggunakan sertifikat untuk memverifikasi tanda tangan atau dalam skenario Service Broker yang tidak memerlukan kunci privat. Jangan hapus kunci privat sertifikat yang melindungi kunci konten. Anda perlu memulihkan kunci privat untuk menandatangani modul atau string tambahan yang harus diverifikasi dengan sertifikat, atau untuk mendekripsi nilai yang dienkripsi dengan sertifikat.

Anda tidak perlu menentukan kata sandi dekripsi saat kunci privat dienkripsi dengan menggunakan kunci master database.

Untuk mengubah kata sandi yang digunakan untuk mengenkripsi kunci privat, jangan tentukan klausa FILE atau BINARY.

Important

Selalu buat salinan arsip kunci privat sebelum menghapusnya dari database. Untuk informasi selengkapnya, lihat SERTIFIKAT CADANGAN (Transact-SQL) dan CERTPRIVATEKEY (Transact-SQL).

Opsi WITH PRIVATE KEY tidak tersedia dalam database yang terkandung.

Keterbatasan

Nama sertifikat tidak dapat diubah setelah pembuatan. ALTER CERTIFICATE tidak mendukung penggantian nama sertifikat. Jika Anda perlu menggunakan nama sertifikat yang berbeda, Anda harus membuat sertifikat baru dan memigrasikan dependensi.

Penanganan masalah untuk sertifikat TDE

Jika Anda perlu mengganti sertifikat Transparent Data Encryption (TDE) dengan nama yang berbeda:

  1. Cadangkan sertifikat dan kunci privat saat ini:

    BACKUP CERTIFICATE OldTDECert
    TO FILE = 'C:\Backup\OldTDECert.cer'
    WITH PRIVATE KEY (
        FILE = 'C:\Backup\OldTDECert.pvk',
        ENCRYPTION BY PASSWORD = '<password>'
    );
    
  2. Buat sertifikat baru dengan nama yang benar:

    CREATE CERTIFICATE NewTDECert
    WITH SUBJECT = 'TDE Certificate - Correct Name';
    
  3. Untuk setiap database terenkripsi TDE, ubah kunci enkripsi:

    USE EncryptedDB;
    GO
    
    ALTER DATABASE ENCRYPTION KEY
    ENCRYPTION BY SERVER CERTIFICATE NewTDECert;
    
  4. Setelah semua database dimigrasikan, hilangkan sertifikat lama:

    USE master;
    GO
    
    DROP CERTIFICATE OldTDECert;
    

Important

Selalu cadangkan sertifikat dan kunci privat sebelum membuat perubahan TDE. Simpan cadangan di lokasi aman yang terpisah dari server database.

Permissions

Memerlukan izin ALTER pada sertifikat.

Examples

A. Menghapus kunci privat sertifikat

ALTER CERTIFICATE Shipping04   
    REMOVE PRIVATE KEY;  
GO  

B. Mengubah kata sandi yang digunakan untuk mengenkripsi kunci privat

ALTER CERTIFICATE Shipping11   
    WITH PRIVATE KEY (DECRYPTION BY PASSWORD = '95hkjdskghFDGGG4%',  
    ENCRYPTION BY PASSWORD = '34958tosdgfkh##38');  
GO  

C. Mengimpor kunci privat untuk sertifikat yang sudah ada dalam database

ALTER CERTIFICATE Shipping13   
    WITH PRIVATE KEY (FILE = 'c:\importedkeys\Shipping13',  
    DECRYPTION BY PASSWORD = 'GDFLKl8^^GGG4000%');  
GO  

D. Mengubah perlindungan kunci privat dari kata sandi ke kunci master database

ALTER CERTIFICATE Shipping15   
    WITH PRIVATE KEY (DECRYPTION BY PASSWORD = '95hk000eEnvjkjy#F%');  
GO