【问题标题】:SSL on Google Compute Engine with nodejs谷歌计算引擎上的 SSL 与 nodejs
【发布时间】: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 配置运行服务器时,该端口有记录并且一切正常。

  • 当我使用http AND https 配置(监听端口 8080 和端口 443)运行服务器时,两者都没有记录,服务器根本没有响应...

我的问题是:如何让我的 GCE 实例响应 https 请求?我还应该做什么或测试什么?

我发现了关于这个主题的几个问题(q1q2q3q4),似乎我做了那里推荐的所有事情,但我的问题仍然存在。

【问题讨论】:

  • 您是否检查过(使用 tcpdump 之类的东西)HTTPS 流量是否到达了您的实例?
  • @AndreasVeithen 是的,有流量进来,看看我的编辑
  • netstat -ltnp | grep 443 的输出是什么?
  • @AndreasVeithen 我做了另一个编辑。 netstat -ltnp命令没有列出433端口

标签: node.js ssl https google-compute-engine google-cloud-platform


【解决方案1】:

可能您以非 root 用户身份运行服务器,并且无法绑定到端口 443(这是一个特权端口)。

【讨论】:

  • 我有同样的问题,但仍然发生在我身上
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-05
  • 2014-04-18
相关资源
最近更新 更多