我正在开发一个 Node.js 应用程序,它使用 openai npm 包向 OpenAI 发出 API 请求。但是,我在尝试连接到 API 时遇到 SSL 证书错误。以下是我收到的错误消息:
Error: APIConnectionError: Connection error.
at OpenAI.makeRequest (node_modules/openai/core.js:292:19)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
FetchError: request to https://api.openai.com/v1/chat/completions failed, reason: unable to get local issuer certificate
我尝试了以下解决方案,但都没有解决问题:
NODE_TLS_REJECT_UNAUTHORIZED=0
以绕过 TLS/SSL 证书验证(不适合生产)。rejectUnauthorized: false
来禁用请求的 SSL/TLS 验证。这是我使用自定义 https 代理的代码片段:
const OpenAI = require("openai");
const https = require("https");
const agent = new https.Agent({
rejectUnauthorized: false
});
const openai = new OpenAI({
apiKey: process.env.OPENAI_API_KEY,
agent
});
async function getCompletion() {
try {
const chatCompletion = await openai.chat.completions.create({
messages: [{ role: "user", content: "Say this is a test" }],
model: "gpt-3.5-turbo",
});
console.log(chatCompletion);
} catch (error) {
console.error("Error:", error);
}
}
getCompletion();
尽管进行了这些尝试,我仍然收到 SSL 证书错误。这是我的设置:
Node.js 版本:14.17.0 操作系统:Windows 10 这个问题是否与我的 Node.js 配置、网络环境或其他原因有关?如何在不影响安全性的情况下解决此错误?任何帮助或建议将不胜感激!
SSL 请求的粗略上下文:服务器将向客户端提供一系列签名的 SSL 证书。客户端将通过将其与自己的证书存储进行比较,查找与该链匹配的 CA 根证书来验证该证书链是否受信任。
您看到的错误是一种常见/通用错误,通常表示您的应用程序在自己的存储中找不到匹配的证书,因此无法验证服务器的证书。
Node.js 本身没有商店。默认情况下,它将使用根证书的硬编码列表,该列表在节点版本之间更新。
给出的 OpenAI 端点当前使用“GTS Root R1”作为根 CA 证书。该证书是在 node 18 中添加/更新的,这解释了为什么您无法在运行节点 14 时验证它。
https
模块进行配置,但我不确定。