是否可以在node.js中热交换证书?

时间:2016-10-11 02:17:53

标签: node.js ssl

是否可以在不重新启动node.js中的服务器的情况下换出证书(比如是否更新)?当前打开的任何连接都已经信任服务器,因此不需要断开连接,但任何新连接都需要查看新证书。我想应该可以做这种热交换。是否有可能通过API node.js呈现?

或者是否有任何允许此节点的https模块?

1 个答案:

答案 0 :(得分:0)

看起来这可以通过一种叫做SNICallback的东西来实现:

https://github.com/nodejs/node/issues/10349#issuecomment-268157842

I cannot use SNICallback

var certs = {
    "safe.myDomain.com": {
        key: fs.readFileSync('../SSL/safe/private/key.pem'),
        cert: fs.readFileSync('../SSL/safe/certs/cert.pem') 
    },
    "api.myDomain.com": {
        key: fs.readFileSync('../SSL/api/private/key.pem'),
        cert: fs.readFileSync('../SSL/api/certs/cert.pem')   
    }
}

var httpsOptions = {
    SNICallback: function(hostname, cb) {
      var ctx = tls.createSecureContext(certs[hostname])
      cb(null, ctx])
    }
}

https.createServer(httpsOptions).listen(1443, function() {
    console.log('HTTPS server is listening on port 1443')
})