geerlingguy.certbot

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

CI

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

前提条件

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

一般的に、ソースからのインストール(ソースインストールのセクションを参照)は、特に古い OS リリースを使用している場合、Certbot および Let's Encrypt の使用体験が向上します。

ロール変数

certbot_install_method: package

Certbot のインストール方法を制御します。利用可能なオプションは「package」、「snap」、「source」です。

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"

デフォルトでは、このロールは、指定したユーザーアカウントで、毎日指定された時間と分に cron ジョブを設定します。デフォルトでは、毎日 03:30:00 に certbot renew(または certbot-auto renew)が実行されます。更新が低トラフィックの時間帯に行われ、非 root ユーザーアカウントによって実行されるように、カスタムのユーザー/時間/分を設定することが推奨されます。

自動証明書生成

現在、このロールでは新しい証明書を生成するために standalonewebroot の方法がサポートされています。

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

certbot_create_if_missing: false

certbot_create_if_missingyes または True に設定すると、このロールが証明書を生成します。

certbot_create_method: standalone

証明書を生成する際に使用される方法を certbot_create_method 変数で設定します — 現在の許可される値は standalone または webroot です。

certbot_testmode: false

テストモードを有効にして、実際に証明書を生成せずにテストリクエストのみを実行します。

certbot_hsts: false

証明書生成のために (HTTP Strict Transport Security) を有効にします。

certbot_admin_email: email@example.com

Let's Encrypt の利用規約に同意し、証明書関連の通知を受け取るために使用されるメールアドレス。あなたまたはあなたの組織が定期的に監視するメールアドレスにカスタマイズして設定する必要があります。

certbot_certs: []
  # - email: [email protected]
  #   webroot: "/var/www/html"
  #   domains:
  #     - example1.com
  #     - example2.com
  # - domains:
  #     - example3.com

証明書を生成するためのドメイン(およびその他のデータ)のリスト。任意のリスト項目に email キーを追加して certbot_admin_email を上書きすることができます。webroot 作成方法を使用する場合、認証に使用するディレクトリを指定する webroot 項目を提供する必要があります。このディレクトリから正しくコンテンツを提供するようにウェブサーバーを設定してください。

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 は証明書を生成するために使用されるコマンドを定義します。完全なデフォルトコマンドは defaults/main.yml 内にあります — デフォルトコマンドにない追加の引数を certbot_create_extra_args 変数を使用して簡単に追加できます。

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

certbot_create_standalone_stop_services:
  - nginx

certbot がポート 80 と 443 で独自のスタンドアロンサーバーを実行している間に停止すべきサービス。Apache を実行している場合は、これを apache2 (Ubuntu)、または httpd (RHEL) に設定してください。また、ポート 443 で Nginx を使用し、ポート 80 で別のものを使用している場合(例:Varnish、Java アプリなど)、証明書が生成される際に停止されるようにリストに追加してください。

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

Snap インストール

2020 年 12 月から、Certbot のメンテナは certbot-auto のようなスクリプトを維持するのではなく、Snap から Certbot をインストールすることを推奨しています。

certbot_install_method: snap を設定すると、このロールは Snap を介して Certbot をインストールします。

このインストール方法は現在実験的であり、すべての Linux ディストリビューションで動作するかどうかは不明です。

Webroot 証明書生成

webroot 作成方法を使用するときは、すべての certbot_certs 項目に対して webroot 項目を提供する必要があります。認証に使用するディレクトリを指定してください。また、このディレクトリからウェブサーバーが正しくコンテンツを提供することを確認してください。

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

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

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

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

certbot_dir: /opt/certbot

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

ワイルドカード証明書

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

Michael Porterによる Ansible での Let’s Encrypt ワイルドカード証明書の作成 にも、Cloudflare を使用する具体例があります。

依存関係

なし。

例プレイブック

- 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 のすべての VirtualHost に証明書を自動追加します(注意して使用してください!)。
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. ウェブサーバーの VirtualHost TLS 設定を新しい証明書(fullchain.pem)と秘密鍵(privkey.pem)を指すように更新します。これは certbot コマンドで渡したドメイン用です。
  6. ウェブサーバーを再読み込みまたは再起動して、新しい HTTPS VirtualHost 構成を使用します。

Certbot 証明書の自動更新

デフォルトでは、このロールは、インストールされたすべての証明書を指定した時間と分に毎日更新する cron ジョブを追加します。

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

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

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

ライセンス

MIT / BSD

作者情報

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

プロジェクトについて

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

インストール
ansible-galaxy install geerlingguy.certbot
ライセンス
mit
ダウンロード
1.6M
所有者
Father, author, developer, maker. Sometimes called "an inflammatory enigma". #stl #drupal #ansible #k8s #raspberrypi #crohns