6.7 证书和非对称密钥
在本书中一些不同的地方(包括本章的前面),我们提到过加密的概念。对于服务器体系结构的不同级别来说,证书和非对称密钥是定义加密密钥的主要的加密机制。这二者是完成相同的基本事情的不同方法,并且,它们在很大程度上是可互换的。无论使用的是证书还是非对称密钥,都需要记住,它们很像是你房间的钥匙——如果让所有人都拥有的话,则它们很快将失去自身的价值(现在,既然所有的人都能进来,那么,为什么要多此一举地把所有人锁在外面呢?)。
你可能想要在不同的加密密钥下分隔开若干不同的控制筒仓,基于这种打算,SQL Server在几个不同的级别支持密钥的概念。在每一个服务器安装中,SQL Server都维护有一个服务主密钥。它由Windows级别的服务主密钥加密。同样,每一个数据库都包含一个数据库主密钥,如果选择,它本身可以基于服务主密钥进行加密。然后,在每一个数据库中,可以定义证书和(或)非对称密钥(这二者都是某种形式的密钥)。总的来说,加密层次结构如图22-3所示:
图 22-3
6.7.1 证书
从SQL Server 2000开始,SQL Server拥有了它自己的证书颁发机构,或称CA。同样,也支持第三方的CA。CA颁发证书,颁发的证书中包含加密密钥,以及一些与证书有关的基本信息,如证书有效的时间范围(一个起始日期和一个到期日期)、证书持有者的名字、证书颁发机构的信息。使用CREATE CERTIFICATE命令把证书添加到服务器中。
6.7.2 非对称密钥
非对称密钥与证书的工作方式大体相同,但指定起来更加直接,并且,不由任何发行机构验证。与证书一样,指定加密密钥,然后利用加密密钥来加密敏感信息。使用CREATE ASYMMETRIC KEY命令把非对称密钥添加进来。