用于Webhook的Node.JS https服务器获取握手错误

下面的NodeJS只是处理来自另一个源的webhook。 我testing了它,它在http端口80上工作,但源需要https。

当我打开该端口并在443上运行此脚本时,使用curl进行testing会得到以下错误。 但是我不认为应该要求证书吗? 我怎么解决这个问题?

curl: (35) SSL peer handshake failed, the server most likely requires a client certificate to connect

这是脚本:

 var http = require('https') var server = http.createServer(function(req, res) { if (req.method == "POST") { var str = '' req.on('data', function(data) { str += data }) req.on('end', function() { var json = JSON.parse(str) res.end(json.meta.status) }) } }) console.log("HTTPS server listening on port 443...") server.listen(443) 

更新:

这是最新的代码。 我创build了一个没有密码的自签名证书。 我得到了进一步,但我仍然得到一个错误使用curl与-k选项添加。 没有-k,我得到一个证书validation错误。

Cannot POST /

 var https = require('https') var fs = require('fs') var express = require('express'); var options = { key: fs.readFileSync('./server.key'), cert: fs.readFileSync('./server.cert') } var app = express() var server = https.createServer(options, app, function(req, res) { if (req.method == "POST") { var str = '' req.on('data', function(data) { str += data }) req.on('end', function() { var json = JSON.parse(str) res.end(json.meta.status) }) } }) console.log("HTTPS server listening on port 443...") server.listen(443) 

HTTPS服务器configuration始终需要SSL证书。 你可以使用openssl来生成这个更详细的信息 。 然后为节点服务器使用cryptofs模块。 详细的configuration在这里 。