Мыльный клиент с узлом и ошибка возврата сильного мыла с сертификатом
Я использую сильный-мыльный (но с нод-мылом - тот же результат) модуль узла для соединения со службами мыла.
На первом этапе я создаю клиент и пытаюсь подключить один метод, в данном случае метод "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
,
- почему происходит эта ошибка?
- результат не определен по ошибке?
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.