自动更新ssl node.js

zbdgwd5y  于 2021-09-23  发布在  Java
关注(0)|答案(1)|浏览(361)

有没有办法让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);
bgibtngc

bgibtngc1#

nodejs使用http服务和nginx作为反向代理。更新证书后,无需重新启动整个服务。执行 nginx -s reload 对我有用。

相关问题