Невозможно создать ключ шифрования базы данных - PullRequest
0 голосов
/ 01 ноября 2019

Я изучаю шифрование базы данных и на самом деле запутываюсь в ошибке, которая случается, когда я пытаюсь включить шифрование в моей базе данных.

Итак, вот что я делаю для создания сертификата

    /* 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 голосов
/ 02 ноября 2019

Я наконец нашел решение! Мне был создан сертификат в базе данных, которую я хочу зашифровать. Но это не так.

Если у вас возникла та же проблема, выполните следующие действия:

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

Главный ключ базы данных зашифрован главным ключом службы. Главный ключ базы данных зашифровывает каждый ключ и сертификат в указанной базе данных (которая в настоящее время является «главной» базой данных).

Затем вы остаетесь в основной базе данных и выполняете следующую инструкцию

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

Сертификат создается в базе данных master. Сертификат по умолчанию шифруется главным главным ключом базы данных (см. Предыдущий> абзац), но вы можете изменить его, используя 'ENCRYPTION BY PASSWORD ...'

Наконец, вы переходите в базу данных, гдеВы не можете активировать шифрование (Обязательно сделайте резервную копию сертификата и основного ключа базы данных)

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;

Вот и все. Вы должны создать сертификат / асимметричный ключ на хозяине базы данных, чтобы иметь возможность использовать его в другой базе данных.

Надеюсь, это поможет другим людям!

Ссылка сайта, который помог мне найти решение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...