node JS получить запрос, получить предупреждение SSL номер 40, работает в curl и python - PullRequest
0 голосов
/ 04 февраля 2020

Мы находимся в процессе переноса некоторых наших бэкэндов на узел и столкнулись со следующей проблемой (как для linux, так и для ma c). Это наш curl, который работает:

curl --insecure --cert-type pem --cert CERT.pem  "https://USER:PASS@www.website.com/info"

В python мы используем библиотеку запросов (которая также работает):

    import requests
    r = requests.get('https://USER:PASS@www.website.com/info', auth=('USER', 'PASS'), cert='CERT.pem')

Как я уже упоминал, мы попробовали это в JS безуспешно:

const request = require('request')
const options = {
    url: "https://www.website.com/info",
    auth: { 
        'user': 'USER', 
        'pass': "PASS",
        'sendImmediately': false
    },
    insecure: true,
    cert: fs.readFileSync("CERT.pem")
};


request.get(options, (err, res, body) => {
    if (err) { return console.log(err); }
    console.log(res)
    console.log(body.url);
    console.log(body.explanation);
    resolve(JSON.parse(body.explanatio))
});

Мы получаем следующий результат:

Error: write EPROTO 4514557376:error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure:../deps/openssl/openssl/ssl/record/rec_layer_s3.c:1536:SSL alert number 40

    at WriteWrap.onWriteComplete [as oncomplete] (internal/stream_base_commons.js:87:16) {
  errno: 'EPROTO',
  code: 'EPROTO',
  syscall: 'write'
}

Я понимаю, что это на самом деле не проблема JS, однако я не совсем понимаю SSL проблема и как это исправить. Для действительно ценят внутреннюю информацию о том, как продолжить отладку / устранение проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...