强制使用SSL连接Django Postgres

29

我希望强制Django使用SSL连接到我的PostgreSQL数据库。

这个问题表明我需要在psycopg2连接调用中传递sslmode='require'。我如何将其添加到Django的数据库参数中?

4个回答

60

'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'},
    },
}

正如jklingen92所指出的,如果您正在使用数据库URL,例如通过django-environ,请在数据库URL末尾添加?sslmode=require。例如:

postgres://<DB_USERNAME>:<DB_PASSWORD>@<DB_HOST>:<PORT>/<DB_NAME>?sslmode=require

2
你不需要通过认证吗? - Florent
1
@Florent 数据库客户端不需要指定证书,除非您正在使用可选的clientcert身份验证选项。如何在Django中实现这一点是一个单独的问题 - Zags

9

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

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

这适用于 Django ConfigurationsDjango Environ 两者。 Django Configurations 建立在 dj_database_url 之上,因此你可以像 @frmdstryr 所说的一样传递 ssl_require=True
DATABASES = values.DatabaseURLValue(environ_required=True, ssl_require=True)

2
在哪里指定证书? - Sandeep Balagopal
3
@SandeepBalagopal 您可以通过将以下内容添加到OPTIONS(以前述的sslmode属性为例)来指定SSL证书的路径: { 'sslmode': 'require', 'sslcert': '/path/to/file', 'sslkey': '/path/to/file', 'sslrootcert': '/path/to/file'} - Oscar Chen

4
如果您正在使用 dj_database_url,您可以传递 ssl_require=True,它会为您设置选项。
import dj_database_url
DATABASES['default'] = dj_database_url.config(ssl_require=True)

0
编辑settings.py文件如下:
DATABASES = {
    # 'default': {
    #     'ENGINE': 'django.db.backends.sqlite3',
    #     'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    # },
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'HOST': 'server-ip',
        'PORT': '5432',
        'NAME': 'database-name',
        'USER': 'username',
        'PASSWORD': 'password',
        'OPTIONS': {
            'sslmode': 'require',
            'sslcert': '/path/to/file',
            'sslkey': '/path/to/file',
            'sslrootcert': '/path/to/file',
        },
    },
}

参考资料 点击这里访问


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接