Sql-Server

在不更改指紋的情況下更改使用者數據庫的 TDE 證書的到期日期

  • July 31, 2018

我一直在網際網路上搜尋如何更改 SQL Server 2014 SP2 上使用者數據庫的 TDE 認證的到期日期,得到了很多文章,其中大多數都建議刪除並創建另一個到期日期不同的證書。

我擔心的是在更改到期日期之前進行的數據庫備份。當我刪除證書並創建一個具有不同到期日期的新證書時,證書的指紋會更改,因此無法恢復更改之前的備份。

下面是錯誤截圖:

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 中創建證書備份後立即創建證書備份的習慣。將備份存放在安全的地方;還保留用於加密證書備份的密碼的副本,最好放在另一個安全的地方以確保安全。永遠保留這些,或者直到可能使用它們的最後一個數據庫備份被清除。

引用自:https://dba.stackexchange.com/questions/213291