SQL Server 2005 создать сертификат с закрытым ключом / шифрованием - PullRequest
0 голосов
/ 02 сентября 2011

Хорошо, вот моя проблема.Я делаю шифрование данных в SQL Server 2005, используя главный ключ БД, сертификат и симметричный ключ.Мне нужно иметь возможность восстановить сертификат с закрытым ключом.Но когда я запускаю CREATE CERTIFICATE с PRIVATE KEY, сертификат помещается в БД, но закрытый ключ не отображается.Ниже приведены шаги, которые я выполняю для тестирования.

Создание главного ключа базы данных.

 CREATE MASTER KEY ENCRYPTION BY PASSWORD = '12345'

Создание сертификата

CREATE CERTIFICATE MyCert 
WITH SUBJECT = 'My First Certificate', 
EXPIRY_DATE = '1/1/2199';

Создание симметричного ключа, зашифрованного с помощью MyCert.

CREATE SYMMETRIC KEY MySymmetricKey 
WITH ALGORITHM = AES_256 
ENCRYPTION BY CERTIFICATE MyCert

Вызовите ниже операторы select, чтобы показать ключи и сертификатыздесь.Они есть.Главный ключ БД, симметричный ключ и сертификат - все там.

SELECT * FROM sys.symmetric_keys 

SELECT * FROM sys.certificates 

Создайте резервную копию сертификата базы данных и ключ

Примечание Я попытался поместить их вта же папка, и это тоже не сработало.

BACKUP CERTIFICATE MyCert TO FILE = 'C:\SQLDatabase\MyCert\MyCert.cert'
WITH PRIVATE KEY ( FILE = 'C:\SQLDatabase\MyKey\MySymmetricKey.key' ,
ENCRYPTION BY PASSWORD = '12345' )

Удалите ключ и сертификат и убедитесь, что они пропали.

DROP SYMMETRIC KEY MySymmetricKey
DROP CERTIFICATE MyCert;

Нет RESTORE для сертификатов, создаваемых только по файлам.Я вызываю создание сертификата с ключом WITH PRIVATE KEY.

Когда я запускаю этот сертификат, он появляется, но ключ не входит в него.

Я подтвердил, что они находятся в папках, а SQL имеетдоступ к папкам.

Я также попробовал АЛЬТЕРНЫЙ СЕРТИФИКАТ С ЧАСТНЫМ КЛЮЧОМ и все еще ничего.

Чего мне не хватает?

CREATE CERTIFICATE PayGoDBCert 
FROM FILE = 'C:\SQLDatabase\MyCert\MyCert.cert'
WITH PRIVATE KEY (FILE = 'C:\SQLDatabase\MyKey\MySymmetricKey.key' , 
DECRYPTION BY PASSWORD = '12345')

SELECT * FROM sys.symmetric_keys 
SELECT * FROM sys.certificates 

1 Ответ

0 голосов
/ 02 сентября 2011

В вашем примере вы отбрасываете симметричные ключи, но не восстанавливаете их снова.

Снова создайте симметричный ключ и восстановите сертификат.

Просто примечание: пароль, используемый для защиты резервной копии сертификата, не является тем же паролем, который используется для шифрования закрытого ключа сертификата.

, сообщите нам, если это решит вашу проблему

...