好的,这是我的问题。我正在使用DB主密钥,证书和对称密钥在SQL Server 2005中进行数据加密。我需要能够使用私钥恢复证书。但是,当我使用PRIVATE KEY运行CREATE CERTIFICATE时,证书会被拉入数据库中,但私钥不会显示出来。以下是我遵循的测试步骤。SQL Server 2005使用私钥/加密创建证书
创建数据库主密钥。
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可以访问这些文件夹。
我也尝试过使用私钥的ALTER CERTIFICATE,但仍然没有任何结果。
我错过了什么?
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
没有运气。在上面我不重新创建密钥,因为...我会假设...并且我们都知道你会得到什么,我会假设具有私有密钥的CREATE CERTIFICATE将获得使用私有密钥备份的私钥证书。这将是备份私钥的BACKUP CERTIFICATE的全部要点。在文件目录中,我看到了证书和密钥。但我无法把它带回来,只有证书。 – Jody
作为一个笔记,当我尝试你的建议时,我无法读取用备份密钥加密的加密数据。此外,我删除了在论坛上发布的证书,密钥和密码的实际值。所以我可能会有一个错字,但回头看时它们看起来是一样的。 – Jody