用于Webhook的Node.JS https服务器收到握手错误

时间:2015-09-04 20:25:21

标签: node.js ssl curl https webhooks

以下NodeJS只处理来自其他来源的webhook。我测试了它,它适用于http端口80,但源需要https。

当我打开该端口并在443上运行此脚本时,使用curl对其进行测试会出现以下错误。然而,我不认为它应该需要证书吗?我怎么能解决这个问题?

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)

更新:

这是最新的代码。我创建了一个没有密码短语的自签名证书。我得到了更多,但我仍然使用curl添加-k选项时出错。没有-k的情况下我收到了证书验证错误。

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)

1 个答案:

答案 0 :(得分:1)

HTTPS服务器配置始终需要SSL证书。您可以使用opensslmore details中生成它。 然后,对于节点服务器,使用cryptofs个模块。详细配置为here