我尝试在Google的计算引擎( GCE )上设置Node.js服务器以使用HTTPS,但远程服务器没有&#39 ; t似乎在通过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')
});
我还添加了以下防火墙规则:
gcloud compute firewall-rules create allow-https --description "https server" --allow tcp:443
--format json
当我在本地计算机上运行服务器并尝试通过Chrome使用https://localhost:443
访问它时,我得到了预期的结果:
此服务器无法证明它是localhost;其安全证书来自www.domain_name.com。这可能是由于配置错误或攻击者拦截您的连接造成的。
表示服务器已正确配置为能够识别https
请求,但由于证书不属于localhost,因此会发出警告。
当我在与证书关联的域名上运行的GCE实例上运行相同的代码时,我得不到服务器的响应。此外,根据tcpdump
,在正确的端口上传入https
流量:
我使用以下结果运行netstat -ltnp
:
当我运行上面显示https
配置的服务器时,没有443端口的记录。
当我在端口8080上运行http
配置的服务器时,该端口有一条记录,一切正常。
当我使用http
AND https
配置(侦听端口8080和端口443)运行服务器时,两者都没有记录,并且根本没有来自服务器的响应......
我的问题是:如何让我的GCE实例回复https
个请求?我还应该做什么或测试什么?
答案 0 :(得分:2)
可能您是以非root用户身份运行服务器,但无法绑定到端口443(这是一个特权端口)。