亚马逊 EC2 + SSL

Posted

技术标签:

【中文标题】亚马逊 EC2 + SSL【英文标题】:Amazon EC2 + SSL 【发布时间】:2013-11-24 10:29:31 【问题描述】:

我想在 EC2 实例上启用 ssl。我知道如何安装第三方 SSL。我还在安全组中启用了 ssl。

我只想使用这样的网址:ec2-xx-xxx-xxx-xx.compute-1.amazonaws.com 和 https。

我在任何地方都找不到步骤。

如果有人可以指导我查看一些文件或其他内容,那就太好了。


编辑:

我在 EC2 上有一个实例。我已经安装了 LAMP。我还在安全组策略中启用了 http、https 和 ssh。

当我在浏览器中打开公共 DNS 网址时,我可以看到 Web 服务器运行良好。 但是当我将 https 添加到 URL 时,什么也没有发生。

有没有我想念的方法?我真的不想在这个实例上使用任何自定义域,因为我会在一个月后终止它。

【问题讨论】:

您的具体问题是什么?你要 SSL 教程吗?如果是,请参考sslshopper.com。 没有。我想知道,我可以在我的 ec2 实例上安装默认的 amazonaws.com 通配符吗?我不想在我的 EC2 实例上使用任何域名。我想使用通过 SSL 的 EC2 实例获得的默认公共 DNS 名称 亚马逊现在确实提供 SSL 证书。 us-west-1.console.aws.amazon.com/acm/home 【参考方案1】:
    使用openssl 创建自签名 SSL 证书。查看this 链接了解更多信息。 在您的 Web 服务器上安装该证书。正如您提到的 LAMP,我猜它是 Apache。因此,请查看this 链接以将 SSL 安装到 Apache。

如果您重新启动实例,您将获得不同的公共 DNS,因此请注意这一点。或将弹性 IP 地址附加到您的实例。

但是当我将 https 添加到 URL 时,什么都没有发生。

正确,您的网络服务器需要安装 SSL 证书和私钥才能在 https 上提供流量。一旦完成,你应该很高兴。此外,如果您使用自签名证书,那么您的网络浏览器会抱怨证书不受信任。您可以忽略该警告并继续访问该网页。

【讨论】:

谢谢。这行得通。但是,AWS 没有我可以安装的通配符 ssl 吗?安装自签名证书总是会在浏览器上发出警告。我不想要那个。因为我会将这些用于 Facbeook 应用程序。他们需要 SSL。我也不想买域名。 我不知道来自 AWS 的此类证书。尝试在 AWS forum 上发布您的查询,您可能会从 AWS 人员那里获得更好的见解。 @NeerajKumar AWS 确实有他们的 SSL。 Here 是它的指南。【参考方案2】:

事实证明,亚马逊没有为其 EC2 实例提供开箱即用的 ssl 证书。我跳过了他们是虚拟服务器提供商的部分。

要安装基本的ssl证书,你需要从别人那里购买并手动安装在你的服务器上。

我使用了startssl.com,他们提供免费的基本ssl 证书。

【讨论】:

“基本”证书和“非基本”证书有什么区别?我很难理解为什么价格差异如此之大,从 5 美元到 250 美元/年。 你发现基本包和非基本包有什么区别了吗?我也在寻找我的浏览器不会抱怨的 ssl 证书。我发现有一个名为“Lets Encrypt”的项目将免费提供此类证书,但它会在 10 月到来...... 您能否详细说明一下您是如何使用 StartSSL 完成该过程的亚马逊。 @Nab 我购买了一个域名并为该域名创建了一个证书。然后我使用 CNAME 记录将其映射到 EC2 公共 DNS 记录。【参考方案3】:

对于开发、演示、内部测试(这对我来说很常见),您可以使用隧道工具在 ec2 中实现演示级 https。在几分钟内,尤其是用于 [ngrok] 的内部测试目的,您将拥有 https(演示级流量通过隧道)

工具一:https://ngrok.com 步骤:

    将 ngrok 下载到您的 ec2 实例:wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip(在撰写本文时,登录后您将在 ngrok 主页中看到此链接)。 在您的 AWS 安全组中启用 8080、4443、443、22、80。 注册并登录到 ngrok 并复制命令以使用令牌激活它:./ngrok authtoken shjfkjsfkjshdfs(登录后您将在他们的主页上看到它) 在EC2 上运行您的 http - 非 https 服务器(任何、nodejs、python 等) 运行 ngrok:./ngrok http 80(如果您的简单 http 服务器在不同的服务器上运行,则使用不同的端口) 您将获得一个指向您的服务器的https 链接。

工具 2:cloudflare wrap

或者,我认为您可以使用名为 cloudflare wrap 的 ngrok 替代品,但我还没有尝试过。

工具 3:本地隧道

第三种选择可能是 https://localtunnel.github.io,与 ngrok 不同的是,它可以免费为您提供子域,它不是永久性的,但您可以要求特定的子域,而不是随机字符串。

--subdomain request a named subdomain on the localtunnel server (default is random characters)

工具 4:https://serveo.net/

【讨论】:

很棒的答案。正是我测试所需要的。【参考方案4】:

您可以结合使用 Caddy 和 nip.io 在没有自定义域的 EC2 实例上启用 SSL。

nip.io 允许您将任何 IP 地址映射到主机名,而无需编辑主机文件或在 DNS 管理中创建规则。

Caddy 是一个强大的开源网络服务器,具有自动 HTTPS。

    在您的服务器上安装 Caddy

    创建一个 Caddyfile 并添加您的配置(此配置会将所有请求转发到端口 8000)

    <EC2 Public IP>.nip.io 
        reverse_proxy localhost:8000
    
    

    使用命令 caddy start 启动 Caddy

你现在应该可以通过https://&lt;IP&gt;.nip.io访问你的服务器了

我在这里写了一篇关于设置的深入文章:Configure HTTPS on AWS EC2 without a Custom Domain

【讨论】:

我有同样的要求,但我在我的 ec2 实例中运行 Tomcat 服务器。所以,假设我安装了 caddy 服务器,那么你确定我的 tomcat 服务器能够为我的客户提供 https 请求。

以上是关于亚马逊 EC2 + SSL的主要内容,如果未能解决你的问题,请参考以下文章

亚马逊EC2服务器申请+NODE服务器部署+阿里云域名申请+SSL证书使用

亚马逊 ec2 如何设置 https?

amazonaws ec2怎么配置ssl

如何在支持ssl的aws ec2单实例上托管多个网站?

亚马逊云EC2助力5G产品测试

亚马逊AWS学习-创建EC2 windows