无法创建数据库加密密钥

时间:2019-11-01 14:18:37

标签: sql sql-server

我正在学习数据库加密,实际上我对尝试在数据库上启用加密时发生的错误感到困惑。

所以这是我要做的创建证书

    /* Certificat de base de données */

    CREATE CERTIFICATE certTestEncryption
    WITH SUBJECT='Certificat TestEncryption';

    /* Chiffrage de la BDD */

    SELECT * FROM sys.certificates

这就是我得到的: certificat of my database 'testEncryption'

所以我的证书确实存在。

但是当我尝试执行此语句时:

CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM=AES_256
ENCRYPTION BY SERVER CERTIFICATE certTestEncryption;

它根本不起作用,并给我以下错误消息:

  

找不到证书“ certTestEncryption”,因为它没有   存在或您没有授权。

所以我尝试这个

EXECUTE AS LOGIN = 'sa';
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM=AES_256
ENCRYPTION BY SERVER CERTIFICATE certTestEncryption;

但是它仍然给我和以前一样的错误。

我也尝试通过非对称密钥加密:

EXECUTE AS LOGIN = 'sa';
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM=AES_256
ENCRYPTION BY SERVER ASYMMETRIC KEY asymKey;

它仍然给我这个错误: 无法找到非对称密钥“ asymmetricKey”,因为它不存在或您没有授权。

即使非对称密钥实际上存在: Database encryption by asymmetric key

1 个答案:

答案 0 :(得分:0)

我终于找到了解决方案! 我在要加密的数据库上创建了证书。 但这不是它的工作原理。

如果遇到相同的问题,请执行以下操作

USE MASTER;
CREATE MASTER KEY
ENCRYPTION BY PASSWORD='password';
  

数据库主密钥已由服务主密钥加密。   数据库主密钥对指定密钥内的每个密钥和证书进行加密   数据库(目前是“主”数据库)。

然后您留在主数据库中并执行以下语句

CREATE CERTIFICATE certName
[Encryption by password='password']
WITH SUBJECT='your Subject'
  

证书已创建到master数据库中。   默认情况下,证书是使用数据库主主密钥加密的(请参见上一段落),但是您可以使用“密码加密...”来更改证书。

最后,您进入无法激活加密的数据库 (请确保备份证书和主数据库的密钥)

USE nameOfYourDB;
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM=[AES_128, AES_192, AES_258...]
ENCRYPTION BY SERVER [CERTIFICATE nameOfYourCertificate|ASYMMETRIC KEY nameOfAsymmetricKey];

ALTER DATABASE nameOfYourDB
SET ENCRYPTION ON;

就是这样。您必须在数据库主数据库上创建证书/非对称密钥,才能在其他数据库上使用它。

我希望它会对其他人有所帮助!

帮助我找到解决方案的网站的

Link