为Django Postgres连接强制SSL

Zag*_*ags 10 django postgresql

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

这个问题表明我需要传递sslmode='require'给psycopg2 connect调用.如何将此添加到Django的数据库参数?

Zag*_*ags 15

添加'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'},
    },
}
Run Code Online (Sandbox Code Playgroud)

  • 难道不应该考个证书吗? (2认同)

小智 6

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

DATABASE_URL=postgres://USER:PASSWORD@HOST:PORT/NAME?sslmode=require
Run Code Online (Sandbox Code Playgroud)

这适用于Django ConfigurationsDjango Environ。Django Configurations 是基于 构建的dj_database_url,因此您也可以ssl_require=True像@frmdstryr 所说的那样传递:

DATABASES = values.DatabaseURLValue(environ_required=True, ssl_require=True)
Run Code Online (Sandbox Code Playgroud)

  • 在哪里指定证书? (2认同)
  • @SandeepBalagopal您可以通过将以下内容添加到选项(沿着上述 sslmode 属性)来指定 SSL 证书的路径: { 'sslmode': 'require', 'sslcert': '/path/to/file', 'sslkey': ' /path/to/file', 'sslrootcert': '/path/to/file'} (2认同)