geerlingguy.certbot
Ansible ロール: Certbot (Let's Encrypt 用)
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 ユーザーアカウントによって実行されるように、カスタムのユーザー/時間/分を設定することが推奨されます。
自動証明書生成
現在、このロールでは新しい証明書を生成するために standalone
と webroot
の方法がサポートされています。
完全な例については: 完全に機能するテストプレイブックを参照してください molecule/default/playbook-standalone-nginx-aws.yml。
certbot_create_if_missing: false
certbot_create_if_missing
を yes
または 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_updated
が yes
に設定されている場合、このロールが実行されるたびにリポジトリが更新されます。
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
新しい証明書を追加するプロセスを完全に自動化したいが、このロールの組み込み機能は使用したくない場合は、コマンドラインオプションを使用して、登録し、利用規約に同意し、その後スタンドアロンサーバーを使用して証明書を生成できます。
- ポート 80 と 443 でリスニングしているサービス(Apache、Nginx、Varnish など)を停止します。
certbot register --agree-tos --email [[email protected]]
のように登録します。 - 注意: 同じサーバーで追加の証明書を生成する場合、この手順を後で行う必要はありません。- このサーバーを指す DNS のドメインの証明書を生成します:
certbot certonly --noninteractive --standalone -d example.com -d www.example.com
- 以前にポート 80 と 443 でリスニングしていたものを再起動します。
- ウェブサーバーの VirtualHost TLS 設定を新しい証明書(
fullchain.pem
)と秘密鍵(privkey.pem
)を指すように更新します。これはcertbot
コマンドで渡したドメイン用です。 - ウェブサーバーを再読み込みまたは再起動して、新しい 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