trombik.cfssl

trombik.cfssl

cfssl のための ansible ロールです。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.md を参照してください。 {}
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 YAML 形式のリクエスト JSON ファイルの内容 はい
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 }}"

中間 CA を作成するためにロールを複数回含める tests/serverspec/intermediate.yml を参照してください。

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: []
        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 Test CA
      key:
        algo: rsa
        size: 2048

ライセンス

Copyright (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/