2015-10-21 12 views
7

SSLが必要なAWS Postgresデータベースに接続する際に次のエラーが発生します。私は最近、npgsql 2.3.2(バグだった)から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. は、ダウンロードの.pemファイルから.CRTファイルを作成しますAWS RDSのパブリック証明書1
  2. をダウンロードしてください。サンプル指示 ここをクリック2
  3. 証明書(.crtファイル)をマシンにインストールします。 3
  4. Connect!
+1

私はこれらの3つのステップをすべて実行しましたが、まだ接続していません。エラーは持続します。考えられる原因は何か? – Luv33preet

2

Npgsql 2.xは、デフォルトでサーバーの証明書で検証を実行しなかったため、自己署名証明書が受け入れられました。新しいデフォルトは検証を実行することです。これはおそらくあなたの接続が失敗している理由です。以前の動作を取り戻すには、Trust Server Certificate接続文字列パラメータを指定します。

この変更はmigration notesに記載されていますので、Npgsql security doc pageで詳しく読むことができます。

+0

これは非常に役に立ちます。残念ながら、Power BI Desktopでは接続文字列を直接編集することはできません。この問題を解決するためにMicrosoftに報告します。 –

+0

また、私はPower BIについては何も知らないが、新しい "Trust Server Certificate"パラメータはSqlClientでサポートされている "標準"のパラメータであることに注意してください。何らかの理由で接続文字列にアクセスする方法があるはずです... –

+0

Jon Capezzuto、Microsoftからの応答はありますか? – user541905

3

PowerBIをローカルにホストされているPostgreSQLサーバに接続するのと同じ問題がありました。正しい情報を得ることができれば、簡単に解決できることが判明しました。最近のNpgsqlバージョンは、サーバーの証明書を信頼する場合にのみSSLを介して接続します。 Windowsアプリケーションとして、PowerBIはWindows証明書ストアを使用して何を信頼するかを決定します。 PostgreSQLサーバ(またはその証明書に署名するために使用されたCA証明書)のSSL証明書を取得し、Windowsにその証明書を信頼するよう指示すると、PowerBIもその証明書を信頼します。

PostgreSQLサーバの設定フォルダにpostgresql.confファイルがあり、ssl設定を検索すると、ssl certの場所があります。非公開鍵を含む鍵ファイルではなく、公開鍵を含む証明書ファイルのみに注意してください。 PowerBIを実行しているマシンにその内容またはその内容をコピーし、実行| mmc |プラグインを追加...

certをインポートした後、同じサーバー名(証明書が接続に一致するように)を使用してPowerBIから接続します。それが私にとって問題を解決しました。 PostgreSQLがSSL接続を要求するように設定されている場合は、ODBC接続に対しても同じ処理を行う必要があります。

+0

どのように私はpostgresqlの証明書をExcelでインポートするのですか? – Luv33preet

+0

スタート>実行> mmc.exeをクリックします。 [ファイル]> [スナップインの追加と削除] [スタンドアロン]タブ> [追加]をクリックします。 証明書スナップイン> [追加]をクリックします。 ウィザード>コンピュータアカウント>ローカルコンピュータ>完了をクリックします。 ダイアログを閉じます。 証明書(ローカルコンピュータ)に移動します。 サーバー自体の証明書がある場合は、[その他のユーザー]を選択します。 ストアを右クリックし、[すべてのタスク] - > [インポート]を選択します。 ウィザードに従って、所有している証明書ファイルを提供します。 –

+0

実際に私はそのインポートを行っていますが、サーバ名が証明書に含まれていないという記述で同じエラーが発生し続けます。 – Luv33preet

0

セキュリティ上の理由から暗号化が必要ない場合は、その方法が最善ではありませんが、私のために働いています。あなたのDBサーバ上のPostgresの設定ファイルへ

行くと

SSL =真

にSSL = falseを

から行くには、その後、あなたの力バイデスクトップ[ファイル] - > [オプション]を開き、設定 - >データソース設定 - >グローバルで接続を保存します。編集権限を押し、「暗号化接続」のチェックを外します。

それから動作します

警告:あなたのDBが公開されている場合はお勧めしません。

よろしく、

Davlik

+1

ここでは警告を強く強調することはできません。 –

4

npgsqlからのドキュメントは、接続文字列での「真」に「偽」のデフォルト信頼サーバー証明書の変更などのソリューションを提供します。 残念ながら、Excel(AFAIK)もPower BIも接続文字列を編集できません。したがって、DB管理者(another answerで示唆)からSSL証明書を取得できない場合、またはSSL証明書に接続する名前(私の場合はIPアドレス)とは異なるサーバー名がある場合は、することができます。

これを修正する方法は2つあります。 Shay & co(npgsqlからの)は、ユーザーがconnection string parametersのデフォルト設定を変更する方法を提供します。またはMicrosoftでは、Power BI(およびExcel)の接続ダイアログでキーワードを送信できます。

+2

コメントありがとう、ありがとうと認められたラリー。それでも、私は今、この問題の解決策を捜し求めて3日以上を費やしてきたので、この問題の解決策がないという答えを提供することが重要だと感じました。それは後続のユーザーが私と同じことをするのを防ぐかもしれない。 –

関連する問題