无法复制从 SQL 服务器中创建的安全证书文件

Cannot copy a security certificate file created from within SQL Server

我正在尝试让 SQL Server Service Broker 跨数据库实例工作,并处于复制证书阶段(从发起者到目标,反之亦然)。我可以将证书备份到一个文件,但一旦创建,我就无法打开该文件或将其复制到任何其他位置。如果我尝试打开该文件,我会看到一个消息框,标题为 "Invalid Public Key Security Object File",消息为 "Access is denied.".

服务器在本地域内,并且是 运行 Windows Server 2008 R2 Enterprise with SP1。

这有效(但我无法对该文件执行任何操作):

BACKUP CERTIFICATE UserCertificateB TO FILE='C:\Certs\UserCertificateB.cer';

这行不通:

BACKUP CERTIFICATE UserCertificateB TO FILE='\localmachine\Certs\UserCertificateB.cer';

错误信息是:

消息 15240,级别 16,状态 1,第 2 行 无法写入文件“\localmachine\Certs\UserCertificateB.cer”。请验证您是否具有写入权限、文件路径是否有效以及文件是否不存在。

I can back up the certificate to a file but once created I can't open the file or copy it to any other location.

是的,访问仅限于 SQL 服务器服务帐户。使用管理帐户授予文件适当的权限。使用 icacls.

Cannot write into file '\localmachine\Certs...'

您正在做 'double hop',因此需要 Kerberos constrained delegation。请联系您的网络管理员为您正确设置。

我知道这是一个老问题,但也许这个答案与其他可能发现相同问题的人相关。

如果显示错误‘Msg 15240, Level 16, State 1, Line 8 无法写入文件 'C:\tmp\cert\MY_TDE_CERT_KEY.PVK'。 验证您是否具有写入权限、文件路径是否有效以及文件是否不存在。’

这是因为脚本必须在服务器上执行,而不是连接到服务器的本地计算机。

一旦 SQL 脚本在服务器中执行,文件将出现在服务器中选定的文件夹中(必须创建一个本地目录)。

错误(图中是本地电脑的路径,是错误的路径,必须在服务器中):

在服务器中执行后

Microsoft 中了解到: “路径是相对于 SQL 服务器实例的。路径需要在托管实例的机器上设置。”