django - 将 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')),
系统信息
- Django 版本 - 2.0.8
django-letsencrypt
- 3.0.1- 蟒蛇 - 3.6
解决方案
我强烈建议您将其移出您的应用程序,而是使用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
.
推荐阅读
- wordpress - 如何将另一个 wordpress 网站的帖子显示到我的 wordpress 网站?
- java - 当片段中的上下文为空时该怎么办
- php - 如何在没有 cron 的情况下自动化数据库表备份
- python - 调度程序使 python 脚本运行但不生成 csv 文件
- c# - 代码优先自动生成的值未创建相应的数据库逻辑
- ios - Unity 在 iPhone 上的 GetCloudProjectId() 崩溃
- json - 我正在尝试在 go 中打印 JSON
- javascript - 删除一行会导致浏览器冻结
- sql - SQL Server 从记录列表中更新多条记录
- r - 使用申请两个矩阵