[英]Is it posible to update ssl cert without server restarting?
我想在不重新启动的情况下更新 node.js http2 服务器上的 ssl 证书(以避免任何停机时间)。 此外,我不想在这项工作中使用任何 3rd 方模块。 只有纯 nodejs。 是否可以?
现在当证书即将到期时,我只是重新启动脚本。
const https = require('http2');
const server = https.createSecureServer({
ca: fs.readFileSync('chain.pem'),
cert: fs.readFileSync('cert.pem', 'utf8'),//fullchain
key: fs.readFileSync('privkey.pem', 'utf8'),
allowHTTP1: true,
},
我希望能够观察证书文件是否更新(例如使用 fs.watch()),并动态更新 http2 服务器中的证书......
正如 Jake 所提到的, setSecureContext() 发挥了神奇的作用。 似乎它可以在不中断当前连接的情况下更新证书。 就像是:
setTimeout(function () {server.setSecureContext({
ca: fs.readFileSync('chain.pem'),
cert: fs.readFileSync('cert.pem', 'utf8'),//fullchain
key: fs.readFileSync('privkey.pem', 'utf8')
})},86400000)
是的,您可以只使用sniCallBack() :
const https = require('http2');
const server = https.createSecureServer({
ca: fs.readFileSync('chain.pem'),
cert: fs.readFileSync('cert.pem', 'utf8'),//fullchain
key: fs.readFileSync('privkey.pem', 'utf8'),
allowHTTP1: true,
SNICallback: (servername, cb) => {
// here you can even change up the `SecureContext`
// based on `servername` if you want
cb(null, server);
}
},
这可能有点过时,所以尝试一下并询问我是否有任何不起作用,因为我在这里找到的解决方案源代码有点不同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.