零停机SSL证书更新

时间:2016-02-14 11:19:30

标签: javascript node.js https ssl-certificate

我的SSL证书在90天后过期,我可以根据请求生成新证书。 (我使用Let's Encrypt Without Sudo获得免费证书。)

目前我有一个简单的HTTPS服务器,我需要重启才能更新证书:

require('https').createServer({
    key: fs.readFileSync('./ssl/key.pem'),
    cert: fs.readFileSync('./ssl/cert.pem')
}, app).listen(443);

如何设计我的HTTPS服务器,以便在不重启服务器的情况下更新我的SSL证书?

1 个答案:

答案 0 :(得分:0)

有几种选择,但与重启策略相比,所有这些选项都会降低性能。

一种可能性是在每个请求(或定期)上检查cert文件的最后更新时间。如果时间戳已更改(与内存中的时间戳相比),则可以重新加载密钥和证书的内容,或者生成替换前一个的新服务器实例。

我对NodeJS不太熟悉,因此我不知道https包如何存储当前的https服务器实例。鉴于我没有看到任何接收器,我相信它可能存储在某种默认变量中。理想情况下,您的实现应该替换此值(除非您可以替换访问实例化服务器的特定keycert设置值。