好的,这是我的问题。我正在使用数据库主密钥、证书和对称密钥在 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