我正在尝试使用 nodejs 将一些数据发送到其他服务器。Nodejs 正在与 https 上的其他服务器通信,并且 nodejs 使用可用的根证书验证其他服务器的证书。要求是 nodejs 必须拒绝未经授权的。
我正在使用一些测试服务器测试上述设置。对于一个测试服务器,我创建了一个服务器证书,并由使用 openSSL 的自签名 CA 证书“CA1.cer”签名。对于另一台测试服务器,我遵循与第一台测试服务器相同的方法,但使用的是 makecert 实用程序。
现在我已经在我的 nodejs 代码中包含了两个 CA 证书。问题是 nodejs 对于使用 makecert 实用程序创建的证书的测试服务器失败。但是相同的代码适用于具有使用 openSSL 创建的证书的测试服务器。
另一方面,两台服务器在浏览器上都运行良好,没有任何证书错误..
我的 nodejs 选项如下,我使用的是 v0.8.18 版本:
var options = {
host: host,
port: port,
path: pathname,
method: 'POST',
ca: [ fs.readFileSync('./ca1.cer'), //created using OpenSSL
fs.readFileSync('./ca2.cer') ], // created using makecert util
agent: false,
requestCert: true,
rejectUnauthorized: true,
auth: cred,
headers: {
'Content-Type': 'text/xml',
'Content-Length': xmldata.length
}
};
请帮忙....