L-P.simp_le
ansible-role-simp_le
安装 simp_le,生成证书并在 Debian/Ubuntu 服务器上自动续订。
续订将通过 Ansible 远程用户每天尝试运行的 cron 作业来进行。
在 Ansible Galaxy 查看该角色: L-P.simp_le
注意:我开始使用 acmetool,并建议你在运行 Ubuntu ≥ 16.04 的新服务器上也这样做。
必需变量
我们将为其生成证书的虚拟主机列表:
simp_le_vhosts:
- domains: ["www.example.com", "example.com"]
root: "/path/to/challenges" # 可通过HTTP访问
output: "/path/to/output/dir" # 写入证书的目录
LetsEncrypt 用于识别你并发送续订通知的电子邮件地址:
simp_le_email: "[email protected]"
你可以在主机上设置三个可选键:
user
和group
用于指定谁将拥有密钥、挑战和其父目录。 默认拥有者是www-data:www-data
。extra_args
用于传递额外参数给 simp_le,这可以用来使用 LetsEncrypt 的临时服务器或告诉 simp_le 在续订证书时重用密钥对。 如果你使用 TLSA 记录,这非常有用,你可以使用选择器类型 1(SubjectPublicKeyInfo),这样在证书续订时 TLSA 记录就不需要更改。update_action
在证书续订时运行的命令,例如systemctl restart apache2
示例:
simp_le_vhosts:
- domains: ["smtp.example.com", "mail.example.com"]
root: "/path/to/challenges"
output: "/path/to/output/dir"
user: "Debian-exim"
group: "Debian-exim"
extra_args: "--reuse_key --server https://acme-staging.api.letsencrypt.org/directory"
update_action: "/bin/systemctl restart exim4"
有关更多配置,请查看 defaults/main.yml
。
服务器配置
你的服务器需要通过 HTTP 提供挑战文件,这里是一个你可以用于 nginx 的示例配置,将每个HTTP请求重定向到 HTTPS,除了挑战:
location /.well-known/acme-challenge/ {
alias /var/www/challenges/.well-known/acme-challenge/;
try_files $uri @forward_https;
}
location @forward_https {
return 301 https://example.com$request_uri;
}
location / {
return 301 https://example.com$request_uri;
}
示例剧本
- hosts: all
roles:
- {role: "L-P.simp_le", become: no}
虽然大部分操作无需使用 sudo
,但仍然用于以正确的权限和所有者创建各种目录。