Куда помещать ssl-сертификаты при попытке подключения к удаленной базе данных с помощью psycopg2? - PullRequest
0 голосов
/ 28 мая 2019

Я создал экземпляр Google PostgreSQL, и я пытаюсь управлять им с удаленного веб-сервера, я внес в белый список IP-адрес и включил режим только SSL. Я создал клиентские сертификаты, но я не знаю, где их разместить и как на них ссылаться. Я ничего не могу найти в Интернете.

Любая помощь будет оценена

Моя инструкция по подключению psycopg2 выглядит следующим образом и выдает ошибку, в которой говорится, что ему нужны клиентские сертификаты:

conn = psycopg2.connect(
            user="postgres",
            password="password",
            host="{IP_ADDRESS}",
            port="5432",
            database="testdb",
            sslmode="require",
}

Ответы [ 2 ]

1 голос
/ 28 мая 2019

Поскольку вы создали клиентские сертификаты для подключения к вашему экземпляру с использованием SSL, нужно искать три вещи:

  • A сертификат сервера сохранен как server-ca.pem .
  • A сертификат открытого ключа клиента сохранен как client-cert.pem .
  • A закрытый ключ клиента сохранен как client-key.pem .

В зависимости от того, какой инструмент вы используете для подключения, эти три элемента задаются по-разному. Например, при подключении с использованием клиента командной строки psql эти три файла являются значениями параметров sslrootcert , sslcert и sslkey в строке подключения psql , Далее Для подключения с использованием клиента SQL и SSL / TLS см. Подключение с помощью клиента psql

Вот несколько шагов, если вам нужно больше деталей Подключение клиента psql с использованием публичного IP

0 голосов
/ 28 мая 2019

Я понял это сам, получил несколько инструкций о том, как подключиться к psql, и это также относится к psycopg2.

Google проинструктировал меня, что я могу подключиться через psql с помощью этой команды терминала:

  psql "sslmode=verify-ca sslrootcert=server-ca.pem \
      sslcert=client-cert.pem sslkey=client-key.pem \
      hostaddr={IP_ADDRESS} \
      port=5432 \
      user=postgres dbname=postgres"

Поэтому я отредактировал свою функцию подключения, добавив следующие клавиши:

sslrootcert=server-ca.pem
sslcert=client-cert.pem
sslkey=client-key.pem

Обязательно запустите

$ chmod 0600 client-key.pem

Или не будет работать

...