我在ec2上运行了一个nodejs / express app,其中包含nginx和mongodb。我正在运行一个8核ec2实例,我有8个单独的我的nodejs应用程序实例运行前面的nginx。现在,我只有一台服务器。
我们即将上线,并希望确保我们的服务器仅响应SSL请求。我想知道如何以及在何处配置SSL连接。我将在有序列表中列出问题,如果您在回答整个或部分问题时可以参考问题编号,我将非常感谢。这对我来说不仅容易,而且对于读这个帖子的其他人也是如此。
他们是:
我必须像verisign那样去CA获取证书,对吗?我的域名是通过godaddy注册的,我可以从他们那里获得ssl证书吗?
我是否需要在ec2实例上安装证书?如果是的话,如果我必须为HA添加另一台服务器并且我想使用弹性负载平衡会发生什么?在这种情况下,我是否需要为每个ec2实例购买单独的证书?有人可以给我一些关于如何为ssl配置nginx的文档或教程吗?
一旦打开ssl,我如何确保所有非ssl连接自动重定向到ssl端点?我可以通过nginx中的配置条目轻松完成此操作吗?
非常感谢任何正确方向的帮助或指示。
- 苏
答案 0 :(得分:5)
1。我将不得不像verisign那样去CA获得证书,对吗?我的 域名是通过godaddy注册的,我可以从他们那里获得ssl证书吗?
是的,you can buy an SSL certificate directly through GoDaddy。
2。我是否需要在ec2实例上安装证书?
是的,您要为其提供HTTPS内容的每台服务器都需要安装证书。请小心购买可安装在多台服务器上的证书 - 某些证书只能安装在一。似乎GoDaddy允许无限制的证书安装,因此如果您使用它们不是问题,但如果您与其他人一起使用它可能是。
另一个考虑因素是,如果您希望子域名能够使用SSL(即https://*.mydomain.com不会抛出浏览器警告),那么您将需要购买通配符证书(允许无限制的子域名)或支持您要使用的特定数量的子域名的证书。
另请注意,如果您需要在AWS上的负载均衡器后面支持sticky sessions,那么您将需要install the certificate on the Elastic Load Balancer (ELB)以及所有服务器。
但是我不担心这个,直到其他一切都有效,因为你现在只有一台服务器,但要注意证书必须是X.509(它似乎是GoDaddy的)才能安装在你的ELB上。只需确保购买时不会出现问题。
有人可以指点一些关于如何为ssl配置nginx的文档或教程吗?
SSL Certificate Installation in Nginx
3。我如何确保所有非ssl连接自动重定向到ssl端点?
请参阅ServerFault上的this answer here,配置非常简单:
server {
listen 80;
server_name signup.mysite.com;
rewrite ^ https://$server_name$request_uri? permanent;
}
祝你好运。
答案 1 :(得分:1)
您可以在ELB处终止SSL连接,然后将纯HTTP传递回应用程序服务器。然后在实例上设置安全组以禁止来自客户端的任何直接连接(强制它们通过ELB)。这种方法解决了你所有的问题。