自动更新ssl node.js



是否有办法使node.js服务器自动更新与let's encrypt每3个月生成的新证书,而无需重新启动服务?

我的服务器有一个自动管理证书的托管面板,所以我不能手动使用certbot。

目前我有一个cron每月运行和重启服务器采取新的变化,但有时证书改变前几天,我的网站和api停止工作,直到我的服务器重启。在我看来,这似乎不是最优的解决方案。

const fs = require("fs");
const https = require("https");
const express = require("express");
const helmet = require("helmet");
var cors = require("cors");
const API = require("./index.js");
const hostname = "ENV.HOSTAME";
const httpsPort = ENV.PORT;
const httpsOptions = {
cert: fs.readFileSync("CERT-PATH"),
ca: fs.readFileSync("CA-PATH"),
key: fs.readFileSync("CA-KEY"),
};
const app = express();
app.use(helmet());
app.use(cors());
const httpsServer = https.createServer(httpsOptions, app);
// Parse URL-encoded bodies (as sent by HTML forms)
//app.use(express.urlencoded());
// Parse JSON bodies (as sent by API clients)
app.use(express.json());
app.get("/", function (req, res) {
res.redirect("HOSTNAME");
});
app.post("API-ROUTE", async function (req, res) {
const response = await API(req);
if (response != "Error") {
res.status(200).send(response);
} else {
res.status(500).json({ message: "Server Error" });
}
});
httpsServer.listen(httpsPort, hostname);

nodejs使用HTTP服务和nginx进行反向代理。更新证书后,不需要重新启动整个服务。执行nginx -s reload对我有效。

最新更新