UNABLE_TO_VERIFY_LEAF_SIGNATURE | не удалось проверить первый сертификат

Эта ошибка внезапно начала возникать на всех моих серверах, и, несмотря на все попытки, предложенные здесь, мне не удалось ее устранить. Проблема сохраняется независимо от URL-адреса, к которому я пытаюсь получить доступ, включая, например, «google.com». Моя среда состоит из Windows Server 2019 и Node.js версии 21.7.3. Я пытался отправлять запросы, используя как Axios, так и Node-fetch, но обнаружил одну и ту же ошибку в обоих случаях. Удивительно, но при использовании CURL все работает так, как ожидалось. Ниже приведен пример кода, с которым я работал.

const axios = require('axios');
axios.get('https://google.com')
  .then(function (response) {
    console.info(response);
  })
  .catch(function (error) {
    console.info(error);
  });

РЕШЕНО. Эта проблема вызвана SSL-фильтром Eset.

ShobiDobi 18.04.2024 14:04

У нас та же проблема; это определенно изменение ESET

Dr Rob Lang 18.04.2024 16:30
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
4
2
1 247
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

После нескольких часов устранения неполадок я могу подтвердить, что это недавнее обновление Eset Internet Security.

Проблема в моем приложении Node выглядела следующим образом:

Error occurred while trying to proxy request /elastic from localhost:8080 to https://myserver.example (UNABLE_TO_VERIFY_LEAF_SIGNATURE)

Что помогло в моем случае — настройки Eset Internet Security:

  1. Выберите Интернет-защиту
  2. Открыть подменю SSL/TLS слева
  3. Проверьте правила для приложений и сертификатов.
  4. Если какой-либо сертификат заблокирован или для него установлено значение «Автоматически», измените его на «Разрешено», а «Действие сканирования» измените на «Игнорировать». Сделайте это для сертификатов и URL-адресов, которые вы знаете. Моя проблема была с сервером на стадии разработки.

Альтернативное решение: полностью отключите параметр «Включить сканирование трафика HTTPS».

Бро, ты чертова легенда! Я сделаю еще один ответ, просто чтобы показать, где они могут его найти. СПАСИБО

Mohammad Farhadi 22.04.2024 16:32

Я рад, что это помогает другим людям. Мне потребовалась целая вечность, чтобы найти, потому что простое отключение Eset как-то не помогло. Это был номер 1, который я попробовал, но ошибка осталась.

Peter Matisko 23.04.2024 09:46

Точно! Я потратил больше 10 часов и не смог найти!!! Очень ценю ваши усилия и ваш ответ, он помог мне выжить :)

Mohammad Farhadi 23.04.2024 10:05

1000 Спасибо Питеру Матиско , shobidobi , jkaos92!

Внимание: Насколько я проверил, эта проблема возникает только у тех из вас, у кого на компьютере установлен ESET!

Выполните следующие действия в новом обновлении, и вы сможете найти подходящее место для отключения/исправления проблемы SSL/TLS:

  1. Откройте ESET
  2. Перейдите на вкладку «Настройка» в боковом меню.
  3. Нажмите на сеть
  4. Нажмите на одну из кнопок ⚙️ справа.
  5. Перейдите на вкладку SSL/TLS в боковом меню.
  6. Оставьте SSL включенным и нажмите «Изменить» в правилах сканирования приложений.
  7. Добавьте узел (node.exe) в исключение (метка: «игнорировать»).


Для тех из вас, кто использует GitHub Copilot и столкнулся с той же проблемой (первый сертификат), выполните следующие действия, чтобы исправить ее:

  1. Откройте ESET

  2. Перейдите на вкладку «Настройка» в боковом меню.

  3. Нажмите на сеть

  4. Нажмите на одну из кнопок ⚙️ справа.

  5. Перейдите на вкладку SSL/TLS в боковом меню.

  6. Нажмите «Изменить правила сертификата».

  7. Нажмите кнопку «Добавить».

  8. Нажмите на URL-адрес

  9. Затем добавьте эти 2 URL-адреса (отдельно):

    а. https://copilot-proxy.githubusercontent.com

    б. https://api.githubcopilot.com

  10. В действии «Сканировать» выберите «Игнорировать».

Источник: Документы GitHub

В отличие от респондентов выше, я считаю, что это касается не только тех, кто использует ESET; это случилось со мной в двух средах, ни в одной из которых не работал ESET.

Как объяснено в [https://www.codewithyou.com/blog/how-to-use-axios-to-handle-ssltls-certificate-verification-errors-in-nodejs]этой статьи, ошибка указывает на то, что «Ваше приложение не может проверить сертификат SSL/TLS, представленный сервером».

Далее в статье предлагается возможность отключить настройку безопасности в axios, передав ему собственный httpAgent, например:

const axios = require('axios'); // standard axios
const https = require('https'); // added for this workaround

const agent = new https.Agent({ // this block added for the workaround
  rejectUnauthorized: false,
})

axios
  .get('https://example.com', {
    httpsAgent: agent,          // this option added for the workaround
  })
  .then ...

Это решение сработало для меня. Я надеюсь, что это поможет и кому-то еще.

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