【问题标题】:Is it possible to hotswap a tls certificate in node.js?是否可以在 node.js 中热交换 tls 证书?
【发布时间】:2016-12-20 15:26:35
【问题描述】:

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

或者是否有任何节点 https 模块允许这样做?

【问题讨论】:

标签: node.js ssl


【解决方案1】:

看起来这可以通过称为 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')
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-12
    • 2021-10-24
    • 2012-11-04
    • 1970-01-01
    • 2015-11-30
    • 1970-01-01
    相关资源
    最近更新 更多