Django - postgres: как я могу проверить, является ли соединение с базой данных SSL? - PullRequest
0 голосов
/ 08 июня 2018

Мой сервер postgres должен принудительно устанавливать SSL-соединение, однако я хотел бы проверить этот параметр непосредственно из приложения Django.Есть ли способ проверить соединение с базой данных (возможно, через manage.py shell и убедиться, что соединение SSL?

Ответы [ 3 ]

0 голосов
/ 08 июня 2018

Я считаю, что нашел один способ, но я подожду, прежде чем принять, если у людей есть критические замечания относительно этого метода:

  1. подключитесь к серверу базы данных как суперпользователь и запустите create extension sslinfo;, чтобы установить sslinfoрасширение.Это может оказаться невозможным для тех, у кого нет прав суперпользователя, однако в моем случае, когда я настроил принудительное применение SSL на стороне сервера, предоставляется доступ SU.
  2. запустите следующее в manage.py shell:

-

from django.db import connection

with connection.cursor() as cursor:
    cursor.execute('select ssl_is_used();')
    output = cursor.fetchall()
    print(output) # will print [(True,)] if SSL

Выполняется необработанный SQL, который должен возвращать [(True,)], если SSL включен.

Соответствующая документация о sslinfo может быть найденаздесь

0 голосов
/ 17 июля 2018

Вы можете подтвердить, что соединение зашифровано, найдя шифр в информации о соединении после перехода к python manage.py dbshell

SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES128-GCM-SHA256, bits: 
128, compression: off)

, в противном случае вы не увидите никакой информации SSL.

0 голосов
/ 08 июня 2018

Я не знаю, как настроить это из вашего приложения Django, но, возможно, вы могли бы сказать postgres, что требует SSL в параметре соединения sslmode?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...