2011-09-01 59 views
0

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

回答

0

在你的例子中,你刪除了對稱密鑰,但不要重新創建它。

重新創建對稱密鑰,然後恢復證書。

請注意:用於保護備份證書的密碼與用於加密證書私鑰的密碼不同。

讓我們知道是否可以解決您的問題

+0

沒有運氣。在上面我不重新創建密鑰,因爲...我會假設...並且我們都知道你會得到什麼,我會假設具有私有密鑰的CREATE CERTIFICATE將獲得使用私有密鑰備份的私鑰證書。這將是備份私鑰的BACKUP CERTIFICATE的全部要點。在文件目錄中,我看到了證書和密鑰。但我無法把它帶回來,只有證書。 – Jody

+0

作爲一個筆記,當我嘗試你的建議時,我無法讀取用備份密鑰加密的加密數據。此外,我刪除了在論壇上發佈的證書,密鑰和密碼的實際值。所以我可能會有一個錯字,但回頭看時它們看起來是一樣的。 – Jody