如何在服务器上启用SSL?

时间:2018-08-02 12:11:00

标签: python django postgresql ssl

在将设置更改为环境变量时,我开始收到错误消息“服务器不支持SSL,但是需要SSL”。我以为我已经做到了,如果没有,我不确定我还要做些什么。我在已安装的应用程序中具有“ djangosecure”和“ sslserver”。 ssslmode在我的postgres.conf中为“开”:

#authentication_timeout = 1min      # 1s-600s
ssl = on                # (change requires restart)
#ssl_ciphers = 'HIGH:MEDIUM:+3DES:!aNULL' # allowed SSL ciphers
                    # (change requires restart)
#ssl_prefer_server_ciphers = on     # (change requires restart)
#ssl_ecdh_curve = 'prime256v1'      # (change requires restart)
ssl_cert_file = 'server.crt'        # (change requires restart)
ssl_key_file = 'server.key'     # (change requires restart)
#ssl_ca_file = ''           # (change requires restart)
#ssl_crl_file = ''          # (change requires restart)
#password_encryption = on
#db_user_namespace = off
#row_security = on

对我来说有趣的是,在整个开发过程中,我没有遇到这个错误;直到现在,我已经尝试将设置更改为生产环境变量。我缺少什么设置或配置?

我的数据库配置中有这个:     “选项”:{             'sslmode':'require',     }

这可能与我最初安装的Postgres有关吗?我在virtualenv之外安装了Postgres,因此必须使用以下命令访问db命令行: grep bin,然后复制路径,而不是简单地编写psql。到目前为止,除了给您带来的不便之外,这还没有给我带来任何问题,但这可能是问题的一部分吗?

python3 manage.py dbshel​​l

CommandError:您似乎没有安装'psql'程序或在路径上。

conn = _connect(dsn, connection_factory=connection_factory, **kwasync)

django.db.utils.OperationalError:服务器不支持SSL,但是需要SSL

1 个答案:

答案 0 :(得分:0)

文件ssl = on前面有一个注释符号,因此使用默认值ssl = off

要启用SSL,还需要证书和密钥,请参见the documentation