【发布时间】:2016-11-21 11:10:25
【问题描述】:
我正在运行一个 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 需要的任何文件。
我仍然想要一个比这个更好的答案。
【问题讨论】:
-
暂时禁用django,运行一个简单的文件TCP服务器。
-
这在 dev 上可以正常工作,但我不能像那样让生产服务器脱机。
-
整个 LetsEncrypt 过程不到 2 分钟。您也可以尝试使用 CloudFlare 的免费 ssl 计划。
-
请仅提交与主题相关的有效建议。会有其他人遇到同样的问题,他们也需要有关如何解决问题的信息。
-
Let's Encrypt 使用(他们的版本)(仍在标准化的)ACME 协议,因此挑战将始终出现在 /.well-known/acme-challenge/ /.well-known/ 前缀是由 IETF 保留用于此类用途,如果今天发明了 favicon.ico 或 robots.txt,它们将位于 /.well-known/
标签: django apache ssl lets-encrypt certbot