【发布时间】:2021-09-18 07:08:26
【问题描述】:
上下文
域设置:
- 我在Porkbun注册了一个域名
my-site.com。 - 我使用 CloudFlare 配置了 DNS 服务器。
- 我有一个来自 AWS Certificate Manager 的 SSL 证书,用于
my-site.com, www.my-site.com, and api.my-site.com。 - 我将 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) 协议:HTTP,端口:80,实例协议:HTTP,实例端口:80。
- Listener #2) 协议:HTTPS,端口:443,实例协议: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 设置的配置?
【问题讨论】:
-
如果您有自己的域,则不应使用
xxx-xxxxxx.us-west-1.elasticbeanstalk.com。你为什么用它? -
我认为域只能向其 SSL 证书上列出的域发出 HTTP/HTTPS 请求是否正确?还是域只能向同一 DNS 服务器中列出的域发出 HTTP/HTTPS 请求?我试图了解为什么域不能向 SSL 证书上列出的域之外的域发出请求。我认为 SSL 证书适用于“接收端”(例如 Elastic Beanstalk 只能接受来自证书上域的请求),但似乎 SSL 证书适用于“发送方”(例如,我的域只能将请求发送到证书)。
标签: amazon-web-services ssl dns ssl-certificate amazon-elastic-beanstalk