【问题标题】:Increase validity of Always Encrypted Certificate增加始终加密证书的有效性
【发布时间】:2015-12-02 16:11:09
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: azure-sql-database sql-server-2016 self-signed always-encrypted


    【解决方案1】:

    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
    

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

    我希望这会有所帮助。

    【讨论】:

    • 完美——这正是我所需要的。我能够使用 MakeCert 创建证书,然后在 SQL Management Studio 中引用该证书以创建 ALwaysEncrypted 证书。非常感谢您的帮助!
    【解决方案2】:

    不,您不能延长其有效期。证书基本上是不可变的。否则,检查有效性、维护吊销列表等会更加昂贵(实际上可能无法做到)......您可以轻松创建一个新证书来替换现有证书并设置新证书的到期时间证明对您有用的任何东西。例如。

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

    请注意,AE 实际上并不尊重证书到期。否则,很多用户最终将失去对自己数据的访问权限——大多数组织在续订/轮换方面做得不好。但是,制定“合理的”到期政策和轮换/续订流程以维持所需/预期的安全级别是一种很好的一般做法。

    【讨论】:

    • 感谢您的回复。如果我没记错的话,您所说的 create certificate 命令将创建一个 sql 证书,该证书可用于其他 sql 操作,例如 service broker/etc - 但是,它不能用于 AE。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2019-08-04
      • 1970-01-01
      • 2019-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-14
      • 2012-05-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多