首页 > 解决方案 > 将 Let's Encrypt SSL 添加到部署在 Heroku 上的 Django 应用程序时出现问题

问题描述

我有一个 Django 应用程序,在 Heroku 上部署了付费测功机,我正在尝试使用 Let's Encrypt 为来自 GoDaddy 的自定义 URL 配置 SSL,该 URL 指向我在 Heroku 上部署的 Django 应用程序。我正在尝试通过转到http://myapp.com/.well-known/acme-challenge/challenge_list生成证书的 URL 来完成 ACME 质询,但我在浏览器中收到以下错误:

找不到此 va-acm.heroku.com 页面。HTTP 错误 404

我已经安装了这个django-letsencrypt包,它在我的 Django 应用程序中创建了 ACME 挑战表,我在其中提供了 Certbot 提供的挑战和响应。我能够在我的本地机器上得到响应http://127.0.0.1:8000/.well-known/acme-challenge/challenge_list,但我不确定我是否遗漏了一些步骤来让它在 Heroku 上运行。

letsencrypt在我的settings.py

INSTALLED_APPS = [
..........
'letsencrypt',
.........
]

我的主要urls.py是这样的:

path('.well-known/', include('letsencrypt.urls')),

系统信息

标签: djangoherokulets-encrypt

解决方案


我强烈建议您将其移出您的应用程序,而是使用Heroku 的自动证书管理。它在幕后使用 Let's Encrypt,并且没有任何增量成本:

借助自动证书管理 (ACM),Heroku 会自动为 Common Runtime 上具有 Hobby 和 Professional dynos 的应用程序以及启用该功能的私人空间中的应用程序管理 TLS 证书。

ACM 处理的证书会在到期前一个月自动续订,并且每当您添加或删除自定义域时都会自动创建新证书。所有带有付费测功机的应用程序都免费包含 ACM。

自动化证书管理使用Let's Encrypt,这是一个免费、自动化和开放的证书颁发机构,用于管理您的应用程序的 TLS 证书。Let's Encrypt 由Internet 安全研究小组 (ISRG)为公共利益而运行。

从您的应用程序中删除django-letsencrypt,重新部署,确保您的 DNS 配置正确,然后运行heroku certs:auto:enable​​.


推荐阅读