【问题标题】:Npgsql 3.0.3 error with Power BI DesktopPower BI Desktop 出现 Npgsql 3.0.3 错误
【发布时间】:2016-01-19 21:20:59
【问题描述】:

我在连接到需要 SSL 的 AWS Postgres 数据库时收到以下错误。我最近从 npgsql 2.3.2 (这是错误的)升级到 3.0.3 将无法连接。任何建议将不胜感激。

DataSource.Error:TlsClientStream.ClientAlertException: CertificateUnknown:不接受服务器证书。连锁状态: 无法将证书链构建到受信任的根颁发机构。 . 在 TlsClientStream.TlsClientStream.ParseCertificateMessage(Byte[] buf, Int32& pos) 在 TlsClientStream.TlsClientStream.TraverseHandshakeMessages() 在 TlsClientStream.TlsClientStream.GetInitialHandshakeMessages(布尔值 允许应用程序数据)在 TlsClientStream.TlsClientStream.PerformInitialHandshake(字符串 主机名,X509CertificateCollection 客户端证书, 远程证书验证回调 remoteCertificateValidationCallback,布尔值 checkCertificateRevocation) 详细信息: DataSourceKind=PostgreSQL

【问题讨论】:

    标签: postgresql ssl npgsql powerbi


    【解决方案1】:

    Npgsql 2.x 默认不对服务器的证书进行验证,所以接受自签名证书。新的默认设置是执行验证,这可能是连接失败的原因。指定信任服务器证书连接字符串参数以恢复以前的行为。

    您可以在Npgsql security doc page 上阅读更多信息,另请注意,我们的migration notes 中提到了此更改。

    【讨论】:

    • 这很有帮助。不幸的是,Power BI Desktop 不允许直接编辑连接字符串。我会将此问题报告给 Microsoft 以寻求解决。
    • 再说一次,我对 Power BI 一无所知,但请注意,新的“信任服务器证书”参数是“标准”参数,在 SqlClient 中受支持。应该有一种方法可以让您以某种方式访问​​连接字符串...
    • Jon Capezzuto,您收到 Microsoft 的回复了吗?
    【解决方案2】:

    我在将 PowerBI 连接到本地托管的 PostgreSQL 服务器时遇到了同样的问题,如果您能获得正确的信息,结果证明很容易解决。最近的 Npgsql 版本只有在信任服务器证书的情况下才会通过 SSL 连接。作为一个 Windows 应用程序,PowerBI 使用 Windows 证书存储来决定信任什么。如果您可以获得 PostgreSQL 服务器的 SSL 证书(或用于签署该证书的 CA 证书),然后告诉 Windows 信任该证书,PowerBI 也会信任它。

    在 PostgreSQL 服务器的配置文件夹中有一个 postgresql.conf 文件,在其中搜索 ssl 设置,有一个带有 ssl 证书位置的文件。注意不是包含私钥的密钥文件,只有包含公钥的证书文件。将其或其内容复制到运行 PowerBI 的机器上,然后使用 Run | 导入。 MMC |添加插件...证书(谷歌搜索)

    导入证书后查看服务器名称,并使用相同的服务器名称从 PowerBI 进行连接(因此证书与连接匹配)。这为我解决了问题。如果 PostgreSQL 被配置为坚持 SSL 连接,您可能也必须为 ODBC 连接做同样的事情。

    【讨论】:

    • 如何在excel中导入postgresql证书?
    • 开始 > 运行 > mmc.exe。文件 > 添加/删除管理单元;独立选项卡 > 添加;证书管理单元 > 单击添加;向导 > 计算机帐户 > 本地计算机 > 完成。关闭对话框。导航到证书(本地计算机)。如果您有服务器本身的证书,请选择其他人。右键单击商店并选择所有任务 --> 导入。按照向导并提供您拥有的证书文件;
    • 实际上我已经完成了该导入,但我一直收到相同的错误,说明服务器名称未包含在证书中
    【解决方案3】:

    这不是最好的方法,但对我有用,因为如果您出于安全原因不需要加密。

    转到您的数据库服务器上的 Postgres 配置文件并从

    ssl = 真

    ssl = 假

    然后打开您的power bi桌面文件->选项和设置->数据源设置->然后在全局中您将保存您的连接按编辑权限并取消选中“加密连接”

    然后就可以了

    警告:如果您的数据库是公开的,则不建议这样做。

    问候,

    戴夫利克

    【讨论】:

    • 警告在这里强调的不够强烈。
    • 它工作的人,反正对于内部开发我会非常好的继续,感谢您的大力帮助。
    【解决方案4】:

    npgsql 的文档给出了解决方案,将连接字符串中的默认 信任服务器证书 'false' 更改为 'true'。 不幸的是,Excel (AFAIK) 和 Power BI 都不允许您编辑连接字符串。因此,如果您无法从数据库管理员那里获得 SSL 证书(如 another answer 中所建议的那样),或者 SSL 证书的服务器名称与您连接的名称不同(在我的情况下是 IP 地址),则没有可以做很多事情。

    我可以看到两种解决方法。来自 npgsql 的 Shay & co(顺便说一句,他们做得很好)为用户提供了一些方法来更改 connection string parameters 的默认设置。或者微软允许用户在 Power BI(和 Excel)的连接对话框中发送关键字。

    【讨论】:

    • 感谢拉里的评论,感谢并承认。尽管如此,由于我现在花了整整三天多的时间来寻找这个问题的解决方案,但我觉得提供一个说明目前没有解决这个问题的答案是很有价值的。它可能会使后续用户免于经历与我相同的情况。
    【解决方案5】:

    我能够通过在我的机器上安装 Amazon RDS 公有证书来解决此问题。完成此操作后,我就可以连接了。

    我遵循的步骤:

    1. 下载AWS RDS公有证书1
    2. 从下载的 .pem 文件创建一个 .crt 文件。示例说明 这里2
    3. 在机器上安装证书(.crt 文件)。 3
    4. 连接!

    【讨论】:

    • 我已经执行了所有这 3 个步骤,但仍然无法连接。错误仍然存​​在。可能的原因是什么?
    猜你喜欢
    • 2016-06-06
    • 1970-01-01
    • 2017-02-07
    • 1970-01-01
    • 2019-09-15
    • 2021-02-04
    • 2018-12-27
    • 2021-10-20
    • 1970-01-01
    相关资源
    最近更新 更多