Power BI Desktop出现Npgsql 3.0.3错误

时间:2015-10-21 02:11:30

标签: postgresql ssl npgsql powerbi

连接到需要SSL的AWS Postgres数据库时,我收到以下错误。我最近从npgsql 2.3.2(有缺陷)升级到3.0.3,它不会连接。任何建议将不胜感激。

  

DataSource.Error:TlsClientStream.ClientAlertException:   CertificateUnknown:不接受服务器证书。连锁状态:   无法将证书链构建到受信任的根颁发机构。 。   在TlsClientStream.TlsClientStream.ParseCertificateMessage(Byte [] buf,   INT32和放大器; pos)at   TlsClientStream.TlsClientStream.TraverseHandshakeMessages()at   TlsClientStream.TlsClientStream.GetInitialHandshakeMessages(布尔   allowApplicationData)at   TlsClientStream.TlsClientStream.PerformInitialHandshake(字符串   hostName,X509CertificateCollection clientCertificates,   RemoteCertificateValidationCallback   remoteCertificateValidationCallback,Boolean   checkCertificateRevocation)详细信息:       DataSourceKind = PostgreSQL的

5 个答案:

答案 0 :(得分:7)

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

我遵循的步骤:

  1. 下载AWS RDS公共证书1
  2. 从下载的.pem文件创建.crt文件。样品说明 这里2
  3. 在计算机上安装证书(.crt文件)。 3
  4. 连接<!/ LI>

答案 1 :(得分:5)

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

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

答案 2 :(得分:3)

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

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

答案 3 :(得分: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连接执行相同的操作。

答案 4 :(得分:0)

这不是最好的方式,但是对我来说很有用,因为如果出于安全原因你不需要加密。

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

转到

ssl = true

ssl = false

然后打开你的电源bi桌面文件 - &gt;选项和设置 - &gt;数据源设置 - &gt;然后在全局中你将保存你的连接按编辑权限并取消选中“ENCRYPT CONNECTIONS”

然后它会起作用

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

此致

Davlik