Рейтинг:0

Reach TimescaleDB с Hasura API: «Сертификат ЦС и закрытый ключ ЦС не совпадают» при использовании самозаверяющего сертификата сервера / закрытого ключа

флаг mx

Я следую руководству timescaleDB для API с Аутентификация по сертификату --> 2. Генерация ключей и сертификатов для узлов:

введите описание изображения здесь

Для соединения SSL вам нужны четыре переменные среды:

  1. SSL корневой сертификат
  2. SSL-сертификат (для узла)
  3. SSL-ключ (для узла)
  4. SSL-пароль (для узла)

Что касается 1.), вы получаете его из шкалы времени при запуске базы данных в виде текста или загрузки.

Что касается 2.), вы, похоже, можете создать его самостоятельно как самозаверяющий сертификат с помощью:

openssl req -out server.csr -new -newkey rsa:2048 -nodes \
-keyout сервер.ключ

Я заполнил "страна" и пропустил остальные записи только с "." (это было предложено пропустить). Я также заполнил «пароль вызова». Не уверен, насколько актуально это заполнять и есть ли пароль 4.) в списке выше или нет.

Что касается 3.), вам сначала нужно изменить файл openssl.cnf, который не упоминается в руководстве по шкале времени. Это делается путем поиска с помощью где находится openssl.cnf, или в моем случае местоположение было показано в выводе терминала, когда параметры там все еще были неправильными, что показало /usr/lib/ssl/openssl.cnf как расположение. Измените конфигурацию с помощью судо нано /usr/lib/ssl/openssl.cnf чтобы были найдены закрытый ключ «server.key» и корневой сертификат «ca.pem». После этого выполните команду гида:

openssl ca -extensions v3_intermediate_ca -days 3650 -notext \
-md sha256 -in server.csr -out server.crt

но тогда вы получаете ошибку:

Использование конфигурации из /usr/lib/ssl/openssl.cnf
Сертификат ЦС и закрытый ключ ЦС не совпадают
140718372717888: ошибка: 0B080074: подпрограммы сертификата x509: X509_check_private_key: несоответствие значений ключей: ../crypto/x509/x509_cmp.c:299:

Сценарий по-прежнему создает server.key и server.csr, но необходимый server.crt создать не удается.

И только Как преобразовать .csr в .cer (или что-то еще, что можно использовать в Windows) кажется, может помочь мне получить server.crt с помощью:

openssl x509 -req -in server.csr -signkey server.key -out server.crt

Введите это в настройках соединения SSL в Hasura:

введите описание изображения здесь

Но затем при попытке подключиться к моей базе данных в масштабе времени с помощью Hasura я получаю сообщение об ошибке Отсутствует Env Var:

введите описание изображения здесь

Не удалось добавить источник данных
Inconsistent object: Missing Env Var: -----BEGIN CERTIFICATE----- MIICoTCCAYkCFAHx6x6kVHJ023/ui0aLoWLqA8RyMA0GCSqGSIb3DQEBCwUAMA0x CzAJBgNVBAYTAkRFMB4XDTIxMDkyMTE4MDQzNVoXDTIxMTAyMTE4MDQzNVowDTEL MAkGA1UEBhMCREUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDWGxsz
¦
g98irlkrtDn17jIzmZMjlJEQ75P9L78lJMT2eYCFRqVoCm+7x5IUS18UlnGUtwR4 BuIZOg4= -----КОНЕЦ СЕРТИФИКАТА-----

Я предполагаю, что это просто дополнительная проблема, поскольку сертификат ЦС и закрытый ключ ЦС явно не совпадают? Поэтому вопрос в основном о Сертификат ЦС и закрытый ключ ЦС не совпадают, вместо.

Срок ответа:

Хотя мы предоставляем корень ЦС, поскольку сертификаты SSL для каждой службы имеют внутреннюю подпись, так что это позволит вам создать доверие, но мы не предоставляйте им закрытые ключи или пароли SSL.

Документация, на которую вы ссылаетесь, предназначена для создания аутентификации сертификата. между узлами в локальной многоузловой среде. Облако шкалы времени не допускает аутентификацию сертификата, поэтому они не будут иметь значения здесь, и вы не сможете комбинировать созданные вами сертификаты с ЦС, загруженный с облачного портала.

В качестве обходного пути вы также можете отказаться от шифрования SSL, поскольку оно необязательно:

просто предоставив всю строку подключения (скопированную из Поле URI службы на облачном портале Timescale) было достаточно, чтобы соединять.

Я проверил это, это правда, вы можете запустить его без SSL, хотя SSL подготовлен для использования. я использовал корень сертификат для SSL-подключения с помощью psql или pgAdmin к серверной части PostgreSQL timescaleDB, и они запросили только корневой сертификат SSL --> 1.) выше, а не сертификат CA узла и закрытый ключ CA узла --> 2.) - 4.) выше.

Подключение только через SSL корень сертификат также работал с приложением node-postgres/act-postgres/Express/React, см.:

Тем не менее, настройки интерфейса прикладного программирования Hasura запрашивают четыре переменные среды SSL-соединения из списка вверху, как я могу получить их, чтобы я мог подключиться к Timescale?

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.