Ошибка Npgsql 3.0.3 с Power BI Desktop

Я получаю следующую ошибку при подключении к базе данных AWS Postgres, для которой требуется SSL. Недавно я обновился с npgsql 2.3.2 (с ошибками) до 3.0.3, который не подключается. Мы ценим любые предложения.

DataSource.Error: TlsClientStream.ClientAlertException: CertificateUnknown: сертификат сервера не принят. Состояние цепочки: цепочка сертификатов не может быть построена для доверенного корневого центра. . на TlsClientStream.TlsClientStream.ParseCertificateMessage (Byte [] BUF, Int32 & Pos) на TlsClientStream.TlsClientStream.TraverseHandshakeMessages () в TlsClientStream.TlsClientStream.GetInitialHandshakeMessages (булево allowApplicationData) в TlsClientStream.TlsClientStream.PerformInitialHandshake (String HostName, X509CertificateCollection clientCertificates, RemoteCertificateValidationCallback remoteCertificateValidationCallback, Boolean checkCertificateRevocation) Подробности: DataSourceKind=PostgreSQL


person Jon Capezzuto    schedule 21.10.2015    source источник


Ответы (5)


Мне удалось решить эту проблему, установив публичный сертификат Amazon RDS на свой компьютер. Как только я это сделал, я смог подключиться.

Шаги, которые я выполнил:

  1. Загрузите общедоступный сертификат AWS RDS 1
  2. Создайте файл .crt из загруженного файла .pem. Примеры инструкций здесь 2
  3. Установите сертификат (файл .crt) на машину. 3
  4. Соединять!
person VinnyP    schedule 25.02.2017
comment
Я выполнил все эти 3 шага, но все равно не подключается. Ошибка сохраняется. Что может быть возможной причиной? - person Luv33preet; 09.11.2017

Документы из npgsql дают решение как изменение стандартного сертификата доверенного сервера< /em> из «false» в «true» в строке подключения. К сожалению, ни Excel (AFAIK), ни Power BI не позволяют редактировать строку подключения. Поэтому, если вы не можете получить сертификат SSL от администратора БД (как предлагается в другом ответе) или сертификат SSL имеет имя сервера, отличное от имени, к которому вы подключаетесь (в моем случае это IP-адрес), мало что можно сделать.

Я вижу два способа исправить это. Либо Shay & co из npgsql (кстати, отлично справляющиеся со своей задачей) предоставляют пользователям какой-то способ изменить настройки по умолчанию для параметры строки подключения. Или Microsoft позволяет пользователям отправлять ключевые слова в диалоговом окне подключения Power BI (и Excel).

person a-burge    schedule 13.09.2016
comment
Спасибо за комментарий, Ларри, с благодарностью и признанием. Тем не менее, поскольку я уже более трех дней тщетно искал решение этой проблемы, я счел ценным дать ответ, в котором говорится, что в настоящее время решения этой проблемы нет. Это может спасти последующих пользователей от прохождения того же, что и у меня. - person a-burge; 13.09.2016

Npgsql 2.x по умолчанию не выполнял проверку сертификата сервера, поэтому принимались самозаверяющие сертификаты. Новое значение по умолчанию — выполнить проверку, что, вероятно, является причиной сбоя соединения. Укажите параметр строки подключения Trust Server Certificate, чтобы вернуться к предыдущему поведению.

Вы можете прочитать больше на странице документации по безопасности Npgsql. Также обратите внимание, что это изменение упоминается в наши примечания по миграции.

person Shay Rojansky    schedule 21.10.2015
comment
Это очень полезно. К сожалению, Power BI Desktop не позволяет напрямую редактировать строки подключения. Я сообщу об этой проблеме в Microsoft для решения. - person Jon Capezzuto; 22.10.2015
comment
Опять же, я ничего не знаю о Power BI, но обратите внимание, что новый параметр сертификата сервера доверия является стандартным и поддерживается в SqlClient. Должен быть способ каким-то образом получить доступ к строке подключения... - person Shay Rojansky; 22.10.2015
comment
Джон Капеццуто, вы получили ответ от Microsoft? - person user541905; 10.03.2016

У меня была такая же проблема с подключением PowerBI к локальному серверу PostgreSQL, и оказалось, что ее легко решить, если вы можете получить правильную информацию. Последние версии Npgsql будут подключаться через SSL только в том случае, если они доверяют сертификату сервера. В качестве приложения Windows PowerBI использует хранилище сертификатов Windows, чтобы решить, чему доверять. Если вы можете получить сертификат SSL для сервера PostgreSQL (или сертификат ЦС, используемый для его подписи), то скажите Windows доверять этому сертификату, PowerBI также будет ему доверять.

В папке конфигурации для сервера PostgreSQL есть файл postgresql.conf, поищите в нем настройки ssl, там есть файл с расположением сертификата ssl. Обратите внимание: НЕ ключевой файл, содержащий закрытый ключ, а только файл сертификата, содержащий открытый ключ. скопируйте его или его содержимое на компьютер, на котором работает PowerBI, и импортируйте его с помощью команды «Выполнить | ммк | Добавить плагин... Сертификаты (погуглите)

Посмотрите на имя сервера после импорта сертификата и подключитесь из PowerBI, используя то же имя сервера (чтобы сертификат соответствовал подключению). Это решило проблему для меня. Если PostgreSQL настроен так, чтобы настаивать на соединении SSL, вам, возможно, придется сделать то же самое и для соединения ODBC.

person Ruan Malan    schedule 15.04.2016
comment
как импортировать сертификат postgresql в excel? - person Luv33preet; 09.11.2017
comment
Пуск › Выполнить › mmc.exe. Файл › Добавить/удалить оснастку; Автономная вкладка › Добавить; Оснастка «Сертификаты» › нажмите «Добавить»; Мастер › Учетная запись компьютера › Локальный компьютер › Готово. Закройте диалог. Перейдите к сертификатам (локальный компьютер). Если у вас есть сертификат для самого сервера, выберите «Другие люди». Щелкните магазин правой кнопкой мыши и выберите «Все задачи» --> «Импорт». Следуйте указаниям мастера и предоставьте файл сертификата, который у вас есть; - person Ruan Malan; 10.11.2017
comment
на самом деле я сделал этот импорт, но я продолжаю получать ту же ошибку с описанием, что имя сервера не содержится в сертификате - person Luv33preet; 10.11.2017

Это не лучший способ, но сработал для меня, так как если вам не нужно шифрование по соображениям безопасности.

Перейдите в конфигурационный файл Postgres на вашем сервере БД и перейдите от

SSL = правда

to

SSL = ложь

Затем откройте рабочий стол power bi Файл-> Параметры и настройки -> Настройки источника данных -> затем в глобальном масштабе вы сохраните свое соединение, нажмите «Изменить разрешения» и снимите флажок «ШИФРОВАТЬ СОЕДИНЕНИЯ».

Тогда это сработает

ВНИМАНИЕ: ЭТО НЕ РЕКОМЕНДУЕТСЯ, ЕСЛИ ВАША БД ОТКРЫТА ДЛЯ ПУБЛИЧНОСТИ.

С уважением,

Давлик

person Davlik    schedule 08.06.2016
comment
ПРЕДУПРЕЖДЕНИЕ не может быть подчеркнуто здесь достаточно сильно. - person Per Lundberg; 30.09.2016
comment
Это работает, чувак, в любом случае для внутреннего развития я был бы в порядке, спасибо за большую помощь. - person praveen2609; 19.11.2020