Не удается проверить подпись листа


Я использую узел.Яш запросу.JS, чтобы достичь этого API. Я получаю эту ошибку

[ошибка: UNABLE_TO_VERIFY_LEAF_SIGNATURE]

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

request({
    "url": domain+"/api/orders/originator/"+id,
    "method": "GET",
    "headers":{
        "X-API-VERSION": 1,
        "X-API-KEY": key
    },
}, function(err, response, body){
    console.log(err);
    console.log(response);
    console.log(body);
});

этот код просто выполняется в исполняемом скрипте ex. node ./run_file.js вот почему? Нужно ли запускать его на сервере?

8 99

8 ответов:

Примечание: следующее Опасно и позволит перехватывать и изменять содержимое API между клиентом и сервером.

Это тоже сработало

process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0';

это не проблема с приложением, а с сертификатом, который подписан посредником CA. Если вы принимаете этот факт и все еще хотите продолжить, добавьте следующие параметры запроса:

rejectUnauthorized: false

полный запрос:

request({
    "rejectUnauthorized": false,
    "url": domain+"/api/orders/originator/"+id,
    "method": "GET",
    "headers":{
        "X-API-VERSION": 1,
        "X-API-KEY": key
    },
}, function(err, response, body){
    console.log(err);
    console.log(response);
    console.log(body);
});

безопасное решение заключается в добавлении необходимых сертификатов в цепочку. Сначала установите ssl-root-cas пакет от НПМ:

npm install ssl-root-cas

этот пакет содержит много промежуточных сертификатов, которым браузеры доверяют, но узел не доверяет.

var sslRootCAs = require('ssl-root-cas/latest')
sslRootCAs.inject()

добавить недостающие сертификаты. Смотрите здесь для получения дополнительной информации:

https://github.com/coolaj86/node-ssl-root-cas

решение CoolAJ86 является правильным, и это не ставит под угрозу вашу безопасность, как отключение всех проверок с помощью rejectUnauthorized или NODE_TLS_REJECT_UNAUTHORIZED. Тем не менее, вам может потребоваться явно ввести дополнительный сертификат CA.

я попробовал первый корневые центры сертификации, включены ssl-root-cas:

require('ssl-root-cas/latest')
  .inject();

Я все равно закончил с UNABLE_TO_VERIFY_LEAF_SIGNATURE ошибка. Затем я узнал, кто выдал сертификат для веб-сайта, к которому я подключался COMODO SSL Анализатор, скачал сертификат этого органа и попытался добавить только этот:

require('ssl-root-cas/latest')
  .addFile(__dirname + '/comodohigh-assurancesecureserverca.crt');

Я закончил с другой ошибкой:CERT_UNTRUSTED. Наконец, я ввел дополнительный корневой CAs и включил "мой" (по-видимому, промежуточный) CA, который работал:

require('ssl-root-cas/latest')
  .inject()
  .addFile(__dirname + '/comodohigh-assurancesecureserverca.crt');

У меня были те же вопросы. Я следил за решением @ThomasReggi и @CoolAJ86 и работал хорошо, но я не доволен решением.

потому что проблема "UNABLE_TO_VERIFY_LEAF_SIGNATURE" происходит из-за уровня конфигурации сертификации.

Я принимаю @thirdender решение, но его частичное решение. В соответствии с nginx официальный сайт, они ясно упомянули сертификат должен быть комбинацией сертификата сервера и прикован сертификаты.

enter image description here

просто положив это здесь, если это кому-то поможет, мой случай был другим и немного странным сочетанием. Я получал это по запросу, который был доступен через суперагент - проблема не имела ничего общего с сертификатами (которые были настроены правильно) и все это связано с тем, что я тогда передавал результат суперагента через асинхронные обратный вызов водопада модуля. Чтобы исправить: вместо того, чтобы передавать весь результат, просто передайте result.body через водопад обратный звонок.

у меня была проблема с моей конфигурацией Apache после установки сертификата GoDaddy на поддомене. Я изначально думал, что это может быть проблема с узлом, не отправляющим индикатор имени сервера (SNI), но это было не так. Анализ SSL-сертификата поддомена с помощью https://www.ssllabs.com/ssltest/ возвратил ошибку проблемы с цепью: неполный.

после добавления GoDaddy при условии через SSLCertificateChainFile директива Apache, узел был возможность подключения по HTTPS и ошибка исчезла.

на Создать Приложение React (где эта ошибка тоже возникает, и этот вопрос является результатом # 1 Google), вы, вероятно, используете HTTPS=true npm start и proxy (in package.json), который идет к некоторому HTTPS API, который сам является самоподписанным, когда находится в разработке.

если это так, подумайте об изменении proxy такой:

"proxy": {
  "/api": {
    "target": "https://localhost:5001",
    "secure": false
  }
}

secure решает, проверяет ли прокси-сервер WebPack цепочку сертификатов или нет, и отключает, что обеспечивает самозаверяющий API сертификат не проверяется, чтобы вы получили свои данные.