如何在无负载均衡器的AWS Beanstalk中自动生成HTTPS/SSL证书?
无需负载均衡器在Elastic Beanstalk(Amazon Linux 2 + Nginx)自动生成HTTPS证书
可以实现,但需要手动配置证书生成与自动续期的流程——默认无负载均衡的Beanstalk环境不会自动管理HTTPS证书,具体操作步骤如下:
确认环境架构:确保你的Beanstalk环境为单实例(无负载均衡)类型,基于Amazon Linux 2 + Nginx。
安装Certbot工具:
在项目根目录创建.ebextensions/certbot.config配置文件,通过EB扩展自动安装Certbot及Nginx插件,文件内容如下:packages: yum: certbot: [] python3-certbot-nginx: []将该文件随应用代码一起部署到Beanstalk,环境会自动完成依赖包安装。
生成并配置HTTPS证书:
可通过EB扩展的container_commands自动执行证书生成命令,或SSH登录实例后手动运行:sudo certbot --nginx -d your-domain.com --non-interactive --agree-tos -m your-email@example.com该命令会自动完成Let's Encrypt证书申请,并修改Nginx配置启用HTTPS。
配置证书自动续期:
Let's Encrypt证书有效期为90天,需设置自动续期任务。可通过cron实现:- 编辑cron任务列表:
sudo crontab -e - 添加续期命令:
0 12 * * * /usr/bin/certbot renew --quiet
也可以通过
.ebextensions配置自动添加cron任务,在配置文件中加入:files: /etc/cron.d/certbot_renew: mode: "000644" owner: root group: root content: | 0 12 * * * root /usr/bin/certbot renew --quiet- 编辑cron任务列表:
关键注意事项:
- 域名需解析到Beanstalk实例的公网IP,建议绑定弹性IP,避免实例重启后IP变更导致证书验证失败。
- 实例安全组需开放80(HTTP)和443(HTTPS)端口,Certbot的HTTP-01验证依赖80端口访问。
内容的提问来源于stack exchange,提问作者epol
相关产品推荐
相关产品推荐

