@alchemy.run/acme (英语)
ACME 证书 炼金术。从“让我们加密”、“ZeroSSL”、“Google Trust Services”或任何ACME CA, 发布并更新 TLS 证书, 独立于您的主机位置、 部署时间或应用程序内部.
npm install alchemy @alchemy.run/acme @alchemy.run/cloudflare effect
通过 Cloudflare DNS 区域验证的账户和证书 :
// alchemy.run.ts
import * as Alchemy from "alchemy";
import * as ACME from "@alchemy.run/acme";
import * as Cloudflare from "@alchemy.run/cloudflare";
import * as Config from "effect/Config";
import * as Effect from "effect/Effect";
import * as Layer from "effect/Layer";
export default Alchemy.Stack(
"Certificates",
{
providers: Layer.mergeAll(ACME.providers(), Cloudflare.providers()),
state: Alchemy.localState(),
},
Effect.gen(function* () {
const account = yield* ACME.Account("Issuer", {
ca: ACME.LetsEncryptStaging,
contact: ["mailto:[email protected]"],
termsOfServiceAgreed: true,
});
const certificate = yield* ACME.Certificate("Site", {
account,
identifiers: ["example.com"],
solver: Cloudflare.ACME.ZoneSolver({
zoneId: Config.String("CLOUDFLARE_ZONE_ID"),
}),
});
return { serial: certificate.serial, expires: certificate.notAfter };
}),
);
每个人在证书进入更新窗口后检查证书并更新证书。 没有背景计时器,所以按时间表进行调用.