提前感谢您的帮助。
这是我第一次设置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!
知道出了什么问题吗?在此先感谢您的帮助!
答案 0 :(得分:3)
首先,请记住,您最初用于生成证书的私有key
文件。您将在配置中使用它。
设置它的一种方法是在node.js应用上配置HTTPS。您可以在此处找到更多信息:
另一种设置方法是使用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
<强>的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和反向代理的更多信息:
答案 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服务器应该运行的地方。