关于azure sql数据库:提高Always Encrypted Certificate的有效性

Increase validity of Always Encrypted Certificate

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

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

更具体地说,可以编写AE所需的证书的脚本吗?据我所知,该证书不同于由create certificate命令创建的SQL证书,需要导出为文件格式(如pfx),以供Azure Web应用程序访问。

另外,如果证书过期,数据还能被加密/解密吗?


答案中包含sqlmojoe的create certificate sql语句不用于AE。

您可以使用脚本(批处理)以编程方式创建证书,并调用makecert,例如:

1
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框上具有管理员权限,并且需要更改-sr参数。

我希望这有帮助。


实际上,支持始终加密的客户端驱动程序不检查用作列主密钥的证书的到期日期(也不验证证书链)。即使证书已经过期,驱动程序也能够加密/解密数据。


不,您不能延长它的有效期。证书基本上是不可变的。否则,检查有效性、维护吊销列表等会花费很多(实际上可能不可能做到这一点)。您可以轻松地创建一个新证书来替换现有的证书,并将新证书的过期时间设置为对您有效的任何证书。例如。

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

请注意,客户销售人员实际上并不认可证书过期。否则,许多用户最终将失去对自己数据的访问权——大多数组织在更新/轮岗方面做得不好。但是,有一个"合理"的到期政策和轮换/更新过程来保持所需/预期的安全水平是一个良好的一般做法。