【发布时间】:2015-12-01 02:01:28
【问题描述】:
以下 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)
【问题讨论】:
标签: node.js ssl curl https webhooks