Node.JS Webhook 的 https 服务器出现握手错误
Node.JS https server for Webhook gets handshake error
以下 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)
更新:
这是最新代码。我创建了一个没有密码的自签名证书。我走得更远,但使用添加了 -k 选项的 curl 时仍然出现错误。我在没有 -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)
HTTPS 服务器配置始终需要 SSL 证书。您可以在 more details 中使用 openssl
生成它。
然后对于节点服务器使用 crypto
,fs
模块。详细配置为here.
以下 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)
更新:
这是最新代码。我创建了一个没有密码的自签名证书。我走得更远,但使用添加了 -k 选项的 curl 时仍然出现错误。我在没有 -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)
HTTPS 服务器配置始终需要 SSL 证书。您可以在 more details 中使用 openssl
生成它。
然后对于节点服务器使用 crypto
,fs
模块。详细配置为here.