我们一直在尝试以下步骤: http://msdn.microsoft.com/en-us/library/cc278098.aspx 但一直收到此错误:消息 15151,级别 16,状态 1,第 1 行找不到证书“tdeCert”,因为它不存在或您没有权限。
答案1
这意味着您没有正确执行这些步骤。确保 tdeCert 存在于 中select * from master.sys.certificates
,因为证书是在步骤 2 中创建的:CREATE CERTIFICATE tdeCert WITH SUBJECT = ‘TDE Certificate’
并且必须存在。您要么跳过了某个步骤,要么在错误的数据库中创建了证书,要么证书名称有拼写错误(包括区分大小写的服务器上的大小写)。
答案2
您需要注意使用正确的数据库:
use master;
CREATE MASTER KEY ENCRYPTION BY PASSWORD= 'password';
go
CREATE CERTIFICATE tdeCert WITH SUBJECT = 'TDE Certificate';
go
BACKUP CERTIFICATE tdeCert TO FILE = 'C:\location'
WITH PRIVATE KEY ( FILE = 'C:\location2', ENCRYPTION BY PASSWORD = 'password');
go
use your_db
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER CERTIFICATE tdeCert
注意use master
和use your_db
。
答案3
透明数据加密 (TDE) 使用存储在数据库引导记录中的数据库加密密钥 (DEK) 来加密数据库。DEK 又受数据库主密钥的保护,而数据库主密钥又受服务主密钥的保护
第一步是创建主加密密钥:
USE master; GO CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Password'; GO
创建主加密密钥后,创建用于加密数据库的证书:
CREATE CERTIFICATE servercertificate WITH SUBJECT = 'DataCertificate';
创建主密钥和证书后,可以使用 CREATE DATABASE ENCRYPTION KEY 语句为特定数据库创建 DEK:
USE DecryptTesting; GO CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_128 ENCRYPTION BY SERVER CERTIFICATE servercertificate; GO
您将在结果窗口中收到一条警告:
警告:用于加密数据库加密密钥的证书尚未备份。您应立即备份证书以及与证书关联的私钥。如果证书不可用,或者您必须在另一台服务器上恢复或附加数据库,则必须备份证书和私钥,否则您将无法打开数据库。
使用 TDE 时,请在主数据库中创建服务器证书的备份。您可以使用 BACKUP CERTIFICATE 语句创建证书和私钥的备份,这两者都是证书恢复所必需的。私钥密码不必与数据库主密钥密码相同:
BACKUP CERTIFICATE ServerCertificate TO FILE = 'ServerCertExport' WITH PRIVATE KEY ( FILE = 'PrivateKeyFile', ENCRYPTION BY PASSWORD = '<PrivateKeyPasswordHere>' );
现在您可以加密数据库:
ALTER DATABASE DecryptTesting SET ENCRYPTION ON;