Django - postgres:如何验证数据库连接是否为SSL?

时间:2018-06-08 12:41:55

标签: django postgresql ssl

我的postgres服务器应该强制SSL连接但是我想直接从Django应用程序验证这个设置。有没有办法检查数据库连接(可能通过manage.py shell并确保连接是SSL?

3 个答案:

答案 0 :(得分:2)

导航到python manage.py dbshell后,可以通过在连接信息中查找密码来确认连接已加密。

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

否则,您将看不到SSL信息。

答案 1 :(得分:0)

我不知道如何从您的Django应用程序配置它,但也许您可以在sslmode连接参数中告诉postgres require SSL

答案 2 :(得分:0)

我相信我找到了一种方法,但我会在接受之前等待人们批评这种方法:

  1. 以超级用户身份连接到数据库服务器并运行create extension sslinfo;以安装sslinfo扩展。对于没有超级用户访问权限的人来说,这可能是不可能的,但是在我配置服务器端SSL实施的情况下,给出了SU访问权。
  2. manage.py shell
  3. 中运行以下内容

    -

    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,如果启用SSL,则应返回[(True,)]。

    相关documentation about sslinfo can be found here