在EC2 Ubuntu实例上安装COMODO EV SSL证书

时间:2014-02-13 23:47:08

标签: ubuntu ssl https amazon-ec2

提前感谢您的帮助。

这是我第一次设置HTTPS,我刚收到Comodo的证书,但不知道如何处理它。证书来自.zip文件,其中包含以下文件:

Root CA Certificate - AddTrustExternalCARoot.crt
Intermediate CA Certificate - COMODOAddTrustServerCA.crt
Intermediate CA Certificate - COMODOExtendedValidationSecureServerCA.crt
Your COMODO EV SSL Certificate - forum_linma_com.crt

我也有文字格式。如何设置它以便我的node.js应用程序可以通过HTTPS访问?该应用程序在使用Ubuntu 13.10的EC2实例上运行,我使用SSH访问服务器。

跟进问题

所以我仍然收到错误。以下是相关信息:

/etc/apache2/sites-enabled/forumHTTPSconfig的内容(已启用网站的唯一文件):

<VirtualHost *:443>
   ServerName forum.figma.com
   SSLEnable
   SSLEngine on
   SSLCertificateFile /etc/apache2/forum_figma_com.crt
   SSLCertificateKeyFile /home/ubuntu/.ssh/myserver.key
   SSLCACertificateFile /etc/apache2/combined-ca.crt
</VirtualHost>

<IfModule mod_proxy.c>
    <Proxy *>
      SSLProxyEngine on
      Order deny,allow
      Allow from all
    </Proxy>

    RewriteEngine on

    ProxyPass / https://127.0.0.1:3000
    ProxyPassReverse /http://127.0.0.1:3000
</IfModule>

以下是我尝试拨打a2enmod的输出结果:

ubuntu@ip-10-190-91-217:/etc/apache2/sites-enabled$ sudo a2enmod forumHTTPSconfig
ERROR: Module forumHTTPSconfig does not exist!
ubuntu@ip-10-190-91-217:/etc/apache2/sites-enabled$ sudo a2enmod mywebsite
ERROR: Module mywebsite does not exist!

知道出了什么问题吗?在此先感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

首先,请记住,您最初用于生成证书的私有key文件。您将在配置中使用它。

  1. 设置它的一种方法是在node.js应用上配置HTTPS。您可以在此处找到更多信息:

    http://nodejs.org/docs/latest/api/https.html

  2. 另一种设置方法是使用apache或nginx为您的node.js应用程序设置反向代理。

  3. <强> nginx的

    抓住所有文件:

    Root CA Certificate - AddTrustExternalCARoot.crt
    Intermediate CA Certificate - COMODOAddTrustServerCA.crt
    Intermediate CA Certificate - COMODOExtendedValidationSecureServerCA.crt
    Your COMODO EV SSL Certificate - forum_linma_com.crt
    

    将所有内容连接到forum_linma_com.crt

    以下是一个示例配置:

    server {
        listen       443;
        server_name  yourdomain.com;
    
        ssl                  on;
        ssl_certificate      /path/to/forum_linma_com.crt;
        ssl_certificate_key  /path/to/forum_linma_com.key;
    
        location / {
            proxy_pass  http://localhost:3000;
            proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
            proxy_redirect off;
            proxy_buffering off;
            proxy_set_header        Host            static.example.com;
            proxy_set_header        X-Real-IP       $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
    

    以下是有关nginx和反向代理的更多信息:

    http://wiki.nginx.org/HttpProxyModule

    <强>的Apache

    抓住以下内容:

    Root CA Certificate - AddTrustExternalCARoot.crt
    Intermediate CA Certificate - COMODOAddTrustServerCA.crt
    Intermediate CA Certificate - COMODOExtendedValidationSecureServerCA.crt
    

    将所有内容连接到一个文件中:combined-ca.crt

    这是一个示例配置:

    <VirtualHost 0.0.0.0:443>
       ServerName mydomain.com
       SSLEnable
       SSLEngine on
       SSLCertificateFile /path/to/forum_linma_com.crt
       SSLCertificateKeyFile /path/to/forum_linma_com.key  
       SSLCACertificateFile /path/to/combined-ca.crt
    
    <IfModule mod_proxy.c>
        <Proxy *>
          SSLProxyEngine on
          Order deny,allow
          Allow from all
        </Proxy>
    
        RewriteEngine on
    
        ProxyPass / https://127.0.0.1:3000
        ProxyPassReverse /http://127.0.0.1:3000
    </IfModule>
    
    </VirtualHost>
    

    3000是运行node.js服务器的端口。

    以下是Apache和反向代理的更多信息:

    http://httpd.apache.org/docs/2.2/mod/mod_proxy.html

答案 1 :(得分:1)

这只是来自@ AaronClayton-Dunn的澄清。

  

我应该将示例配置添加到apache2.conf的末尾吗?

由于您使用的是Ubuntu,通常的步骤是创建一个文件:/etc/apache2/sites-enabled/mywebsite并将示例内容放在那里。

要启用它,您可以运行:

sudo a2dismod default
sudo a2enmod mywebsite
sudo service apache2 restart
  

真的应该是0.0.0.0:443还是应该放入实际的IP地址?

您可以使用0.0.0.0或*(星号),它基本上告诉它监听服务器上的任何地址。除非您想限制对Web服务器的访问,否则无需输入特定的IP地址,这意味着客户端必须使用特定的IP地址连接到您的服务器。

  

我应该更改另外两个地址(ProxyPass,ProxyPassReverse)吗?

没有。这些语句基本上是将您在站点443上的/所有内容转发到HTTP端口3000,这是您的node.js服务器应该运行的地方。