Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql Power BI桌面出现Npgsql 3.0.3错误_Postgresql_Ssl_Npgsql_Powerbi - Fatal编程技术网

Postgresql Power BI桌面出现Npgsql 3.0.3错误

Postgresql Power BI桌面出现Npgsql 3.0.3错误,postgresql,ssl,npgsql,powerbi,Postgresql,Ssl,Npgsql,Powerbi,我在连接到需要SSL的AWS Postgres数据库时收到以下错误。我最近从npgsql 2.3.2(有bug)升级到了3.0.3(无法连接)。如有任何建议,将不胜感激 DataSource.错误:TlsClientStream.ClientAlertException: CertificateUnknown:未接受服务器证书。链状态: 无法将证书链构建到受信任的根颁发机构。 在TlsClientStream.TlsClientStream.ParseCertificateMessage(字节[

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

DataSource.错误:TlsClientStream.ClientAlertException: CertificateUnknown:未接受服务器证书。链状态: 无法将证书链构建到受信任的根颁发机构。 在TlsClientStream.TlsClientStream.ParseCertificateMessage(字节[]buf, Int32和pos)在 TlsClientStream.TlsClientStream.TraverseHandshakeMessages()位于 TlsClientStream.TlsClientStream.GetInitialHandshakeMessages(布尔值 允许应用数据)在 TlsClientStream.TlsClientStream.performinialhandshake(字符串 主机名,X509CertificateCollection客户端证书, RemoteCertificateValidationCallback remoteCertificateValidationCallback,布尔型 检查证书(职业)详细信息: DataSourceKind=PostgreSQL


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


您可以在上阅读更多内容,请注意,我们的中也提到了此更改。

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

在PostgreSQL server的配置文件夹中有一个PostgreSQL.conf文件,在其中搜索ssl设置,其中有一个带有ssl证书的位置。请注意,不是包含私钥的密钥文件,而是包含公钥的证书文件。将其或其内容复制到运行PowerBI的机器上,并使用Run | mmc | Add Plugin导入。。。证书(谷歌it)


导入证书并使用相同的服务器名称从PowerBI连接后,请查看服务器名称(以便证书与连接匹配)。这为我解决了问题。如果将PostgreSQL配置为坚持SSL连接,您可能也必须对ODBC连接执行同样的操作。

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

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

ssl=true

ssl=false

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

那就行了

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

问候,

Davlik

中的文档给出了将连接字符串中的默认信任服务器证书“false”更改为“true”的解决方案。 不幸的是,Excel(AFAIK)和Power BI都不允许您编辑连接字符串。因此,如果您无法从DB管理员处获得SSL证书(如中所建议的),或者SSL证书的服务器名称与您连接的名称不同(在我的示例中是IP地址),那么就没有什么可以做的了


我有两种方法可以解决这个问题。npgsql的Shay&co(顺便说一句,他们做得很好)为用户提供了一些方法来更改系统的默认设置。或者Microsoft允许用户在Power BI(和Excel)的连接对话框中发送关键字

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

我遵循的步骤:

  • 下载AWS RDS公共证书
  • 从下载的.pem文件创建.crt文件。示例说明 这里
  • 在计算机上安装证书(.crt文件)
  • 连接
    这很有帮助。不幸的是,Power BI Desktop不允许直接编辑连接字符串。我会将此问题报告给Microsoft解决。同样,我对Power BI一无所知,但请注意,新的“Trust Server Certificate”参数是一个“标准”参数,在SqlClient中受支持。应该有一种方法可以让你以某种方式访问连接字符串…Jon Capezuto,你收到Microsoft的任何回复了吗?感谢Larry的评论,表示感谢和感谢。尽管如此,由于我现在花了整整三天的时间来寻找这个问题的解决方案,但都是徒劳的,因此我觉得有必要提供一个答案,说明目前这个问题没有解决方案。它可能会避免后续用户像我一样经历同样的过程。警告在这里强调得不够强烈。它很有效,不管怎样,对于内部开发,我都可以继续进行,感谢您的大力帮助。如何在excel中导入postgresql证书?开始>运行>mmc.exe。文件>添加/删除管理单元;独立选项卡>添加;证书管理单元>单击添加;向导>计算机帐户>本地计算机>完成。关闭对话框。导航到证书(本地计算机)。如果您拥有服务器本身的证书,请选择其他人。右键单击存储并选择所有任务-->导入。按照向导操作并提供您拥有的证书文件;事实上,我已经完成了导入,但我一直得到相同的错误描述,服务器名称不包含在证书中。我已经执行了所有这3个步骤,但它仍然没有连接。错误依然存在。可能的原因是什么?