2013-01-08 35 views
2

我已將證書導入SQL Server數據庫。如何從SQL Server獲取證書公鑰?

create certificate MyCertificate from file = 'c:\certificate.cer'; 

現在我想檢索該證書的公鑰。怎麼做 ?

我可以做

select * from sys.certificates 

,但沒有公開鍵列。

我知道我可以通過

backup certificate MyCertificate to file = 'c:\MyCertificate.cer'; 

其保存到磁盤,但是這不是我想要的。我只需要數據庫告訴我公鑰或以某種方式讓我完整的證書,但我不想使用文件。

編輯:

我想使用SQL Server和證書來驗證一排數字簽名數據庫表。但是由於功能VerifySignedByCert不檢查證書到期日期(根據此注意:加密和簽名的內置函數不檢查證書的過期日期,這些函數的用戶必須決定何時檢查證書到期http://msdn.microsoft.com/en-US/library/ms187798%28v=SQL.90%29.aspx)我必須在C#代碼中手動完成。

這就是爲什麼我想獲得證書公鑰和截止日期(可以在sys.certificates中找到)。但是,似乎將證書存儲在表中的varbinary列中是最佳選擇。或者還有其他更好的方法來實現這個目標嗎?

謝謝您的幫助

回答

0

,你正在尋找駐留在syscerts表master數據庫中的信息。但是,沒有簡單的方法來獲取這些數據。如果您試圖訪問密鑰,也許您沒有嘗試將證書用於SQL Server要使用證書的目的?

如果您嘗試在SQL Server中存儲證書,但未將它們用於SQL Server的安全性,那麼您可能想嘗試將它們存儲在表中的varbinary列中。會有這樣的工作嗎?

如果您提供了有關您要完成的任務的更多信息,我可能會爲您提供更多幫助。

這裏是證書的在SQL Server中一個很好的概述:http://www.mssqltips.com/sqlservertip/1319/sql-server-2005-encryption-certificates-overview/

+0

謝謝你的回答。我編輯了問題並添加了更多細節。 – Harlsten

0

創建一個表 創建表大氣壓 ( AID INT身份, PIN VARCHAR(300) ) INSERT INTO ATM(PIN) VALUES(EncryptByCert(cert_id( 'PinNumber1'), '4734.29億')) INSERT INTO ATM(PIN) VALUES(EncryptByCert(cert_id( 'PinNumber1'), '4735.67億')) INSERT INTO ATM(PIN) VALUES( EncryptByCert(cert_id('PinNumber1'),'4678904290000'))

之後,創建一個證書,如下所示: -

CREATE CERTIFICATE PinNumber1 ENCRYPTION BY PASSWORD = '3E @ K80 * ^' 主題爲= '這個PIN號碼Encrpted' 如果你想

對其進行解密後則: -

選擇轉換(VARCHAR(最大), DecryptByCert(cert_id( 'PinNumber1'),PIN,N'3e @ K80 * ^'))與ATM信 其中AID = 2