【问题标题】:Force SSL for Django Postgres connection为 Django Postgres 连接强制 SSL
【发布时间】:2018-05-20 20:26:49
【问题描述】:

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

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

【问题讨论】:

    标签: django postgresql


    【解决方案1】:

    '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 points out,如果您使用数据库 URL,例如通过 django-environ,请将 ?sslmode=require 添加到数据库 URL 的末尾。例如:

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

    【讨论】:

      【解决方案2】:

      如果您正在配置数据库 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)
      

      【讨论】:

      • 在哪里指定证书?
      • @SandeepBalagopal 您可以通过将以下内容添加到 OPTIONS(以及上述 sslmode 属性)来指定 SSL 证书的路径:{ 'sslmode': 'require', 'sslcert': '/path/to/文件','sslkey':'/path/to/file','sslrootcert':'/path/to/file'}
      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2010-10-23
        • 1970-01-01
        • 2018-11-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多