我正在学习数据库加密,实际上我对尝试在数据库上启用加密时发生的错误感到困惑。
所以这是我要做的创建证书
/* Certificat de base de données */
CREATE CERTIFICATE certTestEncryption
WITH SUBJECT='Certificat TestEncryption';
/* Chiffrage de la BDD */
SELECT * FROM sys.certificates
所以我的证书确实存在。
但是当我尝试执行此语句时:
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”,因为它不存在或您没有授权。
答案 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;
就是这样。您必须在数据库主数据库上创建证书/非对称密钥,才能在其他数据库上使用它。
我希望它会对其他人有所帮助!
帮助我找到解决方案的网站的