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 指定的公钥相对应。

如果文件中的密码受空密码保护,则可省略 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