2015-10-21 1 views
7

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

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. Создать .crt файл из .pem файл загружен. Примеры инструкций здесь 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, но обратите внимание, что новый параметр «Trust Server Certificate» является «стандартным», поддерживаемый в SqlClient. Должен быть способ получить доступ к строке подключения как-то ... –

+0

Jon Capezzuto, вы получили от Microsoft ответ? – user541905

3

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

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

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

+0

как импортировать сертификат postgresql в excel? – Luv33preet

+0

Пуск> Выполнить> mmc.exe. Файл> Добавить/удалить оснастку; Автономная вкладка> Добавить; Захват сертификатов> нажмите Добавить; Мастер> Учетная запись компьютера> Локальный компьютер> Готово. Закройте диалоговое окно. Перейдите к сертификатам (локальный компьютер). Если у вас есть сертификат для самого сервера, выберите «Другие люди». Щелкните правой кнопкой мыши магазин и выберите «Все задачи -> Импорт». Следуйте указаниям мастера и укажите файл сертификата, который у вас есть; –

+0

Фактически я сделал это импорт, но я продолжаю получать ту же ошибку с описанием, что имя сервера не содержится в сертификате – Luv33preet

0

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

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

= SSL верно

к

= ложь SSL

Затем откройте свою власть би рабочего стола Файл-> Параметры и Настройки -> Настройки источника данных -> затем в глобальном масштабе вы сохранили свое соединение, нажмите «Разрешения прав» и снимите флажок «ПОДКЛЮЧЕНИЯ ПО ОБЕСПЕЧЕНИЮ»,

Тогда это будет работать

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

С уважением,

Davlik

+1

ВНИМАНИЕ не может быть здесь особо подчеркнуто. –

4

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

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

+2

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