GreenLock(让我们加密)使用 apache 使用的现有 certbot 存储
GreenLock (Let's Encrypt) using existing certbot store used by apache
我有一个由 Apache 提供服务的网站。我正在使用由 certbot 使用 apache 插件创建的 LetsEncrypt 证书。 OS 是 Ubuntu。该网站运行良好。
现在我运行正在使用 HTTPS 的基于 NodeJS 的 API 服务器。为了进行测试,我已经成功地将证书文件用作 TLS 选项,如下所示:
var tls = {
key: FS.readFileSync("...."),
cert: FS.readFileSync("...") };
我的理解是,由于这些证书的有效期为 90 天,因此 API 服务器在某些时候会有过时的证书(除非 reloaded/restarted)。
然后我发现了优秀的 GreenLock 库。我想这就是我想要的,但我需要澄清一下。
如果我使用 GreenLock 库并将其指向现有的 certbot 托管目录,它会只获取现有的证书吗?请注意,在端口 80 上有一个 apache 服务器 运行ning 用于对这些证书进行身份验证。
certboot和Greenlock之间是否会争用更新证书?
我是否需要重新启动我的 API 服务器,因为它识别更新的证书或 GreenLock 使更新对 NodeJS 服务器透明?
基本上我想要的是 GreenLock 只使用商店中的证书,让 certbot + apache 管理创建和更新。同样,当这样管理时,我的 NodeJS 服务器继续 运行 并识别更新。
兼容性
Mozilla IOT 最近为 le-store-certbot 插件贡献了一些补丁,修复了一些与 certbot 兼容的错误。
幸运的是,最新版本将兼容您之前的certbot
文件夹结构,只需根据需要设置configDir
即可。
争用
当您使用 Greenlock™ 时,不需要 certbot
,而且我不确定在同一系统上 运行 两者的效果如何。理论上它应该工作...但我不会这样做。
但是,由于您使用 node.js 作为 https 服务器,而不是 Apache,我认为您没有任何理由仍然需要 certbot。
自动 HTTPS
Greenlock 根据证书中的过期信息自动续订证书,而不是 cron 作业。如果 configDir
设置为 /etc/acme
并且 /etc/acme/live/example.com/fullchain.pem
中存在证书,则将使用该证书。
节点服务不需要重启。只要内存中没有证书,它就会检查磁盘,然后通过 ACME 请求一个。每当内存中有证书时,它就会有过期信息,当它去更新证书时,它会在实际发出请求之前首先检查磁盘上的新证书(因此它 应该 使用 certbot)。
@CoolAJ,
根据你的回答,我想我找到了一个适合我的方案。我想 运行 给大家提意见。
鉴于我现阶段对 Greenlock 的了解,我知道我可以将我的 API 服务器分离到一个单独的盒子中,它将负责我的证书获取和续订。竖起大拇指!但我保留它作为我的后备解决方案。我有基础设施的原因尝试 运行 我的 API 服务器和 Apache 网络内容服务器在同一个盒子上都使用 HTTPS,我将进一步努力以获得完整的证明解决方案。这就是我的想法。
我的 Apache 网络内容服务器 + certbot 安装工作正常。所以这个 apache 已经在端口 80
上响应域验证(我对这个过程一无所知)
我想要 运行 一个 NodeJS Web API 服务器,它在同一个盒子上使用 HTTPS,并且想使用 Greenlock 来管理其证书的获取和更新API 服务器.
在我最初的问题中,我想知道我是否可以将 greenlock 指向由 Certbot 管理的 cert directroy,为此你已经提供了足够明确的答案。这让我想到我不希望 greenlock 在 certbot 管理的目录中工作。
所以我在同一台机器上分离(certbot 和 greenlock)的问题是只有一个网络服务器 运行 宁在端口 80 将响应两个系统(certbot 和 greenlock)的域验证。
所以我决定我将保持 certbot + acache 不变,并使用 greenlock 和指向 apache webroot 及其自己的 configPath 的 webroot 方案。这样 Apache 将成为域验证器。我将为 API 服务器使用子域。因此 certbot 管理 "blah.com" 的证书,greenlock 管理“api.blah.com”的证书。
我的理论是没有人会踩到别人的脚趾。 Certbot 使用 Apache 插件,因此它是 TLS-SNI-01 挑战,而 Greenlock 将使用 http-01 挑战(使用 Apache 提供文件)。
而且我可以在您的全自动 HTTPS 示例中看到,
https://git.coolaj86.com/coolaj86/greenlock.js
我可以为 certbot 商店提供 webrootPath。
这意味着当我的 API 服务器尝试 acquire/renew 证书时,它是将响应域验证的 apache 服务器,我不需要我的 nodejs 服务器 运行 端口 80 上的任何内容。
你怎么看?
感谢您的宝贵时间。
我有一个由 Apache 提供服务的网站。我正在使用由 certbot 使用 apache 插件创建的 LetsEncrypt 证书。 OS 是 Ubuntu。该网站运行良好。
现在我运行正在使用 HTTPS 的基于 NodeJS 的 API 服务器。为了进行测试,我已经成功地将证书文件用作 TLS 选项,如下所示:
var tls = {
key: FS.readFileSync("...."),
cert: FS.readFileSync("...") };
我的理解是,由于这些证书的有效期为 90 天,因此 API 服务器在某些时候会有过时的证书(除非 reloaded/restarted)。
然后我发现了优秀的 GreenLock 库。我想这就是我想要的,但我需要澄清一下。
如果我使用 GreenLock 库并将其指向现有的 certbot 托管目录,它会只获取现有的证书吗?请注意,在端口 80 上有一个 apache 服务器 运行ning 用于对这些证书进行身份验证。
certboot和Greenlock之间是否会争用更新证书?
我是否需要重新启动我的 API 服务器,因为它识别更新的证书或 GreenLock 使更新对 NodeJS 服务器透明?
基本上我想要的是 GreenLock 只使用商店中的证书,让 certbot + apache 管理创建和更新。同样,当这样管理时,我的 NodeJS 服务器继续 运行 并识别更新。
兼容性
Mozilla IOT 最近为 le-store-certbot 插件贡献了一些补丁,修复了一些与 certbot 兼容的错误。
幸运的是,最新版本将兼容您之前的certbot
文件夹结构,只需根据需要设置configDir
即可。
争用
当您使用 Greenlock™ 时,不需要 certbot
,而且我不确定在同一系统上 运行 两者的效果如何。理论上它应该工作...但我不会这样做。
但是,由于您使用 node.js 作为 https 服务器,而不是 Apache,我认为您没有任何理由仍然需要 certbot。
自动 HTTPS
Greenlock 根据证书中的过期信息自动续订证书,而不是 cron 作业。如果 configDir
设置为 /etc/acme
并且 /etc/acme/live/example.com/fullchain.pem
中存在证书,则将使用该证书。
节点服务不需要重启。只要内存中没有证书,它就会检查磁盘,然后通过 ACME 请求一个。每当内存中有证书时,它就会有过期信息,当它去更新证书时,它会在实际发出请求之前首先检查磁盘上的新证书(因此它 应该 使用 certbot)。
@CoolAJ,
根据你的回答,我想我找到了一个适合我的方案。我想 运行 给大家提意见。
鉴于我现阶段对 Greenlock 的了解,我知道我可以将我的 API 服务器分离到一个单独的盒子中,它将负责我的证书获取和续订。竖起大拇指!但我保留它作为我的后备解决方案。我有基础设施的原因尝试 运行 我的 API 服务器和 Apache 网络内容服务器在同一个盒子上都使用 HTTPS,我将进一步努力以获得完整的证明解决方案。这就是我的想法。
我的 Apache 网络内容服务器 + certbot 安装工作正常。所以这个 apache 已经在端口 80
上响应域验证(我对这个过程一无所知)
我想要 运行 一个 NodeJS Web API 服务器,它在同一个盒子上使用 HTTPS,并且想使用 Greenlock 来管理其证书的获取和更新API 服务器.
在我最初的问题中,我想知道我是否可以将 greenlock 指向由 Certbot 管理的 cert directroy,为此你已经提供了足够明确的答案。这让我想到我不希望 greenlock 在 certbot 管理的目录中工作。
所以我在同一台机器上分离(certbot 和 greenlock)的问题是只有一个网络服务器 运行 宁在端口 80 将响应两个系统(certbot 和 greenlock)的域验证。
所以我决定我将保持 certbot + acache 不变,并使用 greenlock 和指向 apache webroot 及其自己的 configPath 的 webroot 方案。这样 Apache 将成为域验证器。我将为 API 服务器使用子域。因此 certbot 管理 "blah.com" 的证书,greenlock 管理“api.blah.com”的证书。
我的理论是没有人会踩到别人的脚趾。 Certbot 使用 Apache 插件,因此它是 TLS-SNI-01 挑战,而 Greenlock 将使用 http-01 挑战(使用 Apache 提供文件)。
而且我可以在您的全自动 HTTPS 示例中看到,
https://git.coolaj86.com/coolaj86/greenlock.js
我可以为 certbot 商店提供 webrootPath。
这意味着当我的 API 服务器尝试 acquire/renew 证书时,它是将响应域验证的 apache 服务器,我不需要我的 nodejs 服务器 运行 端口 80 上的任何内容。
你怎么看?
感谢您的宝贵时间。