none
SQL Server 2005/2008的加密機制 RRS feed

  • 問題

  • SQL Server 2005/2008, 在未有Certificate的情況下, SQL Server 2005/2008會自動生成一個Certificate, 並且在遠端登入時針對連線加密.

     

    然而, 在眾多的說明文件中, 卻沒有提及自動生成的Certificate, 它的key存放的位置. 以下是查詢了些文件的部份內容.

     

    ################################################################

    在下列的文章中, 可以查詢到SQL Server在未載入Certificate時自動生成一個Certificate.

    http://msdn.microsoft.com/en-us/library/ms189067(v=SQL.90).aspx

    http://msdn.microsoft.com/en-us/library/ms189067(v=SQL.100).aspx

     

    Credentials (in the login packet) that are transmitted when a client application connects to SQL Server are always encrypted. SQL Server will use a certificate from a trusted certification authority if available. If a trusted certificate is not installed, SQL Server will generate a self-signed certificate when the instance is started, and use the self-signed certificate to encrypt the credentials. This self-signed certificate helps increase security but it does not provide protection against identity spoofing by the server. If the self-signed certificate is used, and the value of the ForceEncryption option is set to Yes, all data transmitted across a network between SQL Server and the client application will be encrypted using the self-signed certificate

     

    而在微软亚太区数据库技术支持组 官方博客中, 也提到相同的說明.

    http://space.itpub.net/25175503/viewspace-704832

     

    联机丛书上所说的SQL Server会自动加密连接就是指的这个阶段。这个阶段开始于客户端和SQL ServerTCP/IP协议栈的三次握手,止于客户端成功登陆SQL Server。从SQL Server 2005开始,这个阶段永远是加密的。

    那么SQL Server是使用什么密钥来对连接加密的呢?默认情况下SQL Server会自动生成一个证书并使用这个证书来对连接做SSL加密。

    大家可能会在SQL ServerError log的开头部分看到这么一段话:

     

    A self-generated certificate was successfully loaded for encryption

     

    这段话就表明了SQL Server在启动的时候自动加载了自动生成的证书并且使用这个证书来加密。

    ################################################################

     

     

    那麼, SQL Server 2005/2008自動生成的Certificate, 存放的位置在哪裡呢?

     

    2011年8月22日 上午 09:10

解答

所有回覆