2015-10-21 81 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

謝謝你的評論拉里,讚賞和承認。儘管如此,由於我現在花了整整三天的時間來尋找解決這個問題的辦法,所以我覺得提供一個答案是很有價值的,這個答案表明目前還沒有解決這個問題的辦法。這可能會使後續用戶無法像我一樣通過相同的操作。 –