gpt4 book ai didi

python - 为客户域生成 SSL 证书并与 Python Flask 集成

转载 作者:行者123 更新时间:2023-12-03 20:40:01 27 4
gpt4 key购买 nike

所以,这是我遇到的问题,我正在尝试构建一个非常小规模的 MVP 应用程序,我将很快发布。我已经能够弄清楚从使用 Dokku 部署 flask 应用程序的所有事情(我稍后会升级到更好的东西)并且已经能够让大多数事情在应用程序上运行,包括 S3 上传、 strip 集成等。这是一个我坚持的事情,我如何为客户即时生成 SSL 证书,然后将所有内容链接回 Python 应用程序?以下是我的想法:
一旦域指向我的服务器,我可以使用一个简单的脚本并连接到 Letsencrypt API 来生成和请求证书。我遇到的问题是,一旦指向域,我怎么知道? Dokku 不会将所有传入请求连接到我的容器,因此除非我手动将其与 dokku domains:add 连接,否则 Flask 将无法检测到它。命令?
有没有更好的方法来解决这个问题?我知道 Cloudflare 为 SaaS 提供的 SSL,但它似乎只适用于他们的企业客户,我需要一个像这样的强大解决方案,我不介意构建它,但只需要一些指导(除非已经有一个解决方案出来了那里是免费的——不需要重新发明轮子,嗯?)。另一件事,将来我确实计划让我的数据库单独运行,负载均衡器指向我的应用程序的多个不同实例(不会是主要问题,因为数据库仍然是中心,但只是担心它的 IP 部分)。回顾一下:
客户端域 (example.io) -> dns1.example.com -> Lets Encrypt SSL Cert -> Dokku Container -> My App
如果我需要重新解释任何事情,请告诉我,谢谢!

最佳答案

我想更简单的方法是在 python 应用程序前面使用 Nginx 容器。因为你可以在不重启服务器的情况下重新读取 Nginx 配置。
我没有使用 Dokku,所以尝试解释如何简单地使用 docker 创建基础架构。

  • 您的路由器上有转发 1.1.1.1 的全局 IP(例如 80)和 443到内部服务器 IP 的端口(让它成为 192.168.1.100)。全局 80到本地 8080和全局443到本地 8443 .
  • 您有正在监听 192.168.1.100:8080 的 Nginx 容器和 192.168.1.100:8443并代理来自 8443 的所有请求至127.0.0.1:8888通过 HTTP 协议(protocol)
  • 您有正在监听的应用程序容器 127.0.0.1:8888并且只能从本地服务器访问

  • 工作流程将是:
  • 客户注册 DNS A 记录:customer.domain.com A 1.1.1.1并将其指向您的服务器
  • 客户使用一些控制网页将域添加到您的数据库(取决于您的服务)
  • DB 中的新记录通过某个触发器启动工作容器
  • 工作容器开始使用一些 nslookup 检查域是否存在工具
  • 如果域已注册,worker 启动 let's encrypt 脚本并颁发新证书(通过将 .well-known/acme-challenge 文件添加到 Nginx html 文件夹)
  • 如果证书颁发成功,worker 将新的配置文件添加到 Nginx 容器中(更好的方法是从 docker 主机挂载配置目录)和 reload Nginx配置
  • 利润

  • 如果您需要使用自己的 DNS 服务器,您必须使用一些 API 以编程方式控制它,以便能够由工作人员添加 DNS A 记录。 (好消息!在这种情况下,您可以通过将 acme-challenge 代码添加为 DNS TXT(或者可能是 CNAME?)记录而不是 Nginx .well-known 目录来使用 Let's Encrypt 的 DNS 质询)
    实际上实现很大程度上取决于您拥有的基础设施。这确实是一项艰巨的任务,取决于许多细节。所以很难在不知道的情况下更好地回答。

    关于python - 为客户域生成 SSL 证书并与 Python Flask 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67352618/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com