为Django Postgres连接强制SSL

时间:2017-12-06 20:37:28

标签: django postgresql

我想强制Django使用SSL连接到我的postgres数据库。

This question表示我需要将sslmode='require'传递给psycopg2 connect调用。如何将其添加到Django的数据库参数?

3 个答案:

答案 0 :(得分:7)

'OPTIONS': {'sslmode': 'require'},添加到数据库配置中。例如:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': "db_name",
        'USER': "db_username",
        'PASSWORD': "db_password",
        'HOST': "db_host",
        'OPTIONS': {'sslmode': 'require'},
    },
}

答案 1 :(得分:5)

如果要配置数据库URL,则可以将选项作为查询参数传递:

DATABASE_URL=postgres://USER:PASSWORD@HOST:PORT/NAME?sslmode=require

这既适用于Django Configurations也适用于Django Environ。 Django配置是基于dj_database_url构建的,因此您也可以按照@frmdstryr所说的方式传递ssl_require=True

DATABASES = values.DatabaseURLValue(environ_required=True, ssl_require=True)

答案 2 :(得分:0)

如果您使用的是dj_database_url,则可以传递ssl_require=True来为您设置选项。

import dj_database_url
DATABASES['default'] = dj_database_url.config(ssl_require=True)