我正在使用SQL Server的“始终加密”功能,使用受自签名证书保护的主密钥加密数据库中的几列。该证书是使用SQL 2016的Management Studio创建的,并且始终默认为发布日期提前一年的到期日期 - 它存储在当前用户的Windows证书存储区中。
是否可以将此证书的有效期延长至超过一年的值?
更具体地说,AE所需的证书是否可以编写脚本 - 根据我的理解,此证书与CREATE CERTIFICATE命令创建的sql证书不同,需要导出为文件格式,如pfx才能被Azure访问网络应用。
此外,如果证书已过期,数据是否仍可加密/解密?
答案 0 :(得分: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
请注意,如果要在本地计算机商店位置创建证书,则需要在teh框中使用admin privielges,并且需要更改-sr参数。
我希望这会有所帮助。
答案 1 :(得分:0)
不,你不能延长其有效期。证书基本上是不可改变的。否则,检查有效性,维护撤销列表等会花费更多(实际上可能无法做到)......您可以轻松创建新证书来替换现有证书并设置新证书的到期日期。证明对你有用的东西。例如。
CREATE CERTIFICATE [FSAECMKCert] WITH SUBJECT = 'FS AE CMK Cert',
START_DATE = '12/02/2015', EXPIRY_DATE = '12/31/2037'
请注意,AE实际上并不尊重证书过期。否则许多用户最终将失去对自己数据的访问权限 - 大多数组织在续订/轮换方面做得不好。但是,拥有“合理的”到期策略和轮换/续订流程以维持所需/预期的安全级别是一种很好的通用做法。
答案 2 :(得分:0)
实际上,支持Always Encrypted的客户端驱动程序不会检查用作列主密钥的证书的过期日期(并且它们不验证证书链)。即使证书已过期,驱动程序也能够加密/解密数据。