【发布时间】:2016-02-07 14:56:05
【问题描述】:
总结:
我正在尝试在 Google 的 Compute Engine (GCE) 上设置 Node.js 服务器以使用 HTTPS,但远程服务器在通过 @987654329 访问时似乎没有响应@。
到目前为止我尝试了什么:
我从 Comodo 获得了一个证书,放在后端,包含在代码中,并创建了一个 HTTPS 服务器,如下所示:
var app = express();
var https = require('https');
var fs = require('fs');
var options = {
key: fs.readFileSync('server.key'),
cert: fs.readFileSync('server.crt'),
};
...
https.createServer(options,app).listen('443',function(){
console.log('https ready')
});
我还添加了以下防火墙规则:
gcloud compute firewall-rules create allow-https --description "https server" --allow tcp:443
--format json
当我在本地机器上运行服务器并尝试通过 Chrome 使用 https://localhost:443 访问它时,我得到了预期的结果:
此服务器无法证明它是本地主机;它的安全证书来自 www.domain_name.com。这可能是由于配置错误或攻击者拦截了您的连接造成的。
意味着服务器已正确配置为能够识别https 请求,但由于证书不属于本地主机,因此会导致警告。
问题:
当我在与证书关联的域名上运行的 GCE 实例上运行相同的代码时,我没有收到来自服务器的响应。此外,根据tcpdump 有传入https 流量在正确的端口:
我运行netstat -ltnp 得到以下结果:
-
当我使用上面显示的
https配置运行服务器时,443 端口没有记录。 -
当我在端口 8080 上使用
http配置运行服务器时,该端口有记录并且一切正常。 -
当我使用
httpANDhttps配置(监听端口 8080 和端口 443)运行服务器时,两者都没有记录,服务器根本没有响应...
我的问题是:如何让我的 GCE 实例响应 https 请求?我还应该做什么或测试什么?
【问题讨论】:
-
您是否检查过(使用 tcpdump 之类的东西)HTTPS 流量是否到达了您的实例?
-
@AndreasVeithen 是的,有流量进来,看看我的编辑
-
netstat -ltnp | grep 443的输出是什么? -
@AndreasVeithen 我做了另一个编辑。
netstat -ltnp命令没有列出433端口
标签: node.js ssl https google-compute-engine google-cloud-platform