今天我想展示如何在 OpenResty Edge 中通过 Let’s Encrypt 自动签发免费 SSL 证书。

嵌入图片

像往常一样,让我们进入 OpenResty Edge 的 Admin Web 控制台。这是我们的控制台的样本部署。每个用户都有自己的本地部署。

这一次我们继续使用 test-edge.com 域名的样本应用。

屏幕截图

我们可以看到,它已经在 443 端口为 SSL 进行监听。

屏幕截图

进入这个应用。

屏幕截图

这里我们想要用子域名来做演示,所以需要先调整应用的设置。

屏幕截图

让我们为这个应用添加一个新的通配符域名。

屏幕截图

屏幕截图

保存。

屏幕截图

然后推送给我们的网关服务器。因为 Let’s Encrypt 服务器将会需要验证我们的域名所有权。

屏幕截图

发布更改。

屏幕截图

发布!

屏幕截图

转到 SSL 页面。

屏幕截图

我们可以看到,目前还没有定义 SSL 证书。

屏幕截图

让我们添加一个新的证书。

屏幕截图

我们支持各种不同的方式来颁发新的 SSL 证书。

屏幕截图

这里就只演示 Let’s Encrypt 的方式。

屏幕截图

将顶级域名 test-edge.com 添加到该证书中。

屏幕截图

添加更多的子域名称。

屏幕截图

输入我们的 api 子域。它可以是任何东西。

屏幕截图

也可以添加更多子域名。

屏幕截图

如果有很多域名,还可以使用批量输入模式。

屏幕截图

可以在这里逐行输入所需要的域名。

屏幕截图

先退出批量输入模式。

屏幕截图

这里的所有域名必须被解析到这个 OpenResty Edge 部署的网关服务器上。

屏幕截图

这个要求也在这里提到了。

屏幕截图

在终端上,我们可以使用 dig 命令来测试域名是否已经解析到我们的网关服务器。

1
dig test-edge.com

可以看到有效的 DNS 答案。

截图 1

也可以测试一下 api 子域。

1
dig api.test-edge.com

同样也得到了有效的 DNS 答案。

截图 3

Let’s Encrypt 服务器需要通过这些域名访问我们的网关服务器。这是因为他们必须确保我们确实拥有这些域名。

嵌入图片

对于通配符域名,你还必须使用 OpenResty Edge 作为域名的权威性 DNS 名称服务器。

嵌入图片

同意 Lets’ Encrypt 订阅者协议。

屏幕截图

保存。

屏幕截图

就可以看到新的 Let’s Encrypt 证书了。

屏幕截图

证书来源是 Let’s Encrypt。

屏幕截图

它有两个域名,正如预期的那样。

屏幕截图

我们可以在这里查看实时状态。

屏幕截图

通过点击这个状态图标来查看详细的进度。

还可以在这里观察有关 Let’s Encrypt 证书签发过程的详细日志。

屏幕截图

现在可以看到证书已经被签发。

屏幕截图

让我们先退出这个状态页面。

屏幕截图

可以在这一栏中查看新证书的到期时间。

屏幕截图

该证书将在 3 个月后过期。

屏幕截图

OpenResty Edge 会在将来证书即将过期时自动更新。

屏幕截图

我们可以看到预定的下次更新时间将在 2 个月后。也就是说,在过期前一个月。

屏幕截图

现有的 Let’s Encrypt 证书也是可以编辑的。

屏幕截图

我们在这里不做任何改动。

屏幕截图

或者也可以删除这个证书。

屏幕截图

我们现在不想删除它。

屏幕截图

但可以在不删除的情况下禁用它。

屏幕截图

然后,它也可以被重新启用。

屏幕截图

我们需要发布一个新版本来推送我们的新证书,就像往常一样。

屏幕截图

点击这个按钮。

屏幕截图

发布!

屏幕截图

现在已经完成了!

截图

现在,新的证书已经被推送到所有的网关集群和服务器上。

屏幕截图

我们的配置更改不需要重新加载服务器、重启或二进制升级服务器进程。所以它是非常有效和可扩展的。

嵌入图片

然后,OpenResty Edge 将在这些证书过期前再次自动更新来自 Let’s Encrypt 的证书。

嵌入图片

如果由于某些原因,一些证书未能更新,用户会收到类似这样的全局通知。

嵌入图片

让我们打开一个新的浏览器标签,通过 https 访问 test-edge.com 网站。

屏幕截图

它成功了!

同时测试 api 子域。

屏幕截图

它也能工作!

我们也可以用一个网关集群服务器,在终端上测试我们的新证书。

屏幕截图

在旧金山附近选择一个网关服务器。

屏幕截图

复制它的公共 IP 地址,以 133 结尾。

屏幕截图

在终端上,我们可以向这个网关服务器发送一个 HTTPS 请求。

1
curl -I --resolve 'test-edge.com:443:138.68.231.133' https://test-edge.com/

屏幕截图 3

成功了!

我们也可以使用 -v 选项获取更多细节信息。

1
curl -I --resolve 'test-edge.com:443:138.68.231.133' https://test-edge.com/ -v

运行这个命令。

屏幕截图 4

我们确实可以在这里看到我们的服务器证书。还可以看到该证书确实是由 Let’s Encrypt 颁发的。

截图 4

这就是我今天想介绍的内容。

如果你喜欢这个教程,请订阅这个博客网站和我们的 YouTube 频道B 站频道。谢谢!

关于本文和关联视频

本文和相关联的视频都是完全由我们的 OpenResty Demo 系统从一个极简单的剧本文件自动生成的。

关于作者

章亦春是开源项目 OpenResty® 的创始人,同时也是 OpenResty Inc. 公司的创始人和 CEO。他贡献了许多 Nginx 的第三方模块,相当多 Nginx 和 LuaJIT 核心补丁,并且设计了 OpenResty EdgeOpenResty XRay 等产品。

关注我们

如果您喜欢本文,欢迎关注我们 OpenResty Inc. 公司的博客网站 。也欢迎扫码关注我们的微信公众号:

我们的微信公众号

翻译

我们提供了英文版原文和中译版(本文) 。我们也欢迎读者提供其他语言的翻译版本,只要是全文翻译不带省略,我们都将会考虑采用,非常感谢!