从证书创建登录的目的是什么?

时间:2014-05-14 15:20:43

标签: sql-server authentication ssl-certificate client-certificates

SQL Server提供了从证书创建登录的选项。 E.g。

USE MASTER;
CREATE CERTIFICATE <certificateName>
    WITH SUBJECT = '<loginName> certificate in master database',
    EXPIRY_DATE = '12/05/2025';
GO
CREATE LOGIN <loginName> FROM CERTIFICATE <certificateName>;
GO

然而,documentation州(强调我的):

  

根据证书或非对称密钥创建的登录仅用于代码签名。 它们不能用于连接SQL Server 。只有在master中已存在证书或非对称密钥时,才能从证书或非对称密钥创建登录。

创建不能用于连接服务器的登录有什么意义?


背景

我们需要对中间层应用程序进行一些安全性更改。特别是它如何连接到它的数据库。 权力规定:&#34;我们不能使用Windows身份验证&#34;。
我知道这通常是首选方法,但有权访问中间层服务器的任何人都可以访问与应用程序相同的数据库。

如果我们使用SQL身份验证,我们需要:

  • 加密密码。
  • 将其存储在配置文件/注册表中。
  • 然后在应用程序需要连接到数据库时解密密码。

虽然以上是可能的,但我有点希望:

  • 我可以使用基于证书的登录。
  • 在构建过程中将证书与应用程序相关联。
  • 并使用它连接到SQL Server。

上述文件摘录似乎与此相矛盾。

2 个答案:

答案 0 :(得分:5)

它用于对SQL Server数据库对象进行代码签名。此处详细说明了CREATE LOGIN x FROM CERTIFICATE y以及SQL Server 2008和2008 R2的示例和方案:http://technet.microsoft.com/en-us/library/ms345102(v=sql.105).aspx

以下是在SQL Server 2014中签署存储过程的一个很好的示例:http://technet.microsoft.com/en-us/library/bb283630.aspx

答案 1 :(得分:0)

如果无法使用 Windows 身份验证,您可以使用 SQL 登录对中间层服务器中的配置进行加密:

https://docs.microsoft.com/en-us/previous-versions/aspnet/zhhddkxy(v=vs.100)