2015-10-21 92 views
7

连接到需要SSL的AWS Postgres数据库时收到以下错误。我最近从npgsql 2.3.2(这是buggy)升级到不能连接的3.0.3。任何建议,将不胜感激。Power BI Desktop中的Npgsql 3.0.3错误

DataSource.Error: TlsClientStream.ClientAlertException: CertificateUnknown: Server certificate was not accepted. Chain status: A certificate chain could not be built to a trusted root authority. . at TlsClientStream.TlsClientStream.ParseCertificateMessage(Byte[] buf, Int32& pos) at TlsClientStream.TlsClientStream.TraverseHandshakeMessages() at TlsClientStream.TlsClientStream.GetInitialHandshakeMessages(Boolean allowApplicationData) at TlsClientStream.TlsClientStream.PerformInitialHandshake(String hostName, X509CertificateCollection clientCertificates, RemoteCertificateValidationCallback remoteCertificateValidationCallback, Boolean checkCertificateRevocation) Details: DataSourceKind=PostgreSQL

回答

6

我能够通过在我的计算机上安装Amazon RDS公共证书来解决此问题。一旦我做到了,我就能够连接。

我的步骤如下:

  1. 下载AWS RDS公证书1
  2. 创建一个从下载的.PEM文件.crt文件。示例指令 此处2
  3. 在机器上安装证书(.crt文件)。 3
  4. 连接!
+1

我已经执行了所有这3个步骤,但仍然没有连接。错误依然存在。可能的原因是什么? – Luv33preet

2

Npgsql 2.x在默认情况下未对服务器的证书执行验证,因此自签名证书被接受。新的默认值是执行验证,这可能是您的连接失败的原因。指定信任服务器证书连接字符串参数以取回先前的行为。

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

+0

这非常有帮助。不幸的是,Power BI Desktop不允许直接编辑连接字符串。我会将此问题报告给Microsoft以解决问题。 –

+0

同样,我对Power BI一无所知,但请注意,新的“信任服务器证书”参数是SqlClient支持的“标准”参数。应该有办法让您以某种方式访问​​连接字符串... –

+0

Jon Capezzuto,您是否收到来自Microsoft的任何回复? – user541905

3

我在将PowerBI连接到本地托管的PostgreSQL服务器时遇到了同样的问题,如果能够获得正确的信息,它很容易解决。如果最近的Npgsql版本信任服务器的证书,则它们只能通过SSL连接。作为Windows应用程序,PowerBI使用Windows证书存储来决定要信任的内容。如果您可以获得PostgreSQL服务器的SSL证书(或用于签署该证书的CA证书),则请告诉Windows相信该证书,PowerBI也会信任该证书。

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

一旦您导入证书并使用相同的服务器名称连接PowerBI(因此证书与连接相匹配),请查看服务器名称。这解决了我的问题。如果PostgreSQL被配置为坚持一个SSL连接,您可能也需要为ODBC连接执行相同的操作。

+0

如何导入excel中的postgresql证书? – Luv33preet

+0

开始>运行> mmc.exe。 文件>添加/删除管理单元; 独立选项卡>添加; 证书管理单元>单击添加; 向导>计算机帐户>本地计算机>完成。 关闭对话框。 导航到证书(本地计算机)。 如果您拥有服务器本身的证书,请选择其他人员。 右键单击商店并选择“所有任务” - >“导入”。 按照向导提供您拥有的证书文件; –

+0

实际上我已经完成了导入,但是我一直收到与证书中没有包含服务器名称相同的错误 – Luv33preet

0

它不是最好的方式,但为我工作,因为如果你不需要加密的安全原因。

转到您的数据库服务器上的Postgres的配置文件,然后去从

SSL =真

SSL =假

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

然后它会工作

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

问候,

Davlik

+1

WARNING在这里不能强调得足够强。 –

4

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

我可以看到解决这个问题的两种方法。来自npgsql的Shay & co(为btw做了出色的工作)为用户提供了一些方法来更改connection string parameters的默认设置。或者,Microsoft允许用户在Power BI(和Excel)的连接对话框中发送关键字。

+2

谢谢你的评论拉里,赞赏和承认。尽管如此,由于我现在花了整整三天的时间来寻找解决这个问题的办法,所以我觉得提供一个答案是很有价值的,这个答案表明目前还没有解决这个问题的办法。这可能会使后续用户无法像我一样通过相同的操作。 –