trombik.cfssl

trombik.cfssl

cfsslansible 角色,支持 API 服务器 (cfssl serve)。

对于所有用户

由于少数发行版在其软件包中支持 API 服务器,cfssl_db_* 角色变量可能会有所更改。

要将 cfssl 作为服务器运行,您所使用的发行版软件包必须提供启动脚本,以及对此软件包的其他修改。据我所知,Ubuntu 的软件包不支持。因此,德比(Debian)系列的 API 服务器支持未实现。

要求

角色变量

变量 描述 默认值
cfssl_user cfssl 的用户名 {{ __cfssl_user }}
cfssl_group cfssl 的组名 {{ __cfssl_group }}
cfssl_package cfssl 的软件包名 {{ __cfssl_package }}
cfssl_extra_packages 要安装的额外软件包列表 []
cfssl_ca_root_dir 根 CA 目录路径 {{ __cfssl_ca_root_dir }}
cfssl_ca_secret_key_file 根私钥文件路径 {{ cfssl_ca_root_dir }}/ca-key.pem
cfssl_ca_public_key_file 根公钥文件路径 {{ cfssl_ca_root_dir }}/ca.pem
cfssl_ca_csr_file 根 CA 的 CSR JSON 文件路径 {{ cfssl_ca_root_dir }}/ca.csr
cfssl_ca_csr_config cfssl_ca_csr_config_file 的内容 {}
cfssl_ca_config_file CA 配置文件路径(JSON 格式) {{ cfssl_ca_root_dir }}/ca-config.json
cfssl_ca_csr_config_file CA 的 CSR 配置文件路径(JSON 格式) "{{ cfssl_ca_root_dir }}/ca-csr.json"
cfssl_ca_config cfssl_ca_config_file 的内容 {}
cfssl_certs_dir 存放签名证书的目录路径 {{ cfssl_ca_root_dir }}/certs
cfssl_service cfssl 的服务名称 cfssl
cfssl_db_config 数据库配置(YAML 格式)。有关更多详细信息,请参见上游源代码中的 certdb/README.nd {}
cfssl_db_type 数据库类型。支持的值仅为 sqlite。如果指定,角色将执行特定的数据库任务,并将 cfssl 作为服务器启动。 ""
cfssl_db_dir 数据库目录路径 {{ __cfssl_db_dir }}
cfssl_db_sqlite_bin sqlite 命令的文件名 sqlite3
cfssl_db_sqlite_database_file sqlite 数据库文件路径 {{ cfssl_db_dir }}/certdb.db
cfssl_db_sqlite_sql_file_dir 存储 SQL 文件的目录路径。 {{ __cfssl_db_sqlite_sql_file_dir }}
cfssl_db_migration_dir 数据库迁移目录路径 {{ cfssl_ca_root_dir }}/goose/{{ cfssl_db_type }}
cfssl_db_migration_config 数据库迁移配置 {}
cfssl_db_migration_environment 数据库迁移环境 development
cfssl_flags 启动脚本的附加选项 ""
cfssl_certs 要签名的证书列表(见下文) ""

cfssl_certs

这是一个字典列表。每个元素表示一个 CSR。

