我的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证书?

最佳答案

有几个选项,但是与重新启动策略相比,所有这些选项的性能都会下降。

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

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

09-30 16:24
查看更多