Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于Webhook的Node.JS https服务器获取握手错误_Node.js_Ssl_Curl_Https_Webhooks - Fatal编程技术网

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

用于Webhook的Node.JS https服务器获取握手错误,node.js,ssl,curl,https,webhooks,Node.js,Ssl,Curl,Https,Webhooks,下面的NodeJS只处理来自另一个源的webhook。我测试了它,它在http端口80上工作,但源代码需要https 当我打开这个端口并在443上运行这个脚本时,用curl测试它会得到以下错误。但我认为它不需要证书,是吗?我怎么解决这个问题呢 curl:(35)SSL对等握手失败,服务器很可能需要客户端证书才能连接 以下是脚本: var http = require('https') var server = http.createServer(function(req, res) {

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

当我打开这个端口并在443上运行这个脚本时,用curl测试它会得到以下错误。但我认为它不需要证书,是吗?我怎么解决这个问题呢

curl:(35)SSL对等握手失败,服务器很可能需要客户端证书才能连接

以下是脚本:

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)
更新:

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

无法发布/

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服务器配置始终需要SSL证书。您可以使用中的
openssl
生成它。
然后,对于节点服务器,使用
crypto
fs
模块。详细配置是。

这很有帮助,但我仍然无法让它工作,至少不是这样。上面写着密码读错了。如何将密码包括到证书中?尝试添加
密码短语
选项以及
证书
@Nathan McKaskle没有奇迹,好吗。尝试使用ket/cert@NathanMcKaskleOh我明白了,没关系,你把它和创建一个没有密码的证书联系起来了。我会试试的。请看上面我的帖子的更新。您所说的操作似乎至少允许服务器现在运行。也许我做错了什么。