0

我正在尝试使用 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
    }
};

请帮忙....

4

2 回答 2

0

要允许使用无效 SSL 证书向服务器发出请求,请添加选项:

"rejectUnauthorized": false
于 2013-11-24T14:03:48.177 回答
0

问题已解决。从 makecert util 创建的证书不是 .pem 格式。一旦转换成 .pem ,上面的代码就可以工作了。感谢安德烈的支持。

于 2013-12-09T07:48:44.250 回答