将 Certbot 与 Nginx 服务器块生成器相结合

将 Certbot 与 Nginx 服务器块生成器相结合

我有一个带有纯 Nginx 服务器的 Ubuntu 16.04 环境,我使用以下 Bash 脚本自动创建服务器块和相应的(自签名)SSL 认证

它允许我从 CLI 中的任何位置创建这些,如下所示:

csb domain.tld

自签名证书使冲浪变得不可能(this connection cannot be trusted出现错误)。

如何使用典型的 CertBot 自动化脚本替换创建自签名相应证书的部分?

如果您愿意,请随意在 Github 上 fork 并启动一个项目

答案1

好的,正如评论中所承诺的那样,我已经研究了dehydrated-apache2dehydratedLet's Encrypt 脚本的 debian 版本)如何处理它,它实际上非常简单。它的核心是一个简单的重定向别名:

AliasMatch /.well-known/acme-challenge/(.*)$ /var/lib/dehydrated/acme-challenges/$1

此配置部分是在任何 VirtualHost 上下文之外加载的,因此它具有优先权。为了将其转化为您的设置,您需要做两件事我无法帮助您:

  1. 找出您的 certbot 版本存储其挑战令牌的位置。/var/lib通常是开始寻找的安全选择。
  2. 编写一个nginx配置文件,设置别名匹配,在全局基础上将`/.well-known-acme-challenge/链接到该目录。我建议使用完整的正则表达式以避免潜在的目录遍历泄漏,但这取决于您。

完成后,只需调用certbot创建和更新 SSL 证书即可生成证书签名请求,创建质询令牌并向 Let's Encrypt 服务器发送信号,然后服务器将在签署证书之前尝试验证令牌。

在某些时候我可能会站在你的立场上,除了我的情况,我将编辑一个我几年前写的成熟的 Perl 脚本,所以当我说“祝你好运”时,我并不是故意嘲笑。 ..

编辑您还需要修改块模板以包含 certbot 使用的目录;这对您来说可能比向 certbot 添加 postrun 挂钩以将证书复制到您的 nginx SSL 目录更容易。

第二次编辑根据这个问题nginx等效代码大约是

location /.well-known/acme-challenge/(.*)$ {
    alias /var/lib/dehydrated/acme-challenges/$1;
}

但我会把它留给你去解决和测试。

相关内容