【问题标题】:Using lets encrypt without control over the root directory在不控制根目录的情况下使用让加密
【发布时间】: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


【解决方案1】:

如果其他用户像我在 Google 上一样使用这种方式,以下是我改善这种情况的方法:

在运行 Django 应用程序时,我对为 Let's Encrypt 创建 ACME 挑战时的​​选择不满意。 So, I rolled my own solution and created a Django app! 基本上,您可以将ACME 挑战作为另一个对象来管理,应用程序将生成正确的端点 URL。

只需 pip install django-letsencrypt 并跟随 README 即可上路。

【讨论】:

    猜你喜欢
    • 2017-08-03
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 2011-10-16
    • 1970-01-01
    • 2022-08-24
    • 1970-01-01
    相关资源
    最近更新 更多