GreenLock(让我们加密)使用apache使用的现有certbot商店

时间:2018-05-15 07:22:09

标签: node.js ssl lets-encrypt greenlock

我有一个由Apache提供服务的网站。我正在使用由certbot使用apache插件创建的LetsEncrypt证书。操作系统是Ubuntu。网站运行正常。

现在我正在运行使用HTTPS的基于NodeJS的API服务器。为了测试我已成功将证书文件用作TLS选项,如下所示:

<ul>
    <li *ngFor="let a of articles | filterUnique">{{a}}</li>
</ul>

我的理解是,由于这些证书的生命周期为90天,因此API服务器在某些时候将具有陈旧证书(除非重新加载/重新启动)。

然后我发现了优秀的GreenLock库。我认为这是我想要的,但我需要一点澄清。

  1. 如果我使用GreenLock库并将其指向现有的certbot托管目录,它是否会选择现有的证书?请注意,在端口80上运行了一个apache服务器,以对这些证书进行身份验证。

  2. certboot和Greenlock之间是否会争用更新证书?

  3. 我是否需要重新启动我的API服务器,因为它识别续订的证书或GreenLock使续订对NodeJS服务器透明?

  4. 基本上我想要的是GreenLock只使用商店的证书,让certbot + apache管理创建和更新。此外,在管理时,我的NodeJS服务器继续运行并识别续订。

2 个答案:

答案 0 :(得分:1)

兼容性

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 )。

答案 1 :(得分:0)

@CoolAJ,

根据你的回答,我认为我找到了一个适合我的方案。我想由你运行以征求意见。

鉴于我在此阶段对Greenlock的了解,我知道我可以将我的API服务器分离到一个单独的盒子中,它将负责我的证书获取和续订。竖起大拇指!但我保留它为我的后备解决方案。我有基础设施的原因,试图在同一个盒子上运行我的API服务器和Apache Web内容服务器,这两个服务器都说HTTPS,我将更多地推动一个完整的证明解决方案。这就是我的想法。

  1. 我的Apache Web内容服务器+ certbot设置工作正常。所以这个apache已经在端口80上响应域验证(我的知识对于该过程是完全空白的)

  2. 我想在同一个盒子上运行一个说HTTPS的NodeJS Web API服务器,并希望使用Greenlock来管理该API服务器的证书的获取和续订。

  3. 在我最初的问题中,我想知道我是否可以将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

    我可以提供带有webrootPath的certbot商店。

    这意味着当我的API服务器尝试获取/续订证书时,它将是响应域验证的apache服务器,我不需要我的nodejs服务器在端口80上运行任何东西。

    你怎么看?

    感谢您的时间。