我希望强制Django使用SSL连接到我的PostgreSQL数据库。
这个问题表明我需要在psycopg2连接调用中传递sslmode='require'
。我如何将其添加到Django的数据库参数中?
我希望强制Django使用SSL连接到我的PostgreSQL数据库。
这个问题表明我需要在psycopg2连接调用中传递sslmode='require'
。我如何将其添加到Django的数据库参数中?
将'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
如果您正在配置数据库URL,可以将选项作为查询参数传递:
DATABASE_URL=postgres://USER:PASSWORD@HOST:PORT/NAME?sslmode=require
dj_database_url
之上,因此你可以像 @frmdstryr 所说的一样传递 ssl_require=True
。DATABASES = values.DatabaseURLValue(environ_required=True, ssl_require=True)
ssl_require=True
,它会为您设置选项。import dj_database_url
DATABASES['default'] = dj_database_url.config(ssl_require=True)
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',
},
},
}
参考资料 点击这里访问