上下文
域设置:
- 我在 Porkbun 注册了一个域名
my-site.com
。 - 我使用 CloudFlare 配置了 DNS 服务器。
- 我拥有 AWS Certificate Manager 为
my-site.com、www.my-site.com 和 api.my-site.com
提供的 SSL 证书。 - 我将 SSL 证书的每个 CNAME 记录(针对 my-site.com、www.my-site.com 和 api.my-site.com)放入我的 DNS 配置中。
通过此设置,my-site.com
尝试向我的 Flask 应用程序发送 HTTPS POST 请求,这是我的应用程序的 API,托管在 AWS Elastic Beanstalk 上。
Elastic Beanstalk 设置:
我向 EB 环境的 EC2 安全组添加了入站规则:
- 端口 80 和 0.0.0.0/0 上的 HTTP 请求
- 端口 443 和 0.0.0.0/0 上的 HTTPS 请求。
我向 EB 环境的经典负载均衡器添加了监听器:
- 监听器 #1) 协议(protocol):HTTP,端口:80,实例协议(protocol):HTTP,实例端口:80。
- 监听器 #2) 协议(protocol):HTTPS,端口:443,实例协议(protocol):HTTP,实例端口:80,SSL 证书:我使用 ACM 创建的证书。
环境的 URL:
my-site-env.xxx-xxxxxx.us-west-1.elasticbeanstalk.com/
。
我想做什么
在 my-site.com
上,我尝试向我的 API 路由发送 HTTPS POST 请求:my-site-env.xxx-xxxxxx.us-west-1。 elasticbeanstalk.com/api/register
const config = {
headers: {
'Content-Type': 'application/json',
},
};
const body = JSON.stringify({ username, email, password });
const res = await axios.post(
'https://my-site-env.x-xxxxxx.us-west-1.elasticbeanstalk.com/api/register',
body,
config
);
问题
当 my-site.com
尝试执行 POST 请求时,我收到此错误:
POST https://reddalerts-env.eba-my6f6vhk.us-west-1.elasticbeanstalk.com/api/register
net::ERR_CERT_COMMON_NAME_INVALID
我相信我配置了 Elastic Beanstalk 的传入流量规则以及接收 HTTPS 请求的监听器。我是否缺少 DNS 设置配置?
最佳答案
如果您使用 SSL 在 EB 平台上设置自己的域,则您现在只能使用您的域(除非您强制异常(exception)并允许不安全的连接)。原因是您的 SSL 证书仅对其注册的域有效。
这意味着,如果您使用 https 连接到 EB 上的网站,则只能使用您的域。默认 EB 域将导致您收到错误,因为您的 SSL 证书不涵盖 EB 默认域。
顺便说一句,您无法注册 EB 默认域的有效 SSL 证书,因为该域属于 AWS,而 AWS 必须这样做。要注册有效的 SSL 证书,您必须拥有或管理您想要证书的域。
关于amazon-web-services - 对 AWS Elastic Beanstalk 的 HTTPS 请求返回 net::ERR_CERT_COMMON_NAME_INVALID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68291078/