在没有任何专用IP地址的EC2服务器上安装SSL证书

时间:2013-03-02 12:49:32

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

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

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

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

这是我的Web根目录所在的所有适当的Web服务文件。我的webservice网址看起来与此类似:

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)这是否意味着我可以有一个人们能记得的更容易的webservice网址?例如.... www.pk.com/Agent/Create而不是长ec2难看的网址?!

任何易于学习的教程都会非常有用。我看了一些关于弹性IP地址,SSL证书和其他关于重命名ec2 url的文章的文章,但我处在一个我实际上不知道哪一个适用于我的位置。洛尔

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

2 个答案:

答案 0 :(得分:10)

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

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

  1. 查找主机名并获取弹性IP地址
  2. 连接并获取服务器证书,
  3. 检查服务器证书,发现它所用的主机名是他们期望的主机名。 (还有一些其他检查,例如证书是否由受信任的证书颁发机构签名,以及证书是否在其有效期内。)
  4. 这使客户可以信任他们已安全连接的人是他们期望安全连接的人,这是建立信任的关键部分。

    不执行的内容是使用您申请的证书中的AWS计算机名称(内部或外部)。这些改变,你真的不想相信别人的虚拟机。

答案 1 :(得分:7)

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

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

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

通过此设置,您可以摆脱对弹性IP地址的需求。所有连接都通过ELB。