📌  相关文章
📜  UNABLE_TO_VERIFY_LEAF_SIGNATURE - Javascript (1)

📅  最后修改于: 2023-12-03 15:35:27.675000             🧑  作者: Mango

UNABLE_TO_VERIFY_LEAF_SIGNATURE - Javascript

在使用Node.js或JavaScript向HTTPS服务器发出请求时,您可能会遇到以下错误之一:

unable to verify the first certificate
UNABLE_TO_VERIFY_LEAF_SIGNATURE

这种情况的原因是在HTTPS证书链的某个地方出现了问题。可能会有多种原因导致此问题,但大多数解决方案都非常简单。

解决方案
  1. 禁用SSL / TLS验证 – 这种方法非常危险,因为它可以让您的应用程序受到中间人攻击的威胁。如果您需要在本地环境中测试,这可能是一个选项。
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
  1. 更新SSL根证书 - 您的操作系统可能需要更新SSL根证书才能正确验证服务器证书链。对于OS X用户,使用以下命令更新:
sudo /usr/bin/security add-trusted-cert -d -r trustRoot -k "/Library/Keychains/System.keychain" {PATH_TO_YOUR_PEM_FILE}
  1. 使用自定义SSL根证书 – 您也可以使用自己的SSL根证书。
const https = require('https');
const fs = require('fs');

const options = {
  ca: fs.readFileSync('path/to/my/ca.pem'),
  hostname: 'hostname-example.com',
  port: 443,
  path: '/',
  method: 'GET',
  headers: {}
};

https.request(options, res => {
  console.log(`statusCode: ${res.statusCode}`);

  res.on('data', d => {
    process.stdout.write(d);
  });
}).on('error', e => {
  console.error(e);
});
  1. 使用不同的HTTP客户端库 – 如果您运行的基于Node.js的应用程序必须与不同的API服务进行通信,您可能会尝试使用不同的HTTP客户端库。

适用于Node.js的HTTP客户端库:

  • Request
  • Axios
  • Fetch
结论

在向Node.js或JavaScript应用程序中的HTTPS服务器发出请求时遇到错误,可能是由于不安全的处理SSL证书链。使用更新的SSL根证书,禁用SSL / TLS验证并使用自定义SSL根证书以解决此问题。如果所有其他解决方案都不起作用,请更改HTTP客户端库。