我在Windows10上安装了Power和PostgreSQL 11,在Ubuntu18.10Linux上安装了我的主PostgreSQL 11数据库。我将postgresql.conf和pg_hba.conf文件正确地编辑到IP上,我的Windows 10计算机使用PostgreSQL 11和Power连接到PostgreSQL 11 Ubuntu数据库。但是,当我可以通过命令行手动连接时,在Power中出现了错误。
在使用Microsoft支持进行故障排除后,有人告诉我:
这表示Postgresql服务器没有配置其证书,因此无法连接到PowerBI。若要允许客户端验证服务器的身份,请在客户端上放置根证书,并在服务器上放置由根证书签名的叶证书。若要允许服务器验证客户端的身份,请在服务器上放置根证书,并在客户端上放置由根证书签名的叶证书。可以使用一个或多个中间证书(通常与叶证书一起存储)。
然而,我对以下教程感到困惑:
我收到的错误消息是:
"ConnectionId":"bcfc620b-0fda-4db9-bda6-d9ac4aabcc4c",“异常”:“异常:\r\n异常类型: System.Security.Authentication.AuthenticationException,系统、Version=4.0.0.0、Culture=neutral、PublicKeyToken=b77a5c561934e089\r\nMessage:根据验证过程,远程证书无效。\r\nStackTrace:\n在System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken消息,AsyncProtocolRequest asyncRequest,异常异常)\r\n在System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken消息中,\r\n在System.Net.Security.SslState.ProcessReceivedBlob(Byte[]缓冲区,Int32计数,AsyncProtocolRequest asyncRequest)\r\n在System.Net.Security.SslState.StartReceiveBlob(Byte[]缓冲区,AsyncProtocolRequest asyncRequest)\r\n在System.Net.Security.SslState.CheckCompletionBef
和
详细信息:“从提供程序读取数据时发生错误:”根据验证过程,远程证书无效“。
和
详细信息:"Microsoft :成功地与服务器建立了连接,但是在登录前握手时发生了一个错误。(提供者: TCP提供程序,错误:0-一个现有连接被远程主机强制关闭)。“
我不知道在我的Ubuntu PC上需要做什么步骤,在我的Windows PC上需要做什么步骤。我不知道是否需要特殊步骤来配置带有证书的Power。如何设置双向证书?
有人能提供一个非常详细的教程,告诉我如何阅读一个教程,或解释在一个答案中的步骤?
发布于 2019-04-23 21:12:57
我相信PowerBI使用npgsql进行连接,它默认为libpq/psql在“PGSSLMODE=verify”下给出的行为。如果您使用“PGSSLMODE=verify”,可以从Windows连接到服务器吗?
您所链接的教程假设您对证书颁发机构和数据库服务器使用相同的计算机,这可能对您有用。但它也假设客户端机器是debian/ubuntu,而不是Windows。因此,在您的ubuntu计算机上“配置客户端”之前,您将完成所有操作。但是您可能已经这样做了,基于您正在获得的错误消息。
在Windows机器上“配置客户机”之后,您将不得不做所有事情,但您必须使用Windows机制,而不是linux机制。如何做到这一点是一个如何设置基础设施的问题--您需要某种方式将文件ca-cert.pem从cert权限复制到Windows机器,但这种机制可以是scp (如果您已经在Windows上安装了该机制,也许是通过cygwin安装)或CIFS安装,或者只需将.pem文件的文本从putty中复制出来并粘贴到记事本中,或者使用一个拇指驱动器。
请注意,本教程用于双向使用证书--客户端验证服务器标识,服务器也验证客户端。但是很少有人真正使用客户证书--他们通常只使用服务器证书。如果您没有使用客户端证书,那么您只需要在客户机上安装一个cert,即"ca-cert.pem“文件(在客户端上安装时应该命名为"root.crt”)。另外两个只用于客户证书。在Windows上,它需要安装的路径是%APPDATA%\postgresql\root.crt,而不是~/..postgresql/root.crt。
发布于 2021-09-06 16:00:21
初学者提出的谦逊的建议。
我建议从Windows上的pgAdmin开始,以了解您在这里是否犯了基本错误。
安装pgAdmin的最新版本。
然后创建一个新服务器(=一个新连接):
并一步一步地加载证书。ca-cert.pem
可能是“根证书”。这里我用的是Require
而不是Verify-Full
。
如果这是可行的,它也应该工作在电源BI前端-与一些耐心。试着模仿你在pgAdmin中所做的事情。
幸运的是,在Windows上的pgAdmin中这样做也足够解除Windows上的Power,而不必在Power中加载证书。至少在Linux上,我注意到每次查询PostgreSQL时都不需要验证与证书的连接。似乎只有经过较长时间的核查才需要核查。它是同一台服务器,您在pgAdmin中更改的内容也可以在Power中使用,也许证书是在Windows内部(系统范围内)加载的。
https://dba.stackexchange.com/questions/235426
复制相似问题