Хорошо, вот моя проблема.Я делаю шифрование данных в 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