amazon-web-services - 对 AWS Elastic Beanstalk 的 HTTPS 请求返回 net::ERR_CERT_COMMON_NAME_INVALID

标签 amazon-web-services ssl dns ssl-certificate amazon-elastic-beanstalk

上下文

域设置:

  • 我在 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/

相关文章:

amazon-web-services - 我应该在我的存储库中包含我的 .aws-sam 文件吗?

mysql - AWS RDS MySql - 如何在设置 'Publicly available' 后允许访问

apache - 如何避免在 LAN 网站上出现自签名 SSL 警告?

python - 尝试使用Python在Socket中扫描IP以获取域名

android - 如何从 Java 程序中找到 Android 中的 DNS 服务器?

java - AWS 无服务器请求 - JSON body/httpMethod 始终为 null

node.js - AWS Lambda(专门针对 Node.js 运行时)使用什么指标来确定使用的最大内存?

java - 没有 keystore 的 key 工具

ssl - force_ssl 甚至落后于 nginx 并生成 https url

iPhone获取3G DNS主机名和IP地址