我的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服务器实例。鉴于我没有看到任何接收者,我相信它可能存储在某种默认变量中。理想情况下,您的实现应替换该值(除非您可以替换访问实例化服务器的特定key
和cert
设置值。