如何在node.js中禁用客户端SSL验证?
Node.js 开发环境禁用SSL验证配置方法
重要提示:禁用SSL证书验证会导致通信失去加密安全保障,仅允许在本地开发、测试环境使用,严禁在生产环境开启该配置,否则会存在严重的中间人攻击风险。
1. 全局生效(环境变量配置)
启动Node进程前设置对应环境变量即可全局生效:
- Linux/macOS 终端执行:
NODE_TLS_REJECT_UNAUTHORIZED=0 node your-script.js - Windows cmd 执行:
set NODE_TLS_REJECT_UNAUTHORIZED=0 && node your-script.js - Windows PowerShell 执行:
$env:NODE_TLS_REJECT_UNAUTHORIZED=0; node your-script.js
如果需要在代码内部配置全局生效,可在脚本开头添加代码:process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
注:全局配置影响范围大,更推荐使用局部请求配置的方案
2. 内置https模块局部配置
仅针对单个https请求禁用验证,不影响其他请求:
const https = require('https'); https.get('https://你的自签名证书域名/api', { rejectUnauthorized: false // 仅当前请求禁用SSL验证 }, (res) => { // 自定义响应处理逻辑 })
3. 常用第三方请求库配置
3.1 Axios
- 单次请求配置:
const https = require('https'); const axios = require('axios'); axios.get('https://你的域名/api', { httpsAgent: new https.Agent({ rejectUnauthorized: false }) })
- 自定义实例全局配置:
const customAxios = axios.create({ httpsAgent: new https.Agent({ rejectUnauthorized: false }) }) // 后续所有使用customAxios发起的请求都会禁用SSL验证
3.2 node-fetch
const fetch = require('node-fetch'); const https = require('https'); fetch('https://你的域名/api', { agent: new https.Agent({ rejectUnauthorized: false }) })
4. 包管理器禁用SSL验证(安装依赖场景)
如果是安装依赖时遇到SSL证书校验报错,可使用对应命令配置:
- npm:
npm config set strict-ssl false - yarn:
yarn config set strict-ssl false - pnpm:
pnpm config set strict-ssl false
内容的提问来源于stack exchange,提问作者ToniG
相关产品推荐
相关产品推荐

