7

我正在运行一个 Django 网站并使用让我的 SSL 加密。框架的配置是这样的,我不能允许访问:http ://url.com/.xxxx

我可以允许免费访问的是: http ://url.com/static/.xxxx

我的 /static/ URL 可以接受和托管任何允许加密需求的随机文件。有没有办法让 certbot 支持 /static/ 而不是仅使用 / 作为 URL?

谢谢

编辑

我找到了一个我可以接受的解决方法。进一步挖掘,我发现 /.well-known/ 始终是 SSL 检查的基本目录。这意味着我们可以添加一个静态目录,它可以很好地与 certbot 一起工作。方法如下,首先将其添加到您的 apache 配置中:

Alias /.well-known/ /var/www/XXXXX/website/static/.well-known/
<Directory /var/www/XXXXX/website/static/.well-known/>
Require all granted
</Directory>

然后将其添加到您的 settings.py 文件中:

STATIC_ENCRYPT_URL = '/.well-known/'
STATIC_ENCRYPT_ROOT = '/var/www/XXXXX/website/static/'

将此添加到您的 urls.py 中:

urlpatterns = [
  ... 
] + static(settings.STATIC_ENCRYPT_URL, document_root=settings.STATIC_ENCRYPT_ROOT)

重置您的网络服务器。现在您有一个特殊的 url /.well-known/ 它将托管 certbot 所需的任何文件。

我仍然想要一个比这更好的答案。

4

1 回答 1

5

万一其他用户像我从谷歌那样来,这就是我改善这种情况的方法:

ACME在运行Django应用程序时为 Let's Encrypt创建挑战时,我对自己的选择不满意。所以,我推出了自己的解决方案并创建了一个 Django 应用程序!基本上,您可以将您的ACME挑战作为另一个对象来管理,并且该应用程序将生成正确的端点 URL。

只需pip install django-letsencrypt按照README您的方式进行操作即可。

于 2016-12-25T08:11:49.450 回答