【问题标题】:Install COMODO EV SSL Certificate on EC2 Ubuntu Instance在 EC2 Ubuntu 实例上安装 COMODO EV SSL 证书
【发布时间】:2014-03-13 03:35:03
【问题描述】:

提前感谢您的帮助。

这是我第一次设置 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

我也有文本格式的。如何设置它以便可以通过 HTTPS 访问我的 node.js 应用程序?该应用程序在带有 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!

知道出了什么问题吗?提前感谢您的帮助!

【问题讨论】:

  • 您是如何从 Comodo 获得 .key 文件的?

标签: ubuntu ssl https amazon-ec2


【解决方案1】:

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

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

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

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

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

阿帕奇

抓住以下:

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

【讨论】:

  • 非常感谢您的回复,Rico。几个跟进问题--1。我应该将示例配置添加到 apache2.conf 的末尾吗? 2. 真的应该是 0.0.0.0:443 还是应该输入实际的 IP 地址? 3. 我应该更改另外两个地址(ProxyPass、ProxyPassReverse)吗?谢谢!
【解决方案2】:

这只是@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 服务器应该运行的位置。

【讨论】:

  • 嗨,再次感谢 Rico 的帮助。哈哈刚刚查看了您的个人资料,我们恰好住在同一个城镇。无论如何,当我运行“sudo a2dismod default”时,我得到了这个错误:“错误:模块默认值不存在!”知道如何解决这个问题吗?谢谢!
  • 太酷了,我们是邻居 :-) 所以基本上sudo a2dismod default 正在禁用您第一次在 Ubuntu 上安装 apache 时配置的默认 apache 站点。所以你得到了一个错误,因为它可能已经被禁用了。您可以通过运行ls /etc/apache2/sites-enabled/ 进行检查,如果您没有看到默认值,则它没有启用。
  • 嗯...我一定错过了什么。 /etc/apache2/sites-enabled 的内容是 000-default.conf 和我刚刚创建的文件(forumHTTPSconfig),里面有配置代码。当我运行“sudo a2enmod forumHTTPSconfig”时,我得到同样的错误:“错误:模块 forumHTTPSconfig 不存在!”再次感谢您的帮助。
  • 那么您要运行的是a2dissite 000-default,或者您可以删除a2dissite 脚​​本正在执行的链接:rm -f /etc/apache2/sites-enabled/000-default.conf
  • 很好,a2dissite 000-default 工作。下一步是什么?我尝试了sudo a2enmod forumHTTPSconfig 并收到了通常的错误消息。
猜你喜欢
  • 1970-01-01
  • 2020-10-31
  • 2021-02-17
  • 1970-01-01
  • 1970-01-01
  • 2017-04-07
  • 2016-05-29
  • 2012-04-24
  • 1970-01-01
相关资源
最近更新 更多