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

Azure sql database 提高始终加密证书的有效性,azure-sql-database,sql-server-2016,self-signed,always-encrypted,Azure Sql Database,Sql Server 2016,Self Signed,Always Encrypted,我正在使用SQL Server的“始终加密”功能,使用受自签名证书保护的主密钥加密数据库中的一些列。证书是使用SQL 2016的Management Studio创建的,并且始终默认为比颁发日期提前一年的到期日期-它存储在当前用户的Windows证书存储中 是否可以将本证书的有效期延长到一年以上 更具体地说,AE所需的证书是否可以编写脚本?据我所知,此证书不同于通过“创建证书”命令创建的sql证书,需要导出为类似pfx的文件格式,以便Azure web应用程序访问 此外,如果证书已过期,数据是否

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

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

更具体地说,AE所需的证书是否可以编写脚本?据我所知,此证书不同于通过“创建证书”命令创建的sql证书,需要导出为类似pfx的文件格式,以便Azure web应用程序访问


此外,如果证书已过期,数据是否仍然可以加密/解密?

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

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

请注意,AE实际上并不接受证书过期。否则,许多用户最终将无法访问自己的数据——大多数组织在续签/轮换方面做得不好。但是,一个好的通用做法是制定一个“合理”的过期策略和轮换/续订流程,以保持所需/预期的安全级别。

答案中包含的create certificate 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
请注意,如果要在本地计算机存储位置上创建证书,则需要在该框上设置管理员权限,并且需要更改-sr参数


我希望这会有所帮助。

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

感谢您的回复。如果我没有弄错的话,您正在讨论的createcertificate命令将创建一个sql证书,该证书可用于其他sql操作,如ServiceBroker/etc-但是,它不能用于AE.Perfect-这正是我所需要的。我能够使用MakeCert创建证书,然后在SQL Management Studio中引用该证书来创建一个ALwaysEncrypted证书。非常感谢你的帮助!