ussrlongbow.certbot

Ansible ロール: Certbot (Let's Encrypt 用)

ビルドステータス

Certbot(Let's Encrypt用)をインストールして設定します。

要件

ソースからインストールする場合、Git が必要です。geerlingguy.git ロールを使って Git をインストールできます。

一般的に、ソースからインストールすること(「ソースから Git でのインストール」セクション参照)は、特に古い OS リリースを使用している場合、Certbot と Let's Encrypt の使用体験を良くします。

ロール変数

certbot_install_from_source 変数は、Certbot を Git からインストールするかパッケージ管理からインストールするかを制御します。デフォルトは後者なので、変数は no に設定されています。

certbot_auto_renew: true
certbot_auto_renew_user: "{{ ansible_user | default(lookup('env', 'USER')) }}"
certbot_auto_renew_hour: 3
certbot_auto_renew_minute: 30
certbot_auto_renew_options: "--quiet --no-self-upgrade"

このロールは、指定されたユーザーアカウントの下で毎日指定された時刻に cron ジョブを実行するように設定します。デフォルトでは、毎日 03:30:00 に certbot renew(または certbot-auto renew)が実行されます。更新はトラフィックの少ない時間に非 root ユーザーアカウントで行うことをお勧めします。

自動証明書生成

現在のところ、このロールを使用して新しい証明書を生成するためのビルトインメソッドは1つです:standalone。将来的には他の方法(例:nginx や apache を使用する方法)も追加されるかもしれません。

完全な例については: molecule/default/playbook-standalone-nginx-aws.yml の完全に機能するテストプレイブックを参照してください。

certbot_create_if_missing: false
certbot_create_method: standalone

certbot_create_if_missingyes または True に設定すると、このロールが証明書を生成します。証明書生成に使用するメソッドは certbot_create_method 変数で設定します。現在許可されている値には: standalone が含まれます。

certbot_admin_email: email@example.com

Let's Encrypt の利用規約に同意し、証明書関連の通知を受け取るために使用するメールアドレスです。このメールアドレスは、あなたまたはあなたの組織が定期的に監視するものに設定してください。

certbot_certs: []
  # - email: [email protected]
  #   domains:
  #     - example1.com
  #     - example2.com
  # - domains:
  #     - example3.com

証明書を生成するためのドメイン(その他のデータ)のリストです。リストの各項目に email キーを追加することで、certbot_admin_email を上書きすることができます。

certbot_create_command: "{{ certbot_script }} certonly --standalone --noninteractive --agree-tos --email {{ cert_item.email | default(certbot_admin_email) }} -d {{ cert_item.domains | join(',') }}"

certbot_create_command は証明書を生成するために使用されるコマンドを定義します。

スタンドアロン証明書生成

certbot_create_standalone_stop_services:
  - nginx

certbot がポート 80 および 443 で自分のスタンドアロンサーバーを実行する際に停止すべきサービスを指定します。Apache を実行している場合は、これを apache2 (Ubuntu)または httpd (RHEL)に設定します。また、ポート 443 で Nginx を使い、ポート 80 に他のサービス(例:Varnish や Java アプリ)を使っている場合は、リストに追加して証明書生成時に停止されるようにします。

これらのサービスは、新しい証明書が初めて生成されるときだけ停止されます。

Git からのソースインストール

必要に応じて、Certbot を Git ソースリポジトリからインストールできます。これはいくつかのケースで便利ですが、特に古いディストリビューションに Certbot パッケージが利用できない場合(例:CentOS < 7、Ubuntu < 16.10、Debian < 8)に役立ちます。

certbot_install_from_source: false
certbot_repo: https://github.com/certbot/certbot.git
certbot_version: master
certbot_keep_updated: true

Certbot Git リポジトリのオプションです。ソースからインストールするには、certbot_install_from_sourceyes に設定します。これにより、設定された certbot_repo がクローンされ、certbot_version 設定が尊重されます。certbot_keep_updatedyes に設定されている場合、ロールが実行されるたびにリポジトリが更新されます。

certbot_dir: /opt/certbot

Certbot がクローンされるディレクトリです。

ワイルドカード証明書

Let's Encrypt は ワイルドカード証明書の生成をサポートしています が、生成と使用のプロセスは少し複雑です。このロールを使用してワイルドカード証明書を管理する方法の例については、このプルリクエストのコメント を参照してください。

Michael Porter は、Cloudflare を使用した Ansible での Let's Encrypt ワイルドカード証明書の作成 の手順も紹介しています。

依存関係

なし。

例プレイブック

- hosts: servers

  vars:
    certbot_auto_renew_user: your_username_here
    certbot_auto_renew_minute: 20
    certbot_auto_renew_hour: 5

  roles:
    - geerlingguy.certbot

他の例は tests/ ディレクトリにあります。

Certbot での証明書の手動作成

注: このロールは自動的に証明書を生成できます。上記の「自動証明書生成」ドキュメントを参照してください。

certbot(または certbot-auto)スクリプトを使用して手動で証明書を作成できます(Ubuntu 16.04 では letsencrypt を使用、ソース/Git からインストールする場合は /opt/certbot/certbot-auto を使用)。以下に Certbot を使って証明書を設定するためのいくつかのコマンド例を示します。

# すべての Apache バーチャルホスト用に自動的に証明書を追加します(注意して使用してください!)。
certbot --apache

# 証明書を生成しますが、Apache の設定は変更しません(安全です)。
certbot --apache certonly

新しい証明書を追加するプロセスを完全に自動化したいが、このロールのビルトイン機能を使用したくない場合は、コマンドラインオプションを使用して登録、利用規約に同意し、スタンドアロンサーバーを使用して証明書を生成することができます:

  1. ポート 80 および 443 でリッスンしているサービス(Apache、Nginx、Varnish など)を停止します。
  2. certbot register --agree-tos --email [[email protected]] のように登録します。 - 注:同じサーバーで追加の証明書を生成する際にこのステップを再度行う必要はありません。
  3. このサーバーを指す DNS のドメイン用に証明書を生成します:certbot certonly --noninteractive --standalone -d example.com -d www.example.com
  4. 以前にポート 80 および 443 でリッスンしていたサービスを再起動します。
  5. ウェブサーバーのバーチャルホストTLS設定を新しい証明書(fullchain.pem)と秘密鍵(privkey.pem)が生成したものにポイントします。
  6. ウェブサーバーを再読み込みまたは再起動して新しい HTTPS バーチャルホスト設定を使用します。

Certbot 証明書の自動更新

デフォルトでは、このロールは、選択した時刻にインストールされたすべての証明書を日に1回更新する cron ジョブを追加します。

証明書を実際には更新せずに自動更新をテストするには、次のコマンドを使用します:

/opt/certbot/certbot-auto renew --dry-run

完全なドキュメントとオプションについては、Certbot のウェブサイトを参照してください。

ライセンス

MIT / BSD

著者情報

このロールは、Jeff Geerling によって2016年に作成されました。彼は Ansible for DevOps の著者です。

プロジェクトについて

Installs and configures Certbot (for Let's Encrypt).

インストール
ansible-galaxy install ussrlongbow.certbot
ライセンス
mit
ダウンロード
6.9k
所有者