我想與nodejs一起發送一些數據到其他服務器。 Nodejs通過https與其他服務器通信,nodejs使用可用的根證書驗證其他服務器的證書。要求是nodejs必須拒絕未授權的。nodejs錯誤與unable_to_verify_leaf_signature爲某些證書
我正在用一些測試服務器測試上述設置。對於一臺測試服務器,我創建了一個服務器證書,並使用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
}
};
請幫助....
嗨證書是有效的,因爲它與瀏覽器一起工作。尋找爲什麼只有在使用nodejs時證書失敗的原因。 –
導致您遇到錯誤的SSL證書問題的內部描述如下:http://blog.gaeremynck.com/fixing-unable_to_verify_leaf_signature/ –
感謝您的評論。但在我的情況下,這兩個證書都是以類似的方式創建的,我不認爲有任何中間CA參與。而且,使用OpenSSL創建的證書工作正常。我可以在服務器證書中看到的唯一區別是,OpenSSL證書是(版本:V1,簽名算法:sha1RSA,序列號:01,公鑰:2048位,沒有「授權密鑰標識符」字段)。 Makecert證書是(版本:V3,簽名算法:md5RSA,序列號:<十六進制值>,公鑰:1024位,並且有「授權密鑰標識符」字段) –