如何授予SQL Server读取我的SSL密钥的权限?
我最近建立了一个自签名的证书和SQL Server 2014打开加密的:如何授予SQL Server读取我的SSL密钥的权限?
的问题是,现在的SQL Server服务将无法启动:
This article从2010年将问题标识为权限问题:SQL Server服务没有必要的权限来读取SSL证书的私钥。
的问题是,我被困在文章中提出的解决方案的步骤4:
没有组或用户名称相匹配的拟议格式,当我打开所示的窗口文章。
是否有另一种方法可以确定SQL Server服务运行的帐户,以便我可以授予它读取SSL证书的权限?
一个完全不同的解决方案也是受欢迎的。
如果您指定了应由SQL Server用于TLS的证书,则SQL Server Windows服务必须读取证书和私钥(来自文件夹%ProgramData%\Microsoft\Crypto\RSA\MachineKeys
的文件),该证书对应证书。问题是:SQL Server配置管理器不舒服,并且它并不是所有需要的工作。
因此,首先应该本地化SQL Server使用的帐户。应该启动services.msc
,找到SQL Server服务的帐户。一般来说,这是一个内置的帐户样Local System
,Network Service
本地或域帐户一样.\SQLServer
,DOMAIN\SQLServerAccount
或类似NT Service\NT Service\MSSQL$SQL2012
下面的图片的服务帐户:
要在私钥帐户授予权限可以使用mmc的证书管理单元。可以启动mms.exe
,在“文件”菜单中选择“添加/删除管理单元”,选择“证书”管理单元并选择本地计算机的“计算机帐户”。然后应选择个人商店的SSL证书,然后使用上下文菜单“管理私钥...”。
,并添加帐户像NT Service\NT Service\MSSQL$SQL2012
,上述发现,并设置“读取”权限的私钥对账:
如果你想建立连接到域内的SQL服务器(客户端和服务器都必须属于同一Active Directory或通过信任连接的目录),那么应该为SQL服务器创建SPN。如果我正确理解您的要求,您希望允许通过HTTPS删除连接到SQL Server。一要积极混合的安全性,以便能够通过SQL Server身份验证连接到服务器:
创建SQL登录后,使所有上述改变并重新启动SQL Server服务将能够建立TLS(加密)连接到SQL服务器。在尝试通过Windows帐户连接,而无需创建SPN以前一个得到错误的情况下:
A connection was successfully established with the server, but then an error occurred during the login process. (provider: SSL Provider, error: 0 - The target principal name is incorrect.) (Microsoft SQL Server, Error: -2146893022)
The target principal name is incorrect
如果一个忘记更改Windows身份验证混合身份验证(),那么一个会得到错误,如
Login failed for user 'OlegKi'. (Microsoft SQL Server, Error: 18456)
如果做一个所有上述步骤可以建立TLS连接到ction使用SQL Management Studio中的例子,但人们仍然不得不选择一些选项:
每个人都应该检查 “加密连接”
,并设置附加的连接属性TrustServerCertificate=true
通常一个使用Encrypt=true;TrustServerCertificate=true;
作为建立连接的应用程序中连接字符串的一部分离子到SQL服务器。我们通过上述的“加密连接”复选框设置Encrypt=true
属性。有关属性的含义和选项的不同组合,可以在the MSDN article的“启用加密”部分中阅读。
如果一个人做所有上述步骤,并选中“加密连接”没有设定TrustServerCertificate=true
属性,则一个将得到错误:
A connection was successfully established with the server, but then an error occurred during the login process. (provider: SSL Provider, error: 0 - The target principal name is incorrect.) (Microsoft SQL Server, Error: -2146893022)
The target principal name is incorrect
,我已经在一个小的另一种情况如上所述(与Windows帐户连接)。
我描述了上述所有步骤,因为TLS连接到服务器的配置真的不是那么容易,而且可以得到奇怪的错误,直接描述没有直接提示如何解决问题。
您用于SQL Server Windows服务的帐户?我想你有问题可以在'c:\ ProgramData \ Microsoft \ Crypto \ RSA \ MachineKeys'中访问证书的私钥。您可以打开MMC,添加证书管理单元,选择计算机,在个人中查找SQL Server证书,选择证书并选择“管理私钥”上下文菜单。之后,您应该授予您用于运行SQL Server的帐户的权限。 – Oleg
我忘记提及该帐户的读取权限应该足够。 – Oleg
如何查找我用于SQL Server服务的帐户? – Jonah