AWS弹性Beanstalk - NodeJS:在没有Beanstalk负载均衡器的情况下从Letsencrypt获取SSL证书

5

我想在Elastic Beanstalk中的node.js应用程序中,不使用Beanstalk负载均衡器,设置Let's Encrypt证书并保留由AWS提供的经典域名:xxx.xxxx.elasticbeanstalk.com。

经过几次搜索,我找到了两个可能的解决方案:

1- 使用.ebextensions文件 => 安装Certbot、获取Let's Encrypt证书并配置Nginx。

关于此的好文章 => https://bluefletch.com/blog/domain-agnostic-letsencrypt-ssl-config-for-elastic-beanstalk-single-instances/

2- 从ssh连接中,安装Certbot、生成证书并将其上传至IAM AWS。

AWS文档: https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/configuring-https-ssl-upload.html

对于这两种方法,我在Certbot进行域验证过程中遇到相同的错误信息。

我认为,Certbot为验证生成的目录无法访问。

错误:

To fix these errors, please make sure that your domain name was
entered correctly and the DNS A/AAAA record(s) for that domain
contain(s) the right IP address.
所以,我的问题是:如何在没有Beanstalk负载均衡器的情况下为Node Js Elastic BeanStalk应用程序设置SSL证书以获得绿色锁?谢谢您的帮助。

你在努力获取elasticbeanstalk.com的证书吗?你只能为自己拥有的域名获得证书,我相信亚马逊拥有那个域名。如果你注册自己的域名并获得证书,你应该能够将其安装到你的实例上。 - Brian
@Brian 实际上,我没有域名,在这种情况下我不能使用AWS证书管理器。我将此应用程序用作Webhook与Facebook API通信。这就是为什么我需要加密连接的原因。谢谢你的回答。我最终找到了解决方案。我为此创建了一个git https://github.com/SammyHam/LetsEncrypt-SSL-config-for-Elastic-Beanstalk - Sam
2个回答

3

感谢@Sam,我在AWS Linux 2 Elastic Beanstalk上尝试了你的Github代码,但是我遇到了502 Bad Gateway错误。我的日志显示如下:connect() failed (111: Connection refused) while connecting to upstream, client: 132.123.234.43, server: localhost, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:3030/", host: "mydomain.uk" - StuP

0

简述: 生成SSL证书(您可以在https://www.sslforfree.com/使用免费证书),下载并粘贴公钥(certificate.crt)和私钥(private.key)到./ebsextensions/certs.config,然后部署到弹性Beanstalk。

逐步教程介绍如何在单实例弹性Beanstalk环境中启用HTTPS,并进行HTTP到HTTPS重定向。本教程使用Node.js作为平台,但也包括其他平台的说明。

elastic-beanstalk-&-nginx-conf

Explanation

AWS - EB - configuration docs

故障排除

  • 确保安全组中列出了端口443。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接