【问题标题】:Installing SSL Cert on an EC2 Server without any dedicated ip address在没有任何专用 IP 地址的 EC2 服务器上安装 SSL 证书
【发布时间】:2013-03-02 12:49:32
【问题描述】:

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

有人告诉我购买 SSL 证书是前进的方向。我运行的亚马逊服务器实例有一个这样格式的地址:

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 的文章,但我处于一个我实际上不知道哪一个适用于我的位置。哈哈

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

【问题讨论】:

    标签: web-services rest amazon-ec2 ssl-certificate ip-address


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 1) 当您说“您真的不想信任其他人的虚拟机”时,您是指IP地址可以随时更改的事实,因此建议您获得弹性IP地址?!一旦我将我的实例绑定到特定的 IP 地址,我就可以像这样访问 php:www.examplepk.com/phpmyadmin 而不是 long-url-from-ec2.com/phpmyadmin ?
    • 2) 我猜一旦实例已关联/绑定到特定的 IP 地址,我可以根据需要多次重启服务器,这反过来又会解决 IP 地址更改的问题在每台服务器启动?我什至不敢重新启动我的服务器,但我是否正确地说我的 IP 地址可能会更改,这意味着我对现有 EC2 地址所做的书签由于相同的默认丑陋 IP 地址的更改而不再起作用使用另一个丑陋的 IP 地址?
    • @Pavan 我是说其他人无法在该弹性 IP 地址上启动虚拟机;对于您正在运行的任何 VM,它都是 您的 固定 IP 地址。您可以随心所欲地重新启动,因为您将保留地址(只要您使用正确的引导配置)。上次我查的时候,你只有在没有系统使用的时候才为弹性 IP 地址付费。
    • 我不记得你是否也有标准的外部地址;如果你这样做,安排行政活动而不是公共服务地址确实是一件非常好的事情。不过,这是一个相当复杂的处理模型;首先对您的 SSL 配置进行排序。 (就个人而言,我会通过使用 SSH 通过终端登录系统来完成我所有的管理工作,因为我可以比任何 web 应用程序更严格地锁定它。YMMV。)
    【解决方案2】:

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

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

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

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

    【讨论】:

    • 感谢您的帖子。您能告诉我在哪些情况下可能需要添加更多服务器吗?
    • 1) 每当您的服务负载超过(或接近)服务器容量时。 2)如果要添加冗余,从而提高可用性。 2绝对是最佳实践。 1 是当您的服务增长时可能会敲门的东西。
    猜你喜欢
    • 2011-08-31
    • 2018-03-17
    • 1970-01-01
    • 1970-01-01
    • 2020-06-08
    • 2010-11-08
    • 2013-02-25
    • 2016-05-29
    • 2014-09-15
    相关资源
    最近更新 更多