https-сервер Node.JS для Webhook получает ошибку рукопожатия

Следующий NodeJS просто обрабатывает веб-перехватчик из другого источника. Я протестировал его, он работает на 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)

person Nathan McKaskle    schedule 04.09.2015    source источник


Ответы (1)


Конфигурация HTTPS-сервера всегда требует SSL-сертификата. Вы можете сгенерировать его с помощью openssl здесь в подробнее. Затем для узлового сервера используйте crypto, fs модули. Подробная конфигурация находится здесь.

person Dmitry Savinkov    schedule 05.09.2015
comment
Это было полезно, но я все еще не могу заставить его работать, по крайней мере, не так. Пишет неверный пароль прочитан. Как включить пароль в сертификат? - person Nathan McKaskle; 06.09.2015
comment
попробуйте добавить опцию passphrase вместе с key и cert. @НатанМакКаскл - person Dmitry Savinkov; 06.09.2015
comment
чуда нет, ок. попробуйте использовать ket/cert без парольной фразы. @НатанМакКаскл - person Dmitry Savinkov; 06.09.2015
comment
О, я ничего не понимаю, вы связали это с созданием сертификата без парольной фразы. Я попробую это. - person Nathan McKaskle; 07.09.2015
comment
Смотрите мое обновление к моему сообщению выше. То, что вы сказали сделать, похоже, позволяет серверу работать по крайней мере сейчас. Может быть, я делаю что-то еще не так. - person Nathan McKaskle; 07.09.2015
comment
@NathanMcKaskle, какую ошибку вы получаете сейчас? - person Dmitry Savinkov; 08.09.2015
comment
При попытке curl он говорит, что не может POST/см. выше редактировать сообщение. - person Nathan McKaskle; 09.09.2015
comment
Неважно, у меня это заработало на самом деле. Это была экспресс-часть. На самом деле я не использую экспресс в этом сценарии веб-перехватчика. Не уверен, почему это было причиной этого. Я удалил его, и теперь я могу свернуться без ошибок, но только если я сделаю -k. Я должен выяснить, как обойтись без -k. Должен ли это быть законный сертификат? - person Nathan McKaskle; 09.09.2015