提高始终加密证书的有效性

Increase validity of Always Encrypted Certificate

我正在使用 SQL 服务器的始终加密功能,使用受自签名证书保护的主密钥对数据库中的一些列进行加密。该证书是使用 SQL 2016 的 Management Studio 创建的,并且始终默认为比颁发日期早一年的到期日期 - 它存储在当前用户的 Windows 证书存储中。

是否可以将此证书的有效期延长到一年以上?

更具体地说,AE所需的证书是否可以编写脚本-据我了解,此证书与CREATE CERTIFICATE命令创建的sql证书不同,需要导出为pfx等文件格式可由 Azure Web 应用程序访问。

还有,如果证书过期了,数据还能encrypted/decrypted吗?

不可以,您不能延长其有效期。证书基本上是不可变的。否则,检查有效性、维护撤销列表等的成本要高得多(实际上可能不可能做到)……您可以轻松地创建一个新证书来替换现有证书并设置新证书的到期时间确定适合您的任何东西。例如。

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

请注意,AE 实际上并不遵守证书过期时间。否则,许多用户最终将无法访问他们自己的数据 - 大多数组织在 renewals/rotations 方面做得不好。但是,使用 "reasonable" 过期策略和 rotation/renewal 流程来维持 required/expected 安全级别是一个很好的通用做法。

创建证书 SQL 声明 SQL答案中包含的 mojoe 不适用于 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

请注意,如果您想在本地机器存储位置创建证书,您将需要 teh box 的管理员权限,并且需要更改 -sr 参数。

希望对您有所帮助。

实际上,支持 Always Encrypted 的客户端驱动程序不会检查用作列主密钥的证书的到期日期(并且它们不会验证证书链)。驱动程序将能够 encrypt/decrypt 数据,即使证书已过期。