2014-02-25 421 views
0

我最近從Comodo購買了SSL證書。他們給我這些文件:Socket.io/Node.js和SSL

AddTrustExternalCARoot.crt 
PositiveSSLCA2.crt 
mydomain.crt 

然後我建立了我的私鑰和CA-捆綁像這樣,

openssl genrsa -des3 -out mydomain.key 1024 
cat PositiveSSLCA2.crt AddTrustExternalCARoot.crt > mydomain.ca-bundle 

這是我使用的是把它結合在一起的代碼。 Chrome中出現SSL連接錯誤。

var privateKey = fs.readFileSync('./mydomain.key').toString(); 
var certificate = fs.readFileSync('./mydomain.crt').toString(); 
var ca = fs.readFileSync('./mydomain.ca-bundle').toString(); 

var io = require('socket.io').listen(1200, { key:privateKey,cert:certificate,ca:ca }); 

回答

2

您生成私鑰你頒發證書之前。

當CA簽署與特定私鑰配合使用的公鑰時,會創建證書。您生成一個私鑰,然後創建一個包含公鑰的CSR。 CA將您發回的證書。

您必須在某個時間點生成了一個私鑰,然後才能獲得必須使用的證書–。如果您嘗試使用在證書頒發後生成的私鑰,它顯然不會與證書中的公鑰相匹配。


此外,節點的tls模塊無法解析證書包。您必須分別在數組中傳遞每個證書。

{ 
    key: fs.readFileSync('mydomain.key'), 
    cert: fs.readFileSync('mydomain.crt'), 
    ca: [ fs.readFileSync('AddTrustExternalCARoot.crt'), fs.readFileSync('PositiveSSLCA2.crt') ] 
} 

docs有更多的細節。