Мыльный клиент с узлом и ошибка возврата сильного мыла с сертификатом

Я использую сильный-мыльный (но с нод-мылом - тот же результат) модуль узла для соединения со службами мыла.

На первом этапе я создаю клиент и пытаюсь подключить один метод, в данном случае метод "doLogin".

Мой код:

soap.createClient(url, clientOptions, (err, client) => {
var loginApi = { UserName: "xxxx", Password: "xxxxxx" };
var loginUser = {
  userName: "comercial@xxxxx.com"
};
client.addSoapHeader(header);
//client.setSecurity(new soap.BasicAuthSecurity(loginApi));
// we now have a soapClient - we also need to make sure there's no `err` here.
client.doLogin(loginUser, (err, result) => {
  //'result' is the response body
  console.error(err);
  console.log("Result: \n" + JSON.stringify(result));
});

Но переменная err возвращает эту ошибку в консоли:

{ Error: unable to verify the first certificate
    at TLSSocket.<anonymous> (_tls_wrap.js:1105:38)
    at emitNone (events.js:106:13)
    at TLSSocket.emit (events.js:208:7)
    at TLSSocket._finishInit (_tls_wrap.js:639:8)
    at TLSWrap.ssl.onhandshakedone (_tls_wrap.js:469:38) code: 
    'UNABLE_TO_VERIFY_LEAF_SIGNATURE' }

и результат undefined,

  1. почему происходит эта ошибка?
  2. результат не определен по ошибке?

2 ответа

Решение

ФИКСИРОВАННЫЙ:

Я добавил правильные сертификаты и rejectUnauthorized: false создать клиент и добавить к заголовкам директиву envelope, и теперь она работает.

Мне не нравится инструкция rejectUnauthorized: false по темам безопасности, и я хотел бы знать, как удалить это в производственной среде.

Спасибо!!

Я столкнулся с той же ошибкой, не удалось проверить первый сертификат. Это связано с тем, что сертификат SSL не подтвержден.

Ваш скрипт nodejs вызывает ваш сервер, он будет выполнять полный процесс проверки TLS (как вы надеетесь). Это проверит сертификаты на действительность и т. Д.

Чтобы обойти эту проблему, вы можете выполнить следующие шаги:

npm config set strict-ssl false

Рекомендуется установить для него истинное послесловие, чтобы случайно не установить ненадежный модуль, которому вы на самом деле не доверяете.

После этого,

npm cache clean --force

Добавьте следующую переменную среды:

NODE_TLS_REJECT_UNAUTHORIZED=0

Для Linux:

export NODE_TLS_REJECT_UNAUTHORIZED=0

Для Nginx

NODE_TLS_REJECT_UNAUTHORIZED=0

Для окна: это будет установлено только для текущего экрана командной строки,

set NODE_TLS_REJECT_UNAUTHORIZED=0

Это решило проблему для меня. Пожалуйста, попробуй

Примечание. Убедитесь, что вы не оставили эту опцию включенной. Пожалуйста, не отключайте проверки TLS.

Другие вопросы по тегам