如何使用https信任自签名证书?

时间:2014-06-10 13:38:10

标签: node.js ssl https

编辑:我原本以为服务器的证书是自签名的。事实证明它是由自签名的CA证书签署的。

我正在尝试编写一个Node.js应用程序,该应用程序使用由私有的自签名CA证书签名的自签名证书证书来访问受保护的HTTPS站点。我还想完全禁用证书检查。

我尝试将自签名证书服务器的证书放在请求选项中,但这似乎不起作用。有谁知道怎么做?

我希望以下代码能够打印statusCode 200,而是打印[Error: SELF_SIGNED_CERT_IN_CHAIN]

我尝试使用request的类似代码,结果相同。

var https = require('https');
var fs = require('fs');

var opts = {
    hostname: host,
    port: 443,
    path: '/',
    method: 'GET',
    ca: fs.readFileSync(serverCertificateFile, 'utf-8')
};

var req = https.request(opts, function (res) {
    console.log('statusCode', res.statusCode);
});

req.end();
req.on('error', function (err) {
    console.error(err);
});

1 个答案:

答案 0 :(得分:1)

错误[Error: SELF_SIGNED_CERT_IN_CHAIN]是这里发生的事情的线索。

这表明HTTPS服务器的证书是由自签名证书签名的,而不是它本身就是自签名证书。如果服务器证书是自签名的,则错误为[Error: DEPTH_ZERO_SELF_SIGNED_CERT]

如果您提供CA证书而不是服务器的证书,则应该可以使用。