You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WebdriverIO中结合Axios使用PEM证书文件

在WebdriverIO中结合Axios使用PEM证书发送POST请求

在Node.js(WebdriverIO基于Node.js)环境下,不需要像Java那样将证书导入系统证书库,直接通过配置Axios的httpsAgent参数即可实现带PEM证书的HTTPS请求。你的当前代码仅配置了cert,缺少必要的私钥或CA证书配置,导致出现证书验证错误,以下是完整解决方案:

核心配置说明

要让Axios正确使用PEM证书,需根据你的证书情况配置https.Agent的以下关键参数:

  • cert: 客户端证书的PEM格式内容(公钥证书)
  • key: 对应客户端证书的私钥PEM内容
  • ca: (可选但必要)若服务器证书由私有CA签发,需指定该CA的证书PEM内容,否则Node.js会默认只信任公共根CA,导致验证失败
  • rejectUnauthorized: 保持true(不要关闭),确保证书验证有效,关闭此参数会跳过安全验证,存在风险

完整代码示例

情况1:证书与私钥为单独文件

const fs = require('fs');
const https = require('https');
const axios = require('axios');
const path = require('path');

// 用绝对路径读取证书文件,避免路径问题
const cert = fs.readFileSync(path.resolve(__dirname, '/path/to/certificate.pem'));
const privateKey = fs.readFileSync(path.resolve(__dirname, '/path/to/private-key.pem'));
const caCert = fs.readFileSync(path.resolve(__dirname, '/path/to/ca-certificate.pem'));

// 配置HTTPS Agent
const httpsAgent = new https.Agent({
  cert: cert,
  key: privateKey,
  ca: caCert,
  rejectUnauthorized: true,
  requestCert: true
});

// 发送POST请求
const response = await axios({
  url: 'https://hostname/api',
  httpsAgent: httpsAgent,
  method: 'post',
  headers: {
    'Content-Type': 'application/xml',
    'Accept': '*/*',
    'Accept-Encoding': 'gzip, deflate, br'
  },
  data: XMLdata
});

情况2:证书与私钥合并在同一个PEM文件中

如果你的PEM文件同时包含证书和私钥内容,可通过pfx参数配置(需确保文件为PKCS#12格式,若为纯PEM合并内容,建议拆分后分开配置更稳妥):

const combinedPem = fs.readFileSync(path.resolve(__dirname, '/path/to/combined-cert-key.pem'));

const httpsAgent = new https.Agent({
  pfx: combinedPem,
  passphrase: 'your-passphrase', // 若私钥设置了密码需指定
  ca: caCert,
  rejectUnauthorized: true,
  requestCert: true
});

常见问题排查

  • 若仍出现unable to verify the first certificate错误:检查ca参数是否正确配置了服务器证书的签发CA,确保CA证书未过期、格式正确
  • 证书路径问题:使用path.resolve生成绝对路径,避免相对路径在WebdriverIO测试环境中失效
  • 私钥密码:若私钥设置了密码,需在https.Agent中添加passphrase参数指定密码

内容的提问来源于stack exchange,提问作者solidusAndryi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 11:37:56