inofix.acme-setup

Acme 设置

这是一个用于设置和准备一切,以便后续使用 Let's Encrypt 签署证书的 Ansible 角色,包括安装用户、相关目录和脚本,并设置正确的权限。

该角色适用于任何需要为自己申请证书或为其他主机签署证书的主机。

请查看 inofix.acme-request,以获取创建私钥和证书请求,以及在“签署”或“证书代理”主机上安装远程创建的请求。

inofix.acme-tiny-install 角色将在“签署”主机上安装 acme-tiny 脚本。

inofix.acme-tiny-sign 和 inofix.acme-tiny-cron 角色负责在“签署”主机上进行实际(或定期)签署操作。

任何使用 Let's Encrypt 服务签署证书的主机,必须有一个监听 80 端口的 Web 服务器,并将 /.well-known/acme-challenge 解析到可供签署工具访问的目录 - 请查看 inofix.acme-sign 的示例。

依赖其他主机为其签署证书的主机(例如,它们没有安装 Web 服务)可以使用 inofix.acme-proxy 从其代理主机访问和获取已签署的证书。

请参阅下面的“概述 / 概念”以获取详细信息。

这个角色的开发最初是作为 zwischenloesung.acme-tiny-setup 启动的。

为什么我们不使用现有的角色?

  • 第一个原因请阅读下面的“承诺”部分。我们需要可靠的解决方案。
  • 此角色将被 maestro 使用,必须遵循那里使用的逻辑。(当然,角色可以在没有 maestro 的情况下使用)

状态

预稳定(功能冻结/发布候选)

承诺

当然,这个角色未来可能会有所变化,但我们只会扩展功能以保持向后兼容性。

如果需要进行重大更改,将会创建一个新角色,可能会带有版本后缀。

安装

# ansible-galaxy install inofix.acme-setup

要求

  • Ansible 版本 >2.0
  • 目标主机上需安装 Python2/3
  • 通用 UNIX 系统
  • Sudo 权限
  • Systemd(默认为启用)

概述 / 概念

因为这是实际中心角色,是任何涉及到的主机所需的唯一角色,故在此 README 提供一个概述。

角色视角

  • inofix.acme-setup
    • 在任何主机上运行
    • 设置环境
      • 创建用户 'acme'
      • 创建密钥等
        • /etc/ssl/acme
          • 脚本
          • 相关服务
        • /var/log/acme
          • 日志
        • /var/lib/acme
          • 用户存放签署和复制证书的家目录
  • inofix.acme-request
    • 在使用或签署证书的主机上运行
    • 在使用证书的主机上
      • 创建私钥
      • 创建证书请求 (csr)
    • 在代理主机上
      • 安装来自“离线”主机的 csr
  • inofix.acme-tiny-install
    • 在使用 Let's Encrypt 签署证书的主机上运行
    • 安装 acme-tiny.py 脚本
  • inofix.acme-tiny-sign
    • 在使用 Let's Encrypt 签署证书的主机上运行
      • 只需 csr:私钥甚至不会被读取(对于代理主机来说是缺失的)
      • 使用 acme-tiny.py 请求 Let's Encrypt 为 csr 签署证书
  • inofix.acme-tiny-cron
    • 在使用 Let's Encrypt 签署证书的主机上运行
      • 只需 csr:私钥甚至不会被读取(对于代理主机来说是缺失的)
      • 安装定时任务来执行签署(如在 inofix.acme-tiny-sign 中所示)
  • inofix.acme-proxy
    • 在使用证书但不自己签署的主机上运行(例如,邮件/Jabber 等)
    • 从远程主机(已签署的主机)复制证书
  • inofix.acme-service-..
    • 在所有使用证书的主机上运行(即运行受认证服务的主机...)
    • 注册服务以便在证书更改时重新启动

主机视角

  • 仅作为签署主机存在且自身没有使用证书的服务的主机,需要运行以下角色:
    • inofix.acme-setup(此角色)
    • inofix.acme-tiny-install
    • inofix.acme-tiny-sign
    • inofix.acme-tiny-cron(每月自动重复签署)
  • 仅使用证书,但不直接请求 Let's Encrypt 签署的主机,需要运行以下角色:
    • inofix.acme-setup(此角色)
    • inofix.acme-request
    • inofix.acme-proxy(自动从远程主机获取证书)
    • inofix.acme-service-(在证书变更时重启服务)
  • 同时运行签署请求工具和特定服务的主机,需要运行以下角色:
    • inofix.acme-setup(此角色)
    • inofix.acme-tiny-install
    • inofix.acme-request
    • inofix.acme-tiny-sign
    • inofix.acme-tiny-cron(每月自动重复签署)
    • inofix.acme-service-(在证书变更时重启服务)

角色变量

  • app__acme__user - 可选,默认值='acme'
  • app__acme__group - 可选,默认值='acme'
  • app__acme__home - 可选,默认值='/var/lib/acme'
  • app__acme__config_dir - 可选,默认值='/etc/ssl/acme'
  • app__acme__openssl_config - 可选,默认值='/etc/ssl/openssl.cnf'
  • app__acme__challenge_dir - 可选,默认值='/var/www/acme-challenges'
  • app__acme__scripts_dir - 可选,默认值='/etc/ssl/acme/scripts'
  • app__acme__service_dir - 可选,默认值='/etc/ssl/acme/service.d'
  • app__acme__bin_dir - 可选,默认值='/usr/local/bin'
  • app__acme__account_key - 可选,默认值='account.key'
  • app__acme__key_length - 可选,默认值=4096
  • app__acme__ssh_keytype - 可选,默认值='rsa'
  • app__acme__log_dir - 可选,默认值='/var/log/acme'
  • app__acme__letsencrypt_certs - 可选,默认值=[ {url='https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem', file='intermediate.crt'}, {url='https://letsencrypt.org/certs/isrgrootx1.pem', file='ca.crt'} ]
  • app__acme__cron_minute - 可选,默认值='11'
  • app__acme__cron_hour - 可选,默认值='5'
  • app__acme__cron_day - 可选,默认值='*'
  • app__acme__cron_month - 可选,默认值='*'
  • app__acme__cron_year - 可选,默认值='*'
  • fqdn - 可选,默认值={{ ansible_fqdn | d(inventory_hostname) }}
  • workdir - 可选,默认值=/tmp(本地目录,用于 SSH 公钥交换)

依赖

示例剧本

- hosts: servers
  roles:
     - inofix.acme-setup

请参阅 完整的剧本,其中包括所有相关角色。

许可证

GPLv3

作者信息

安装
ansible-galaxy install inofix.acme-setup
许可证
gpl-3.0
下载
507
拥有者
INOFIX is a Luzern based software company focused on the development of free software and system solutions.