2014-02-25 239 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有更多的细节。