【问题标题】:SQL Server Always Encrypted - Certificate not found (ODBC)SQL Server Always Encrypted - 找不到证书 (ODBC)
【发布时间】:2018-08-14 02:42:05
【问题描述】:

我在尝试针对 SQL Server 2016 Always Encrypted 列测试旧版经典 ASP 应用程序时遇到问题。

这是一个 ASP 代码示例:

conn.ConnectionString = "Driver={ODBC Driver 13 for SQL Server};Server {myserver};UID=myuser;pwd=mypw;Database=test;ColumnEncryption=Enabled;"
conn.open

Dim sql
sql = "SELECT TOP 10 [text]  FROM TEST"

rs.open sql, conn

“文本”列已加密。当它执行时,我得到这个错误:

Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Certificate in key 
path 'CurrentUser/My/704F32193389CACD95E102DA881006F33936C6DE' not found.

我检查了证书存储,它就在那里:

Certificate Path Tab

如果我将驱动程序版本切换到 11,我会收到 type mismatch 错误,我认为这是因为 v11 不支持 Always Encrypted,所以忽略它。

任何帮助将不胜感激!

【问题讨论】:

  • 证书似乎安装在当前用户证书存储中,并且 ASP 应用程序在不同的帐户下运行。尝试按照in this documentation 的说明在本地机器存储中导入 CMK 证书,以便所有用户都可以使用它。
  • 我已导出证书(包括私钥)并将其导入本地计算机\个人\证书。仍然得到同样的错误。该错误消息似乎表明 ASP 正在当前用户存储中查找证书,但由于某种原因没有找到。
  • 能否请您添加一张带有活动证书路径选项卡的屏幕截图?
  • 添加在上面。谢谢

标签: sql-server odbc oledb always-encrypted sqlncli


【解决方案1】:

设法对其进行排序。原来问题与权限有关。

转到证书 - 本地计算机\个人\证书。右键单击证书,单击“管理私钥”。授予“所有人”的完全访问权限。

这修复了它,尽管显然在生产中您应该授予 IIS AppPool 用户访问权限,而不是“所有人”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-11
    • 2017-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-25
    • 2018-07-13
    • 1970-01-01
    相关资源
    最近更新 更多