В чем причина возникновения ошибки -4046 с кодом 'EPROTO'?

Я столкнулся с проблемой: код, который я написал, работает на моем ноутбуке, но при попытке его запустить на компьютере возникает следующая ошибка: 
<pre><code>Error: write EPROTO D4380000:error:0A000419:SSL routines:ssl3_read_bytes:tlsv1 alert access denied:c:\ws\deps\openssl\openssl\ssl\record\rec_layer_s3.c:1605:SSL alert number 49</code></pre> 
Внешне все настройки и параметры выглядят одинаковыми, так как я просто пытаюсь отправить запрос с помощью curl. На одном устройстве все работает, а на другом возникает указанная ошибка. Я также пробовал использовать различные библиотеки, такие как Node.js axios, got и node-fetch. Привожу пример кода, который использую: 
<pre><code class="javascript">import got from 'got';

const response = await got('https://cs.money/1.0/market/sell-orders', {
  searchParams: {
    'limit': '60',
    'offset': '0',
    'maxPrice': '0.47',
    'name': 'case',
    'order': 'desc',
    'sort': 'discount'
  },
  headers: {
    '*******'
  }
});</code></pre>
Можете подсказать, в чем может быть причина такой ошибки на компьютере?
  • 8 января 2025 г. 0:04
Ответы на вопрос 1
Ошибка с кодом `EPROTO` и сообщением о проблемах с SSL (в данном случае `ssl3_read_bytes:tlsv1 alert access denied`) говорит о том, что на одной из машин происходит проблема с установлением SSL-соединения. В данном случае, это может быть вызвано несколькими причинами:

1. **Версия TLS/SSL**: На вашей машине, где код работает, может использоваться более новая версия протокола TLS, а на компьютере, где возникает ошибка, может быть настройка сервера, которая не поддерживает эту версию. Убедитесь, что на обоих устройствах библиотеки и настройки SSL поддерживают одинаковые версии протоколов.

2. **Настройки системы**: Возможно, настройки сети или прокси на вашей машине отличаются. Например, если используется прокси или брандмауэр, они могут препятствовать соединению или мешать установлению безопасного канала.

3. **Сертификаты SSL**: Убедитесь, что на обеих машинах установлены актуальные корневые сертификаты. Если на одном из устройств сертификаты устарели или отсутствуют, это может вызвать подобные ошибки.

4. **Разные версии Node.js**: Проверьте, установлены ли разные версии Node.js на двух устройствах. Разные версии могут иметь различные реализации работы с SSL и могут по-разному реагировать на сертификаты и соединения.

5. **Проблемы с библиотеками**: Так как вы пробовали несколько библиотек и ошибки продолжают появляться, постарайтесь обновить их до последних стабильных версий. Возможно, библиотека имеет баги в обработке SSL на конкретной платформе.

6. **Конфликтующие библиотеки**: Убедитесь, что у вас нет конфликтующих библиотек, которые могут мешать работе вашей программы.

Чтобы диагностировать дополнительно:

- Проверьте, к какому именно сервису пытается подключиться ваш код и проверьте доступность этого сервиса с обеих машин.
- Попробуйте добавить `rejectUnauthorized: false` в настройки вашего запроса (только для тестирования, не используйте это в продакшене, так как это отключает проверку SSL-сертификатов).
- Используйте инструменты вроде `curl` с опцией `-v` для получения подробного вывода, чтобы понять, что именно происходит во время попытки подключения.

Если вы выясните, какая конкретно причина приводит к ошибке, это поможет вам найти решение.
Похожие вопросы