1

好的,这是我的问题。我正在使用数据库主密钥、证书和对称密钥在 SQL Server 2005 中进行数据加密。我需要能够使用私钥恢复证书。但是,当我使用 PRIVATE KEY 运行 CREATE CERTIFICATE 时,证书会被拉入数据库,但私钥不会显示。以下是我遵循的测试步骤。

创建数据库主密钥。

 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 * 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 可以访问这些文件夹。

我也尝试了 ALTER CERTIFICATE WITH PRIVATE KEY,但仍然没有。

我错过了什么?

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 
4

1 回答 1

0

在您的示例中,您删除了对称密钥,但不再重新创建它。

再次重新创建对称密钥,然后恢复证书。

请注意:用于保护备份证书的密码与用于加密证书私钥的密码不同。

让我们知道这是否能解决您的问题

于 2011-09-01T22:03:07.370 回答