共用方式為


ALTER CERTIFICATE (Transact-SQL)

變更為憑證加密所用的私密金鑰,如果沒有,則加入一個。將憑證的可用性改為 Service Broker。

主題連結圖示Transact-SQL 語法慣例

語法

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' 
    |
    DECRYPTION BY PASSWORD = 'key_password' 
    |
    ENCRYPTION BY PASSWORD = 'password' 

引數

  • certificate_name
    這是在資料庫中辨識憑證的唯一名稱。

  • FILE ='path_to_private_key'
    指定通往私密金鑰的完整路徑 (包括檔案名稱)。這個參數可以是本機路徑或是通往網路位置的 UNC 路徑。這個檔案會在 SQL Server 服務帳戶的安全性內容中被存取。當您使用這個選項時,必須確定服務帳戶有權存取指定的檔案。

  • DECRYPTION BY PASSWORD ='key_password'
    指定私密金鑰解密所需的密碼。

  • ENCRYPTION BY PASSWORD ='password'
    指定用來加密資料庫內憑證之私密金鑰的密碼。password 必須符合執行 SQL Server 執行個體之電腦的 Windows 密碼原則需求。如需詳細資訊,請參閱<密碼原則>。

  • REMOVE PRIVATE KEY
    指定私密金鑰不應該在資料庫中繼續維護。

  • ACTIVE FOR BEGIN_DIALOG = { ON | OFF }
    讓 Service Broker 對話交談的起始端能夠使用該憑證。

備註

私密金鑰必須對應至 certificate_name 所指定的公開金鑰。

如果您利用 Null 密碼來保護檔案中的密碼,就可以省略 DECRYPTION BY PASSWORD 子句。

從檔案匯入已存在於資料庫中之憑證的私密金鑰時,私密金錀會自動受到資料庫主要金鑰的保護。若要利用密碼來保護私密金鑰,請使用 ENCRYPTION BY PASSWORD 片語。

REMOVE PRIVATE KEY 選項會從資料庫刪除憑證的私密金鑰。您可以在利用憑證來驗證簽章時,或者在不需要私密金鑰的 Service Broker 案例中,進行這項作業。請勿移除保護對稱金鑰之憑證的私密金鑰。

如果私密金鑰是利用資料庫主要金鑰加密時,就不必指定解密密碼。

重要事項重要事項

在從資料庫移除私密金鑰之前,請務必先製作一份保存副本。如需詳細資訊,請參閱<BACKUP CERTIFICATE (Transact-SQL)>。

權限

需要憑證的 ALTER 權限。

範例

A. 變更憑證的密碼

ALTER CERTIFICATE Shipping04 
    WITH PRIVATE KEY (DECRYPTION BY PASSWORD = 'pGF$5DGvbd2439587y',
    ENCRYPTION BY PASSWORD = '4-329578thlkajdshglXCSgf');
GO

B. 變更為私密金鑰加密所用的密碼

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

C. 匯入已在資料庫中之憑證的私密金鑰。

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

D. 將私密金鑰的保護,從密碼改為資料庫主要金鑰

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