Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
根据Django视图动态提供TLS证书,而不是通过nginx/gunicorn_Django_Ssl_Lets Encrypt - Fatal编程技术网

根据Django视图动态提供TLS证书,而不是通过nginx/gunicorn

根据Django视图动态提供TLS证书,而不是通过nginx/gunicorn,django,ssl,lets-encrypt,Django,Ssl,Lets Encrypt,我在视图代码中使用Django的请求。get_host()来区分动态数量的域 例如,如果请求来自www.domaina.com,则会在表中查找该域,并返回与其相关的内容 我正在以编程方式运行certbot以生成LetsEncrypt证书(包括通过Django的acme质询)。我将证书文件存储为PostgreSQL中的base64字符串 这很好,但我不知道如何在每个域的基础上动态地“应用”证书 我知道这通常是使用TLS终端、nginx甚至gunicorn来完成的。但对于我的用例来说,这还不够动态

我在视图代码中使用Django的
请求。get_host()
来区分动态数量的域

例如,如果请求来自
www.domaina.com
,则会在表中查找该域,并返回与其相关的内容

我正在以编程方式运行
certbot
以生成LetsEncrypt证书(包括通过Django的acme质询)。我将证书文件存储为PostgreSQL中的base64字符串

这很好,但我不知道如何在每个域的基础上动态地“应用”证书

我知道这通常是使用TLS终端、nginx甚至gunicorn来完成的。但对于我的用例来说,这还不够动态

通配符或SAN证书也是如此(不够动态)

因此,问题是:


如果我有有效的LetsEncrypt证书,我可以在运行时使用它们来保护Django视图吗?

Django用作wsgi服务器。Django获得一个http请求,并自行完成一些工作。然后它将其交给中间件,然后交给您的视图。 我相当肯定django在开始时所做的一般工作,它已经需要一个常规的http请求,而不是一个“无法读取的加密内容的二进制blob”。 也许gunicorn可以处理https终止,但我不确定

通常使用nginx或haproxy。也因为这是需要真正安全的东西

我现在使用的是haproxy,它有一个方便的功能,您可以将它指向一个目录,其中包含
*.pem
证书文件,它将读取并使用这些文件。因此,如果您可以将证书写入这样一个dir,并确保每次证书更改时都重新加载haproxy,那么您将非常接近一种动态工作方式