BACKUP CERTIFICATE (Transact-SQL)

适用于:SQL Server Analytics Platform System (PDW)

将证书导出到文件中。

注意

在 SQL Server 2022 (16.x) 中,可以使用公钥对 (PKCS) #12 或个人信息交换 (PFX) 格式,直接在文件或二进制 blob 中备份或还原带有私钥的证书。

PKCS #12 或 PFX 格式是一种二进制格式,用于将服务器证书、任何中间证书和私钥存储在一个文件中。 PFX 文件通常具有 .pfx.p12 等扩展名。 这使客户无需使用 PVKConverter 等转换工具(对于 PVK 或 DER 格式),从而可以更轻松地遵守禁止 RC4 加密的当前安全最佳做法准则和合规性标准。

Transact-SQL 语法约定

语法

-- Syntax for SQL Server  
  
BACKUP CERTIFICATE certname TO FILE = 'path_to_file'  
    [ WITH
      [FORMAT = 'PFX',]
      PRIVATE KEY   
      (   
        FILE = 'path_to_private_key_file' ,  
        ENCRYPTION BY PASSWORD = 'encryption_password'   
        [ , DECRYPTION BY PASSWORD = 'decryption_password' ]   
      )   
    ]  
-- Syntax for Parallel Data Warehouse  
  
BACKUP CERTIFICATE certname TO FILE ='path_to_file'  
      WITH PRIVATE KEY   
      (   
        FILE ='path_to_private_key_file',  
        ENCRYPTION BY PASSWORD ='encryption_password'   
      )   

参数

certname
要备份的证书的名称。

TO FILE = path_to_file
指定要保存证书的文件的完整路径(包括文件名)。 此路径可以是本地路径,也可以是网络位置的 UNC 路径。 如果仅指定了文件名,则该文件将保存在实例的默认用户数据文件夹中(可能是也可能不是 SQL Server DATA 文件夹)。 对于 SQL Server Express LocalDB,实例的默认用户数据文件夹是 %USERPROFILE% 环境变量为创建实例的帐户指定的路径。

WITH FORMAT = 'PFX'
适用于:SQL Server 2022 (16.x) 及更高版本
指定将证书及其私钥导出到 PFX 文件。 此子句是可选的。

WITH PRIVATE KEY 指定将证书的私钥保存到文件中。 此子句为可选项。

FILE = path_to_private_key_file
指定要保存私钥的文件的完整路径(包括文件名)。 此路径可以是本地路径,也可以是网络位置的 UNC 路径。 如果仅指定了文件名,则该文件将保存在实例的默认用户数据文件夹中(可能是也可能不是 SQL Server DATA 文件夹)。 对于 SQL Server Express LocalDB,实例的默认用户数据文件夹是 %USERPROFILE% 环境变量为创建实例的帐户指定的路径。

ENCRYPTION BY PASSWORD = encryption_password
用于在将密钥写入备份文件之前对私钥进行加密的密码。 该密码需要进行复杂性检查。

DECRYPTION BY PASSWORD = decryption_password
用于在备份密钥之前对私钥进行解密的密码。 如果证书是用主密钥加密,则无需使用此参数。

备注

如果在数据库中使用密码对私钥进行加密,则必须指定解密密码。

将私钥备份到文件时,需要进行加密。 用于保护文件中私钥的密码和用于加密数据库中证书私钥的密码不是同一个密码。

私钥以 PVK 文件格式保存。

若要使用或不使用私钥还原备份证书,请使用 CREATE CERTIFICATE 语句。

若要将私钥还原到数据库中的现有证书,请使用 ALTER CERTIFICATE 语句。

在你执行备份后,这些文件就会通过 ACL 备份到 SQL Server 实例的服务帐户。 如果需要将证书还原到在不同帐户下运行的服务器,需要将文件权限调整为文件可供新帐户读取。

权限

要求对证书具有 CONTROL 权限,并且了解用于对私钥进行加密的密码的相关信息。 如果你只备份证书的公共部分,此命令必须拥有对证书的某种权限,并且调用方对证书的“查看”权限尚未遭拒绝。

示例

A. 将证书导出到文件中

以下示例将证书导出到文件中。

BACKUP CERTIFICATE sales05 TO FILE = 'c:\storedcerts\sales05cert';  
GO  

B. 导出证书和私钥

在以下示例中,已备份的证书的私钥将使用密码 997jkhUbhk$w4ez0876hKHJH5gh 进行加密。

BACKUP CERTIFICATE sales05 TO FILE = 'c:\storedcerts\sales05cert'  
    WITH PRIVATE KEY ( FILE = 'c:\storedkeys\sales05key' ,   
    ENCRYPTION BY PASSWORD = '997jkhUbhk$w4ez0876hKHJH5gh' );  
GO  

C. 导出具有加密私钥的证书

在以下示例中,证书的私钥在数据库中进行加密。 必须使用密码 9875t6#6rfid7vble7r 对私钥进行解密。 将证书存储到备份文件中时,私钥将使用密码 9n34khUbhk$w4ecJH5gh 进行加密。

BACKUP CERTIFICATE sales09 TO FILE = 'c:\storedcerts\sales09cert'   
    WITH PRIVATE KEY ( DECRYPTION BY PASSWORD = '9875t6#6rfid7vble7r' ,  
    FILE = 'c:\storedkeys\sales09key' ,   
    ENCRYPTION BY PASSWORD = '9n34khUbhk$w4ecJH5gh' );  
GO  

D. 将证书及其私钥导出到 PFX 文件

BACKUP CERTIFICATE Shipping04 TO FILE = 'c:\storedcerts\shipping04cert.pfx'
WITH  
    FORMAT = 'PFX',  
    PRIVATE KEY ( 
ENCRYPTION BY PASSWORD = '9n34khUbhk$w4ecJH5gh',  
ALGORITHM = 'AES_256'
    )

另请参阅

CREATE CERTIFICATE (Transact-SQL)
ALTER CERTIFICATE (Transact-SQL)
DROP CERTIFICATE (Transact-SQL)
CERTENCODED (Transact-SQL)
CERTPRIVATEKEY (Transact-SQL)
CERT_ID (Transact-SQL)
CERTPROPERTY (Transact-SQL)