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

Node.js应用访问Azure Key Vault因自签名CA证书报错如何解决

Node.js使用@azure/identity访问Azure Key Vault自签名证书问题解决方案

FetchError: request to https://mytestkv.azure.net/secrets/mypassword/?api-version=7.2 failed, reason: unable to verify the first certificate

该报错由公司防火墙替换HTTPS证书链、Node.js运行时不信任自签名CA根证书导致,以下是不同场景的解决方案:

方案1:本地开发临时禁用全局SSL校验(禁止用于生产环境)

直接通过环境变量关闭Node.js全局的TLS证书校验,适合快速测试用:

  • Mac/Linux启动命令:NODE_TLS_REJECT_UNAUTHORIZED=0 node your-app.js
  • Windows CMD启动命令:set NODE_TLS_REJECT_UNAUTHORIZED=0 && node your-app.js
  • Windows PowerShell启动命令:$env:NODE_TLS_REJECT_UNAUTHORIZED=0; node your-app.js

注意:该方案会关闭所有Node请求的证书校验,风险较高,仅推荐临时测试使用

方案2:添加公司自签名CA到Node信任链(推荐本地开发使用)

该方案不需要关闭全局校验,安全性更高:

  1. 导出公司自签名根CA证书,保存为PEM格式
  2. 启动应用时指定额外信任的CA证书路径:
    NODE_EXTRA_CA_CERTS=./your-company-root-ca.pem node your-app.js

方案3:仅针对Azure SDK请求关闭证书校验

如果不想修改全局配置,可单独给Azure SDK配置允许不安全连接:

  1. 安装依赖:npm install @azure/core-rest-pipeline
  2. 代码示例:
const { DefaultAzureCredential } = require("@azure/identity");
const { SecretClient } = require("@azure/keyvault-secrets");
const { createDefaultHttpClient } = require("@azure/core-rest-pipeline");

// 创建允许不安全连接的HTTP客户端
const httpClient = createDefaultHttpClient({
  allowInsecureConnection: true
});

// 给身份验证凭证传入自定义HTTP客户端
const credential = new DefaultAzureCredential({
  httpClient
});

// 初始化Key Vault客户端时传入相同配置
const client = new SecretClient("https://mytestkv.vault.azure.net/", credential, {
  httpClient
});

注意事项

  • 所有涉及关闭证书校验的配置仅可用于本地开发环境,禁止在生产环境使用,否则会存在中间人攻击风险
  • 应用部署到Azure后无需保留上述配置,Azure原生环境的证书链受公共信任,可直接正常访问密钥保管库

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 23:06:02