带有nodejs的Google Compute Engine上的SSL

Ara*_*zer 5 ssl https node.js google-compute-engine google-cloud-platform

摘要:

我正在尝试在Google的计算引擎(GCE)上设置Node.js服务器以使用HTTPS,但远程服务器在访问时似乎没有响应.https://...

到目前为止我尝试了什么:

我从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')
        });
Run Code Online (Sandbox Code Playgroud)

我还添加了以下防火墙规则:

gcloud compute firewall-rules create allow-https --description "https server" --allow tcp:443
--format json
Run Code Online (Sandbox Code Playgroud)

当我在本地计算机上运行服务器并尝试https://localhost:443通过Chrome 访问它时,我得到了预期的结果:

此服务器无法证明它是localhost; 其安全证书来自www.domain_name.com.这可能是由于配置错误或攻击者拦截您的连接造成的.

这意味着服务器已正确配置为能够识别https请求,但由于证书不属于localhost,因此会导致警告.

问题:

当我在与证书关联的域名上运行的GCE实例上运行相同的代码时,我得不到服务器的响应.此外,根据tcpdump存在的传入https正确的端口上的流量:

tcpdump输出我的情况

我跑netstat -ltnp了以下结果:

  • 当我使用https上面显示的配置运行服务器时,没有443端口的记录.

  • 当我http在端口8080上运行带有配置的服务器时,该端口有一条记录,一切正常.

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

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

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

And*_*hen 3

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