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

如何从AWS Secrets Manager获取证书密钥用于Gunicorn HTTPS配置

Gunicorn加载AWS Secrets Manager中SSL证书的配置方法

前置要求

运行Gunicorn的计算资源(EC2实例、ECS任务、EKS Pod等)绑定的IAM身份,必须提前授予对应Secret的secretsmanager:GetSecretValue操作权限,无需在环境中硬编码访问密钥。
运行环境需要提前预装AWS CLI和JSON解析工具jq,用于拉取和解析Secret内容。

方案1:临时内存文件启动(生产环境推荐)

Gunicorn的证书、密钥参数仅支持读取文件系统路径,最稳妥的方式是服务启动前拉取证书写入内存临时文件系统,进程退出后自动清理,不会持久化存储到磁盘。

  • 建议将SSL证书、私钥存储在同一个Secret中,两个值的键名分别设为ssl_cert、ssl_key,减少接口调用次数。如果分开存储在两个独立Secret中,分别拉取即可。
  • 编写服务启动脚本start_gunicorn.sh:
#!/bin/bash
set -euo pipefail

# 在tmpfs内存分区创建临时文件,不会写入物理磁盘
CERT_PATH=$(mktemp /tmp/gunicorn_cert.XXXXXX)
KEY_PATH=$(mktemp /tmp/gunicorn_key.XXXXXX)

# 注册退出钩子,进程终止时自动删除临时文件
cleanup() {
    rm -f "$CERT_PATH" "$KEY_PATH"
}
trap cleanup EXIT

# 拉取Secret内容,将<YOUR_SECRET_NAME>替换为实际的Secret名称
SECRET_RAW=$(aws secretsmanager get-secret-value \
  --secret-id <YOUR_SECRET_NAME> \
  --query SecretString \
  --output text)

# 解析证书、私钥写入临时文件
echo "$SECRET_RAW" | jq -r '.ssl_cert' > "$CERT_PATH"
echo "$SECRET_RAW" | jq -r '.ssl_key' > "$KEY_PATH"

# 收紧文件权限,仅当前运行用户可读
chmod 600 "$CERT_PATH" "$KEY_PATH"

# 启动Gunicorn
exec gunicorn --certfile="$CERT_PATH" --keyfile="$KEY_PATH" test:app
  • 给脚本添加执行权限:chmod +x start_gunicorn.sh,后续服务启动直接执行该脚本即可。

方案2:无文件进程替换方案(更高安全性)

如果要求证书全程不落盘,可以用Bash进程替换的方式,通过虚拟文件路径把内存中的证书内容传给Gunicorn,全程不会在文件系统生成实体文件。
启动脚本示例:

#!/bin/bash
set -euo pipefail

SECRET_RAW=$(aws secretsmanager get-secret-value \
  --secret-id <YOUR_SECRET_NAME> \
  --query SecretString \
  --output text)

SSL_CERT=$(echo "$SECRET_RAW" | jq -r '.ssl_cert')
SSL_KEY=$(echo "$SECRET_RAW" | jq -r '.ssl_key')

# 通过进程替换传入虚拟文件路径
exec gunicorn --certfile=<(echo "$SSL_CERT") --keyfile=<(echo "$SSL_KEY") test:app

注意:该方案依赖/proc文件系统支持,部分精简容器镜像、旧版本Gunicorn可能存在兼容性问题,上线前需要提前验证。

运维提示

  • 证书轮换后,重启Gunicorn进程即可自动拉取最新的证书内容,无需修改配置
  • 不要给临时文件设置过宽的读权限,避免私钥被服务器上的其他进程窃取
  • 禁止将SSL私钥内容硬编码在启动脚本、容器镜像或环境变量中,所有权限通过IAM策略管控

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 00:01:05