描述 必填?
name 相对于 cfssl_certs_dir 的文件名
SAN 主体备用名称列表
profile 签名时使用的配置文件名称
json 请求 JSON 文件的内容(YAML 格式)
owner 私钥文件所有者的 Unix 用户名(默认为 cfssl_user

包含 trombik.cfssl

您可以从任务或角色中包含该角色。使用 vars 定义特定角色变量。

- name: 包含角色 trombik.cfssl
  include_role:
    name: trombik.cfssl
  vars:
    cfssl_extra_packages:
      - zsh

但是,当您想要传递一个包含角色变量的单个变量时,您需要将变量传递给一个特殊的桥接角色变量 cfssl_vars

- name: 包含角色 trombik.cfssl
  include_role:
    name: trombik.cfssl
  vars:
    cfssl_vars: "{{ my_variable }}"

以下示例不工作:

- name: 包含角色 trombik.cfssl
  include_role:
    name: trombik.cfssl
  vars: "{{ my_variable }}"

请参见 tests/serverspec/intermediate.yml,其中多次包含该角色以创建中间 CA。

Debian

变量 默认值
__cfssl_user cfssl
__cfssl_group cfssl
__cfssl_package golang-cfssl
__cfssl_ca_root_dir /etc/cfssl
__cfssl_db_dir /var/lib/cfssl
__cfssl_db_sqlite_sql_file_dir ""

FreeBSD

变量 默认值
__cfssl_user cfssl
__cfssl_group cfssl
__cfssl_package security/cfssl
__cfssl_ca_root_dir /usr/local/etc/cfssl
__cfssl_db_dir /var/db/cfssl
__cfssl_db_sqlite_sql_file_dir /usr/local/share/cfssl/certdb/sqlite/migrations

OpenBSD

变量 默认值
__cfssl_user _cfssl
__cfssl_group _cfssl
__cfssl_package cfssl
__cfssl_ca_root_dir /etc/cfssl
__cfssl_db_dir /var/db/cfssl
__cfssl_db_sqlite_sql_file_dir /usr/local/share/cfssl/certdb/sqlite/migrations

依赖

示例剧本

该示例管理 cfssl 并签署几个证书。

有关 API 服务器的示例,请参见 tests/serverspec/api.yml

有关根 CA 下多个中间 CA 的示例,请参见 tests/serverspec/intermediate.yml

---
- hosts: localhost
  roles:
    - role: ansible-role-cfssl
  vars:
    # 此测试用例遵循同样的步骤,详情请参阅
    # https://docs.sensu.io/sensu-go/latest/guides/generate-certificates/
    cfssl_certs:
      - name: agent1.example.com.json
        # 主体备用名称,简写为 SAN
        SAN: []
        profile: agent
        owner: nobody
        json:
          CN: agent1.example.com
          hosts:
            - ""
          key:
            algo: rsa
            size: 2048
      - name: backend-1.example.com.json
        SAN:
          - localhost
          - 127.0.0.1
          - 10.0.0.1
          - backend-1
        profile: backend
        json:
          CN: backend-1.example.com
          hosts:
            - ""
          key:
            algo: rsa
            size: 2048
      - name: backend-2.example.com.json
        SAN:
          - localhost
          - 127.0.0.1
          - 10.0.0.2
          - backend-2
        profile: backend
        json:
          CN: backend-2.example.com
          hosts:
            - ""
          key:
            algo: rsa
            size: 2048
      - name: backend-3.example.com.json
        SAN:
          - localhost
          - 127.0.0.1
          - 10.0.0.3
          - backend-3
        profile: backend
        json:
          CN: backend-3.example.com
          hosts:
            - ""
          key:
            algo: rsa
            size: 2048
    cfssl_ca_config:
      signing:
        default:
          expiry: 17520h
          usages:
            - signing
            - key encipherment
            - client auth
        profiles:
          backend:
            expiry: 4320h
            usages:
              - signing
              - key encipherment
              - server auth
          agent:
            expiry: 4320h
            usages:
              - signing
              - key encipherment
              - client auth

    cfssl_ca_csr_config:
      CN: Sensu 测试 CA
      key:
        algo: rsa
        size: 2048

许可证

版权所有 (c) 2020 Tomoyuki Sakurai <y@trombik.org>

在不收取任何费用的情况下,特此授予使用、复制、修改和分发本软件的权限,前提是上述版权声明和本许可声明出现在所有副本中。

本软件按“原样”提供,作者对此软件不提供任何担保,包括所有默示的适销性和适用性担保。在任何情况下,作者对因使用或性能本软件而导致的任何特殊、直接、间接或后果性损害或任何损害概不负责,包括使用、数据或利润的损失,无论是合同行为、过失或其他侵权行为引起的。

作者信息

Tomoyuki Sakurai y@trombik.org

该 README 由 qansible 创建。

关于项目

ansible role for cfssl

安装
ansible-galaxy install trombik.cfssl
许可证
isc
下载
1.1k
拥有者
PGP finger print: 03EB 3D97 5E04 9B0C AB21 93A2 D693 42A9 EFBC 3577 Makerspace and Coliving in Siem Reap, Cambodia: http://info.mkrsgh.org/