在不更改指紋的情況下更改使用者數據庫的 TDE 證書的到期日期
我一直在網際網路上搜尋如何更改 SQL Server 2014 SP2 上使用者數據庫的 TDE 認證的到期日期,得到了很多文章,其中大多數都建議刪除並創建另一個到期日期不同的證書。
我擔心的是在更改到期日期之前進行的數據庫備份。當我刪除證書並創建一個具有不同到期日期的新證書時,證書的指紋會更改,因此無法恢復更改之前的備份。
下面是錯誤截圖:
感謝我是否可以就這個問題獲得一些專家建議並提供詳細資訊。
參考更新過期的 SQL Server TDE 證書中的資訊,該文章解釋說創建具有更新過期日期的新證書以在 TDE 中使用很容易。
USE [master] GO CREATE CERTIFICATE NewTDECert WITH SUBJECT = 'New TDE DEK Certificate', EXPIRY_DATE = '20181231'; GO USE [YourDatabase] GO ALTER DATABASE ENCRYPTION KEY ENCRYPTION BY SERVER CERTIFICATE NewTDECert; GO
執行上述命令後,您的數據庫現在使用關於 TDE 的新證書。
但是 - 該文章非常清楚地表明您仍然需要保留舊證書,以防您想要從使用舊證書時創建的備份中恢復數據庫。
從那個文章(突出我的):
是否要從 SQL Server 實例中刪除舊證書由您決定。您應該始終保留舊證書的備份,以防您需要使用使用舊密鑰的舊備份來恢復啟用 TDE 的數據庫。
另外(來自那個文章),
在任何證書更改備份份 TDE 證書至關重要,因為這是將數據庫恢復到另一個 SQL Server 實例所必需的。我們可以為新證書發出備份證書命令,如下所示。
USE [master] GO BACKUP CERTIFICATE NewTDECert TO FILE = '\\SQLP2\temp\NewTDECert.cer' WITH PRIVATE KEY (FILE = '\\SQLP2\temp\NewTDECert.pvk', ENCRYPTION BY PASSWORD = 'str0ngPa$$w0rd'); GO
可以在替換過期的 SQL Server 加密密鑰中找到更多資訊。(突出我的)。
要為 TDE 輪換證書,請按上述方式添加新證書,然後使用 ENCRYPTION BY SERVER CERTIFICATE 子句執行命令 ALTER DATABASE ENCRYPTION KEY:
ALTER DATABASE ENCRYPTION KEY ENCRYPTION BY SERVER CERTIFICATE newCertificate;
SQL Server 使用新證書重新加密數據庫加密密鑰,並在完成後丟棄舊證書的加密。和以前一樣,數據本身沒有重新加密,因此該過程幾乎立即完成。
一個警告:始終保留您使用的每個證書的至少一份備份副本。如果您需要恢復使用加密的數據庫,則需要創建備份時有效的證書。養成在 SQL Server 中創建證書備份後立即創建證書備份的習慣。將備份存放在安全的地方;還保留用於加密證書備份的密碼的副本,最好放在另一個安全的地方以確保安全。永遠保留這些,或者直到可能使用它們的最後一個數據庫備份被清除。