首页 > 解决方案 > 在 AWS 内部/私有服务器上设置 SSL

问题描述

我们正在尝试在 AWS 上设置公共 API 网关,但受到 SSL 要求的困扰。我们的网关旨在成为隐藏内部资源的公开 API 网关。内部资源都在 EC2 实例上运行。目的是内部资源不会有公共 IP 或弹性 IP 可供世界访问。当我们尝试使用 Lets Encrypt 设置 SSL 证书时,我们会收到一个反馈,即 amazonaws.com 不是允许的域。我们也尝试过 OpenSSL,但在尝试将 API 网关连接到内部服务时收到非描述性的“未指定 SSL 引擎错误”消息。

这是我们要设置的 Stick 框架

   Public Side                    |               Private Side
                                  |                                               
{ Public Internet } <---> ( API GATEWAY ) <----> #endpoint {GET}  /users  [EC2 Instance 1: https://ip-10-3-X-1.ca-central-1.compute.internal]
                                                 #endpoint {GET}  /posts  [EC2 Instance 2: https://ip-10-3-X-2.ca-central-1.compute.internal]
                                                 #endpoint {POST} /update [EC2 Instance 3: https://ip-10-3-X-3.ca-central-1.compute.internal]

在这种情况下,EC2 实例是运行微服务的容器。由于各种原因,我们没有使用 Lambda 函数,也没有兴趣这样做。

设置 API 网关以访问 EC2 实例的最佳方法是什么?

我们最大的问题是向我们的 EC2 端点颁发一个 API 网关将接受的 SSL 证书。当我们使用 AWS Certificate Manager 生成私有证书时,API Gateway 存在自签名问题。

我们不希望这些内部服务器完全暴露在公共 DNS 上。

我们是否需要设置一个内部 DNS 服务器来向像instancename.example.internal这样的 FQDN 颁发证书,然后向这些域颁发证书,并将 API 网关指向那个?

在此先感谢您的帮助!

标签: amazon-ec2aws-api-gatewayaws-certificate-manager

解决方案


推荐阅读