7

场景: 我有一个 EC2 服务器,其中包含当前设置为接受来自多个 iPad 的连接的 api。我不希望网络嗅探器看到服务器和设备之间正在交换的 JSON 请求。这个想法是建立一个安全的协议,以便确保通信安全。

有人告诉我购买 SSL 证书是前进的方向。我正在运行的 Amazon 服务器实例具有以下格式的地址:

ec2-xx-xxx-xx-xxx.ap-southeast-1.compute.amazonaws.com/

这是我的 Web 根目录与所有适当的 Web 服务文件所在的位置。我的网络服务 url 看起来类似于这样:

ec2-xx-xxx-xx-xxx.ap-southeast-1.compute.amazonaws.com/Agent/Create

依此类推。没有任何托管计划(在需要信息的情况下)。有人建议我从http://www.Godaddy.com购买 SSL 证书,并考虑获得最多 5 个多域 SSL 证书包。

问题: 1 我需要注意哪些事项才能确保没有任何问题?我最近读到我可能需要为我的实例关联一个弹性 IP 地址,否则我的实例的 IP 会在重启时发生变化?如果是这种情况,这意味着用于此的 SSL 证书:ec2-xx-xxx-xx-xxx.ap-southeast-1.compute.amazonaws.com 域将不再有效,因为 IP 地址将重新启动后发生了变化,因此我失去了我的安全域?

问题:2 如果我在问题 1 中的想法成立,那么我的问题将是什么是最用户友好的方式,或者说,初学者为我的服务器实例创建专用 url 的方式(以便 1)域名在服务器重新启动时不会随机更改(不确定我什么时候会重新启动)和 2)这是否意味着我可以拥有更容易记住的 web 服务 url?比如....www.pk.com/Agent/Create而不是长长的 ec2 丑陋的 url?!

任何易于遵循的教程都会非常有帮助。我看过一些关于弹性 IP 地址、SSL 证书和其他关于重命名 ec2 url 的文章,但我处于一个我实际上不知道哪一个适用于我的位置。哈哈

希望有人可以提供帮助。谢谢

4

2 回答 2

11

您要做的是获得一个弹性 IP 地址。这使您可以在启动实例时将其绑定到特定的IP 地址。然后,您可以在 DNS 中注册一个主机名(亚马逊不会在这部分为您提供帮助)并声明该主机名的 IP 地址是您注册的弹性 IP 地址。

最后一步是获取在其专有名称的 CN 字段中具有主机名的服务器证书(严格来说,一个密钥对,其中公共部分是服务器证书),并在实例上安装该服务器密钥对。(这是亚马逊无法帮助您的另一部分,实际上与您自己托管硬件的过程相同。)就像这样,客户端

  1. 查找主机名并获取弹性 IP 地址,
  2. 连接并获取服务器证书,以及
  3. 检查服务器证书并看到它的主机名是他们期望的主机名。(还有其他一些检查,例如证书是否由受信任的证书颁发机构签名以及证书是否在其有效期内。)

这允许客户端相信他们安全连接的人就是他们希望安全连接的人,这是建立信任的关键部分。

不做的是在您申请的证书中使用 AWS 机器名称(内部或外部)。这些变化,你真的不想相信其他人的虚拟机。

于 2013-03-02T15:16:59.677 回答
7

多纳尔的答案是要走的路。您需要显式注册一个域并生成包含 CN 作为该域的 SSL 证书。在这个问题上,弹性 IP 地址绝对是您的朋友。你需要它们。

我添加了另一个答案以提供另一种观点:如果您想扩展后端解决方案,那么这样做会更加困难。如果您曾经考虑过添加更多服务器来托管您的 Web 服务,那么您绝对应该设置一个Elastic Load Balancer,将您的实例添加到其中,并将您刚刚注册的域指向您的 Elastic Load Balancer。然后,您可以购买 SSL 证书并将其直接安装在 ELB 上,在 ELB 上配置 SSL 终止。您还将配置 ELB,以便到达端口 443 的连接将映射到服务器上的端口 80(或任何端口)。别担心,这很容易设置。

每当您想向 Web 服务添加更多服务器时,只需设置另一个 EC2 实例(该过程可以而且应该自动化)并将其添加到 ELB。

通过此设置,您无需使用弹性 IP 地址。所有连接都通过 ELB。

于 2013-03-02T17:46:26.620 回答