好的,這是我的問題。我正在使用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