1

我正在尝试在量角器项目中使用 node-libcurl 模块,但出现错误:

失败:SSL 对等证书或 SSH 远程密钥不正确

const  {curly} = require('node-libcurl')
const { data } = await curly.post('https://www.example.com', {
  postFields: JSON.stringify({"name":"rak"}),
  httpHeader: [
    'Content-Type: application/json',
    'Accept: application/json',
    'Access-Control-Allow-Origin : *'
  ],
})

如何摆脱这个错误。

4

1 回答 1

2

项目存储库中的 COMMON_ISSUES.md 文件

您需要设置其中一个CAINFOCAPATH选项,或禁用 SSL 验证SSL_VERIFYPEER(不推荐)。

证书文件有多种获取方式:

  • 直接从您的系统/浏览器中提取

  • https://curl.haxx.se/docs/caextract.html下载,这是基于 Firefox 的

  • tls.rootCertificates使用 Node.js v12.3.0 添加的内容创建一个文件,例如:

    const fs = require('fs')
    const path = require('path')
    const tls = require('tls')
    
    const { curly } = require('node-libcurl')
    
    // important steps
    const certFilePath = path.join(__dirname, 'cert.pem')
    const tlsData = tls.rootCertificates.join('\n')
    fs.writeFileSync(certFilePath, tlsData)
    
    async function run() {
      return curly.post('https://httpbin.org/anything', {
        postFields: JSON.stringify({ a: 'b' }),
        httpHeader: ['Content-type: application/json'],
        caInfo: certFilePath,
        verbose: true,
      })
    }
    
    run()
      .then(({ data, statusCode, headers }) =>
        console.log(
          require('util').inspect(
            {
              data: JSON.parse(data),
              statusCode,
              headers,
            },
            null,
            4,
          ),
        ),
      )
      .catch((error) => console.error(`Something went wrong`, { error }))
    
于 2020-07-23T16:13:29.633 回答