3

我正在使用SQL Server的「始終加密」功能使用受自簽名證書保護的主密鑰加密數據庫中的幾列。證書是使用SQL 2016的Management Studio創建的,並且始終缺省爲發佈日期前一年的到期日期 - 它存儲在當前用戶的Windows證書存儲區中。增加總是加密證書的有效性

是否可以將此證書的有效期延長至一年以上的值?

更具體地說,可以通過腳本編寫AE所需的證書 - 根據我的理解,此證書與CREATE CERTIFICATE命令創建的sql證書不同,需要將其導出爲像pfx這樣的文件格式,以便可以通過Azure網絡應用

另外,如果證書已過期,數據仍然可以被加密/解密嗎?

回答

2

SQLmojoe包含在答案中的創建證書SQL語句不適用於AE。

您可以創建程序使用腳本(批次),並調用makecert證書,例如:

Makecert.exe -n "CN=Always Encrypted cert" -pe -sr CurrentUser -r -eku 1.3.6.1.5.5.8.2.2,1.3.6.1.4.1.311.10.3.11 -ss my -sky exchange -sp "Microsoft Enhanced RSA and AES Cryptographic Provider" -sy 24 -len 2048 -a sha256 

請注意,如果您要創建在本地計算機存儲位置的證書,您將需要管理員privielges在框中,你需要改變-sr參數。

我希望這會有所幫助。

+0

完美 - 這正是我需要的。我能夠使用MakeCert創建證書,然後在SQL Management Studio中引用該證書來創建ALwaysEncrypted證書。非常感謝你的幫助! –

0

不,您不能延長有效期。證書基本上是不可變的。否則,這將是更加昂貴的(實際上可能不可能)檢查有效性,維護撤銷清單等....您可以輕鬆地創建一個新的證書來替換現有的證書並設置新的到期日期證明任何適合你的作品。例如。

CREATE CERTIFICATE [FSAECMKCert] WITH SUBJECT = 'FS AE CMK Cert', 
START_DATE = '12/02/2015', EXPIRY_DATE = '12/31/2037' 

請注意,AE實際上並沒有兌現證書到期。否則許多用戶最終會失去對自己數據的訪問權限 - 大多數組織在續訂/輪換方面做得不好。但是,通過「合理的」到期政策和輪換/更新流程來維護所需的/預期的安全水平是一種很好的通用做法。

+0

感謝您的回覆。如果我沒有弄錯,你正在談論的創建證書命令將創建一個sql證書,該證書可以用於其他SQL操作,比如服務代理/ etc - 但是它不能用於AE。 –

0

實際上,支持始終加密的客戶端驅動程序不檢查用作列主密鑰的證書的到期日期(並且它們不驗證證書鏈)。即使證書已過期,驅動程序也能夠加密/解密數據。