You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用AWS ACM公共证书运行Gunicorn搭建Flask HTTPS API?

用AWS ACM证书部署Flask HTTPS API(Gunicorn/uWSGI)的可行方案

首先直接给结论:ACM颁发的公共证书没法直接拿来给Gunicorn或uWSGI用——因为ACM托管证书的逻辑是不让你下载私钥的,而Gunicorn/uWSGI这类应用服务器运行HTTPS必须要有证书文件和对应的私钥文件。

下面给你两种靠谱的解决思路:

1. 用AWS应用负载均衡器(ALB)做HTTPS终止(最推荐)

这是AWS官方最推崇的做法,操作起来也简单:

  • 把你的ACM证书绑定到ALB的443端口(HTTPS),让负载均衡器来处理SSL加密解密
  • ALB把解密后的HTTP请求转发给后端跑Gunicorn/uWSGI的服务器(比如EC2实例、ECS容器),后端只需要监听普通的HTTP端口(比如80或8000)
  • 你的Flask应用完全不用管SSL的事,正常写代码就行

这种方式的好处:

  • ACM会自动给证书续期,不用你手动维护
  • 负载均衡器帮你扛下SSL卸载的压力,应用服务器只专注处理业务请求
  • 后续扩容、加域名都方便

2. 仅在特定场景下导出ACM证书(局限性大)

只有当你的ACM证书是你自己上传到ACM的(不是ACM免费颁发的公共证书),并且你手里有证书的私钥,才能导出证书文件和私钥。如果符合这个条件,可以用AWS CLI导出:

aws acm export-certificate --certificate-arn <你的证书ARN> --passphrase <加密私钥的密码>

导出后你会得到证书链、证书文件,还有加密的私钥。解密私钥后,把证书存成server.crt,私钥存成server.key,就能用Gunicorn启动了:

gunicorn --certfile=server.crt --keyfile=server.key test:app

但如果是ACM免费给你颁发的公共域名证书,这条路走不通,因为ACM不会让你下载私钥。

3. Nginx反向代理配合ACM证书(略复杂)

要是你非得在服务器层面处理HTTPS,可以用Nginx做反向代理,Nginx能通过IAM角色自动获取ACM证书(不用手动下载),再转发请求给uWSGI:

  • 给你的EC2实例加个IAM角色,要有acm:GetCertificate的权限
  • 安装工具让Nginx自动拉取ACM证书,配置Nginx监听443端口,把请求转发给uWSGI的套接字或TCP端口
  • uWSGI正常运行Flask应用就行

不过这种配置步骤多,维护起来不如ALB省心,不优先推荐。

总结:如果是ACM免费颁发的公共证书,直接用ALB做HTTPS终止是最省事的;要是必须在应用层用证书,只能用自己上传到ACM的可导出证书,不然没法直接给Gunicorn/uWSGI用。

内容的提问来源于stack exchange,提问作者Mah_Bar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 18:55:23