2
編輯:我原本以爲服務器的證書是自簽名的。原來它是由自簽名的CA證書籤署的。如何使用https信任自簽名證書?
我正在嘗試編寫一個Node.js應用程序,該應用程序訪問使用保護的HTTPS站點的自簽名證書通過私有自簽名CA證書籤名的證書。我還想而不是完全禁用證書檢查。
我試圖把自簽名證書服務器的證書放在請求選項中,但似乎沒有工作。有人知道怎麼做嗎?
我希望以下代碼可以打印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);
});
我認爲這可能對您有用:http://stackoverflow.com/questions/10142431/my-node-js-https-client-always-works-regardless-of-certificate-validity – vcazan
@vcazan I嘗試添加'agent:false'和'opts.agent = new https.Agent(opts);',並且都沒有工作:-( – leedm777
您確定您擁有正確的證書嗎?您的代碼適用於我的自簽名如果我爲'opts.ca'讀了一個不同的(不正確的)證書,那麼我會得到'Error:DEPTH_ZERO_SELF_SIGNED_CERT]。' – rhashimoto