0
我的本地Windows 7計算機上運行了一個節點服務器(v0.10.20),該服務器使用我的客戶端證書向後端發出https請求。該請求在開始工作,從一天到另一它停止與錯誤信息的工作:來自節點服務器的https請求使用客戶端證書報告已過期證書
[Error: 8432:error:14094415:SSL routines:SSL3_READ_BYTES:sslv3 alert certificate
expired:openssl\ssl\s3_pkt.c:1256:SSL alert number 45]
我沒有改變任何編碼和證書過期日期是在2015年十月此外,HTTPS請求仍然有效如果我從瀏覽器中啓動它而不是讓nodejs執行它。有誰知道這可能是什麼原因?
相關的nodejs編碼看起來像這樣,即使我不認爲這個問題與編碼有關。正如我所說的,它沒有改變編碼就停止了工作。
HTTPS請求
function callBackend(hostname, port, path, method, callback){
var options = {
hostname: hostname,
port: port,
path: path,
method: method,
pfx: SSOCertificate,
passphrase: SSOCertificatePassphrase,
rejectUnauthorized: false,
strictSSL: false,
};
var data = "";
var req = https.request(options, function(res) {
res.on('data', function(chunk) { data += chunk; });
res.on('end', function(){ callback(data); });
});
req.end();
req.on('error', function(e) {
console.error(e);
});
}
證書檢索。我已經手動執行了這些步驟,並將路徑硬編碼到最終的pfx文件。錯誤保持不變
if(process.platform == "win32") {
exec("certutil -store -user -v my", function (error, stdout, stderr) {
var serialNumber = getSSOCertSerialNumber(error, stdout, stderr);
var SSOCertificatePath = path.join(__dirname, '/SSOCert.pfx');
exec("certutil -f -user -p " + SSOCertificatePassphrase + " -exportPFX " + serialNumber + " \"" + SSOCertificatePath + "\"", function (error, stdout, stderr) {
var SSOCertificate = fs.readFileSync(SSOCertificatePath);
var deleteCommand = 'del "' + SSOCertificatePath + '"';
callback(SSOCertificatePassphrase, SSOCertificate);
});
});
}