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 でリッスンしており、.well-known/acme-challenge
を署名ツールがアクセスできるディレクトリに解決する Web サーバーが必要です。具体的な例については、inofix.acme-sign
を参照してください。
署名を行わないホスト(例えば、ウェブサービスがインストールされていない場合)は、制御ホストから準備された署名済み証明書にアクセスして転送することができます。この機能には inofix.acme-proxy
を使用します。
詳しくは「概要 / コンセプト」をご覧ください。
このロールの開発は zwischenloesung.acme-tiny-setup
として開始されました。
なぜ既存のロールを使用しないのか?
- 最初の理由は「約束」のセクションを読んでください。信頼できるものが必要です。
- このロールは maestro に使用されるため、そこで使用されたロジックに従う必要があります。(もちろん、maestro を使用せずにこのロールを使用することも可能です。)
ステータス
preSTABLE(機能フリーズ/リリース候補)
約束
確かに、このロールは将来的に変更される可能性がありますが、後方互換性を損なわないように機能を拡張するだけです。
根本的な変更が必要になる場合は、新しいロールが作成され、バージョンサフィックスが付与される予定です。
インストール方法
# ansible-galaxy install inofix.acme-setup
要件
- Ansible >2.0
- 対象ホストに Python2/3
- FHS に準拠した一般的な UNIX
- Sudo
- Systemd(デフォルトで)
概要 / コンセプト
このロールは実際には中心的なロールであり、関与するすべてのホストで必要な唯一のロールです。README に概要が提供されています。
ロールの観点
- inofix.acme-setup
- すべてのホストで実行
- 環境をセットアップ
- ユーザー 'acme' を作成
- キーなどを作成
- /etc/ssl/acme
- スクリプト
- 接続されたサービス
- /var/log/acme
- ログ
- /var/lib/acme
- 証明書の署名とコピーのためのユーザーのホーム
- /etc/ssl/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 だけが必要: プライベートキーは読まれない(またはプロキシには存在しない)
- 署名部分を自動的に実行する cron ジョブをインストール(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
完全なプレイブックは、すべての関連するロールが含まれています。こちらを確認してください: setup-lets-encrypt.yml
ライセンス
GPLv3
作者情報
- Michael Lustenberger at inofix.ch
Prepare the system for using Let's Encrypt
ansible-galaxy install inofix.acme-setup