SQL 加密 - 为什么主密钥会自动引用证书?

SQL Encryption - Why does the Master Key automatically refer to the Certificate?

我最近才接触到 MS SQL 加密,我在其中使用了主密钥、证书和对称密钥。 当我试图解密它时,我很难以正确的顺序打开密钥。 基本上我写了这样的东西:

OPEN MASTER KEY BY PASSWORD ('Password')

OPEN CERTIFICATE BY MASTER KEY

OPEN SYMMETRIC KEY SSN_01 BY CERTIFICATE

这显然行不通,不,这不是我写的,只是为了让您了解我所做的事情。现在我终于想通了,我只需要打开Master Key,然后通过Certificate打开Symmetric Key。我的问题是为什么? 为什么主密钥和证书会自动链接?

这样想:一旦你打开了主密钥,当你去打开对称密钥时,SQL服务器会说"Hmm… the certificate that protects that is locked. Do I have the means to unlock it?"。而且,果然如此!假设证书的私钥是用数据库主密钥加密的,当然您可以检查 sys.key_encryptions 以查看什么 encrypts/protects 什么和 sys.openkeys 以查看您在此会话中打开了哪些密钥。