2

我有一个使用 Nginx 和 Mongodb 在 ec2 上运行的 Nodejs/Express 应用程序。我在一个 8 核 ec2 实例上运行,并且我的 Nodejs 应用程序有 8 个单独的实例在 Nginx 前面运行。目前,我只有一台服务器。

我们即将上线,并希望确保我们的服务器仅响应 SSL 请求。我想知道如何以及在哪里配置 SSL 连接。

他们来了:

  1. 我必须去像 Verisign 这样的 CA 才能获得证书,对吗?我的域名是通过 Godaddy 注册的,我可以从他们那里获得 ssl 证书吗?

  2. 我需要在 ec2 实例上安装证书吗?如果是,如果我必须为 HA 添加另一台服务器并且我想使用弹性负载平衡会发生什么?在这种情况下,我是否需要为每个 ec2 实例购买单独的证书?是否有一些关于如何为 ssl 配置 Nginx 的文档或教程?

  3. 打开 ssl 后,如何确保所有非 ssl 连接都自动重定向到 ssl 端点?我可以通过 Nginx 中的配置条目轻松完成此操作吗?

4

2 回答 2

5

1. 我必须去像威瑞信这样的 CA 来获得证书,对吗?我的域名是通过 godaddy 注册的,我可以从他们那里获得 ssl 证书吗?

是的,您可以直接通过 GoDaddy 购买 SSL 证书

2. 我需要在ec2实例上安装证书吗?

是的,您要在其上提供 HTTPS 内容的每台服务器都需要安装证书。小心购买可以安装在多台服务器上的证书 - 有些证书只能安装在一台服务器上。GoDaddy 似乎允许无限制地安装证书,因此如果您使用它们,这不是问题,但如果您与其他人一起使用,则可能会出现问题。

另一个考虑因素是,如果您希望子域能够使用 SSL(即 https://*.mydomain.com 不会引发浏览器警告),您将需要购买通配符证书(以允许无限制子域)或支持您要使用的特定数量的子域的证书。

另请注意,如果您需要在 AWS 上的负载均衡器后面支持粘性会话,则需要在 Elastic Load Balancer (ELB)以及所有服务器上安装证书。

但是在其他一切正常之前我不会担心这一点,因为您现在只有一台服务器,但请注意证书必须是 X.509(看起来是 GoDaddy 的)才能安装在您的 ELB 上。只是在购买时确保它不会成为未来的问题。

有人可以指点我一些关于如何为 ssl 配置 nginx 的文档或教程吗?

在 Nginx 中安装 SSL 证书

3. 如何确保所有非 ssl 连接都自动重定向到 ssl 端点?

在 ServerFault 上查看这个答案,配置起来非常简单:

server {
    listen      80;
    server_name signup.mysite.com;
    rewrite     ^   https://$server_name$request_uri? permanent;
} 

祝你好运。

于 2013-03-06T03:13:39.517 回答
1

您可以在 ELB 处终止 SSL 连接,然后将纯 HTTP 传回应用程序服务器。然后在您的实例上设置安全组以禁止来自客户端的任何直接连接(强制它们通过 ELB)。这种方法几乎可以解决您所有的问题。

于 2013-03-06T10:09:49.927 回答