Certbot CloudFlare DNS 検証を使用して Let’s Encrypt SSL 証明書を取得する方法

Certbot Cloudflare Dns Jian Zhengwo Shi Yongshite Let S Encrypt Ssl Zheng Ming Shuwo Qu Desuru Fang Fa



Certbot は、Let’s Encrypt 認証局 (CA) の ACME クライアントです。 Let’s Encrypt SSL 証明書を生成し、自動的に更新するために使用されます。デフォルトでは、Certbot は Let’s Encrypt HTTP-01 チャレンジを使用してドメインの所有権を確認し、ドメインの SSL 証明書を発行します。ただし、HTTP-01 チャレンジは、パブリック IP アドレスを持っていて、コンピューターがインターネットからアクセスできない限り機能しません。したがって、ホーム ネットワークまたはプライベート ネットワークに Let’s Encrypt SSL 証明書を使用したい場合は、代わりに DNS-01 チャレンジを使用する必要があります。 DNS-01 チャレンジが使用される場合、Let’s Encrypt はドメインの DNS サーバーを使用してドメインの所有権を検証します。したがって、プライベートネットワークでも機能します。

Let’s Encrypt DNS-01 チャレンジ (または DNS 検証) の仕組みの詳細については、「Let’s Encrypt DNS-01 チャレンジとは何か、および SSL 証明書を取得するためにそれを使用する方法」という記事を参照してください。

この記事では、Let’s Encrypt DNS 検証を使用して、Certbot と Certbot CloudFlare DNS プラグインを使用してドメイン名の SSL 証明書を取得する方法を説明します。







内容のトピック:

  1. CloudFlare DNS を使用したドメインの管理
  2. Ubuntu/Debian への Certbot および Certbot CloudFlare プラグインのインストール
  3. Certbot と Certbot CloudFlare プラグインを Fedora にインストールする
  4. RHEL/AlmaLinux/Rocky Linux/CentOS Stream への Certbot および Certbot CloudFlare プラグインのインストール
  5. Certbot と Certbot CloudFlare プラグインが正しくインストールされているかどうかを確認する
  6. CloudFlare APIトークンの生成
  7. CloudFlare API トークンをコンピュータ/サーバーに安全に保存する
  8. Certbot CloudFlare DNS 検証を使用した SSL 証明書の生成
  9. Certbot を使用した Let's Encrypt SSL 証明書の一覧表示
  10. Certbot を使用した Let’s Encrypt SSL 証明書の更新
  11. 結論
  12. 参考文献

CloudFlare DNS を使用したドメインの管理

CloudFlare DNS 検証を使用して Let’s Encrypt SSL 証明書を取得するには、CloudFlare アカウントが必要で、ドメインで CloudFlare DNS を使用する必要があります。あなたはできる CloudFlareアカウントを無料で作成する CloudFlare DNS サービスも無料で使用できます。



CloudFlare DNS を使用してドメインを管理するには、次のいずれかを実行できます。



  • CloudFlareからドメインを登録する
  • ドメインをCloudFlareに移管する
  • ドメイン レジストラーのダッシュボードから、ドメイン名の DNS ネームサーバーを CloudFlare DNS ネームサーバーに変更します。

CloudFlare DNS サービスで管理するために、CloudFlare からドメインを購入したり、CloudFlare にドメインを転送したりする必要はありません。ドメイン レジストラー (ドメインを購入した場所) のダッシュボードからドメインのネームサーバーを CloudFlare DNS ネームサーバーに変更するだけで、CloudFlare からドメインを管理できます。ドメインのネームサーバーを CloudFlare DNS ネームサーバーに変更する方法の詳細については、この記事を参照してください。





Ubuntu/Debian への Certbot および Certbot CloudFlare プラグインのインストール

Certbot および Certbot CloudFlare プラグインは、Ubuntu/Debian の公式パッケージ リポジトリで入手できます。したがって、Ubuntu/Debian に非常に簡単にインストールできます。

まず、次のコマンドを使用して APT パッケージ リポジトリ キャッシュを更新します。



$ 須藤 適切なアップデート

  コンピュータのスクリーンショット 自動生成された説明

Certbot および Certbot CloudFlare DNS プラグインをインストールするには、次のコマンドを実行します。

$ 須藤 適切な インストール 証明書ボット python3-certbot-dns-cloudflare

インストールを確認するには、「Y」を押してから、 <入力>

Certbot と Certbot CloudFlare DNS プラグインがインストールされています。完了するまでにしばらく時間がかかります。

この時点で、Certbot と Certbot CloudFlare DNS プラグインがインストールされている必要があります。

Certbot と Certbot CloudFlare プラグインを Fedora にインストールする

Certbot および Certbot CloudFlare プラグインは、Fedora の公式パッケージ リポジトリで入手でき、Fedora に非常に簡単にインストールできます。

まず、次のコマンドを使用して DNF パッケージ データベースを更新します。

$ 須藤 dnf メイクキャッシュ

  コンピュータのスクリーンショット 自動生成された説明

Certbot および Certbot CloudFlare DNS プラグインを Fedora にインストールするには、次のコマンドを実行します。

$ 須藤 DNF インストール 証明書ボット python3-certbot-dns-cloudflare

インストールを確認するには、「Y」を押してから、 <入力>

  コンピュータのスクリーンショット 自動生成された説明

Certbot と Certbot CloudFlare DNS プラグインがインストールされています。完了するまでにしばらく時間がかかります。

  自動的に生成されたコンピューター プログラムの説明のスクリーンショット

この時点で、Certbot と Certbot CloudFlare DNS プラグインが Fedora にインストールされている必要があります。

  コンピュータのスクリーンショット 自動生成された説明

RHEL/AlmaLinux/Rocky Linux/CentOS Stream への Certbot および Certbot CloudFlare プラグインのインストール

Certbot CloudFlare DNS プラグインは、RHEL/AlmaLinux/Rocky Linux/CentOS Stream の公式パッケージ リポジトリでは利用できません。 Certbot CloudFlare DNS プラグインは、EPEL パッケージ リポジトリで利用できます。 RHEL/AlmaLinux/Rocky Linux/CentOS Stream で EPEL パッケージ リポジトリを有効にし、そこから Certbot CloudFlare DNS プラグインをインストールできます。

EPEL パッケージ リポジトリを有効にしたら、次のコマンドを使用して DNF データベース キャッシュを更新します。

$ 須藤 dnf メイクキャッシュ

  コンピュータのスクリーンショット 自動生成された説明

次に、次のコマンドを使用して、Certbot および Certbot CloudFlare DNS プラグインを RHEL/AlmaLinux/Rocky Linux/CentOS Stream システムにインストールします。

$ 須藤 DNF インストール 証明書ボット python3-certbot-dns-cloudflare

インストールを確認するには、「Y」を押してから、 <入力>

  コンピュータのスクリーンショット 自動生成された説明

Certbot と Certbot CloudFlare DNS プラグインがインストールされています。完了するまでにしばらく時間がかかります。

  コンピュータのスクリーンショット 自動生成された説明

EPEL リポジトリの GPG キーを受け入れるには、「Y」を押してから、 を押します。 <入力>

  コンピュータのスクリーンショット 自動生成された説明

この時点で、Certbot と Certbot CloudFlare DNS プラグインがインストールされている必要があります。

  コンピュータのスクリーンショット 自動生成された説明

Certbot と Certbot CloudFlare プラグインが正しくインストールされているかどうかを確認する

Certbot がコンピューターにインストールされているかどうかを確認するには、次のコマンドを実行します。

$ 証明書ボット - バージョン

Certbot がインストールされている場合、コマンドはコンピューターにインストールされている Certbot のバージョン番号を出力する必要があります。

ご覧のとおり、Debian マシンには Certbot 2.1.0 がインストールされています。

  コンピュータのスクリーンショット 自動生成された説明

Certbot CloudFlare DNS プラグインがコンピューターにインストールされているかどうかを確認するには、次のコマンドを実行します。

$ 須藤 証明書ボットプラグイン

Certbot CloudFlare DNS プラグインがインストールされている場合は、次のスクリーンショットでマークされているように、プラグイン リストで「dns-cloudflare」が見つかるはずです。

  コンピュータのスクリーンショット 自動生成された説明

CloudFlare APIトークンの生成

ドメインの所有権を確認するには、Certbot が CloudFlare DNS サーバーによって管理されているドメインに TXT レコードを追加する必要があります。そのためには、Certbot が CloudFlare API トークンにアクセスする必要があります。 CloudFlare ダッシュボードからドメインの API トークンを作成できます。

まず、CloudFlare アカウントにログインします。次に、プロフィールアイコンをクリックします

> 私のプロフィール ページの右上隅から。

「API トークン」セクションに移動します。 [1] そして「トークンの作成」をクリックします [2]

  コンピュータのスクリーンショット 自動生成された説明

「ゾーンDNSの編集」セクションから「テンプレートを使用」をクリックします。

  コンピュータのスクリーンショット 自動生成された説明

「許可」セクションで、ドロップダウン メニューからマークされたオプションを選択して、「DNS ゾーン」に対する「編集」許可を許可します。

  コンピュータのスクリーンショット 自動生成された説明

CloudFlareで複数のドメインを管理している場合は、「ゾーンリソース」セクションから「特定のゾーン」の変更を許可できます。 API トークンに単一ゾーンのみの変更を許可する方が、API トークンにすべてのゾーンの変更を許可するよりも安全です。これは、API トークンが侵害された場合、攻撃対象領域が小さくなり、被害が少なくなるからです。

  コンピュータのスクリーンショット 自動生成された説明

単一の API キーを使用して CloudFlare が管理するすべてのドメインを変更する場合は、「ゾーンリソース」セクションから「すべてのゾーン」を選択します。

  コンピュータのスクリーンショット 自動生成された説明

API トークンの構成が完了したら、「概要に進む」をクリックします。

  コンピュータのスクリーンショット 自動生成された説明

API トークンを使用して CloudFlare が管理するドメインで実行できるアクションの概要が表示されます。 「トークンの作成」をクリックします。

  コンピュータのスクリーンショット 自動生成された説明

API トークンを作成する必要があります。 API トークンを紛失しないように、安全な場所にコピーしてください。このページを離れると、この API トークンを再度見つけることはできなくなります。 API トークンを紛失した場合に備えて、新しい API トークンを生成する必要があります。

LyPCAcOBygX1UMHvcsvBFo41aItm2cCVxnjloZj5

  コンピュータのスクリーンショット 自動生成された説明

CloudFlare API トークンをコンピュータ/サーバーに安全に保存する

Certbot は、CloudFlare API トークンを使用して、CloudFlare DNS サーバー内のドメインの新しい TXT レコードを追加する必要があります。したがって、CloudFlare API トークンをコンピューター/サーバーに保存する必要があります。適切なファイル アクセス許可を確保せずに API トークンを保存すると、他のプログラムやユーザーが API トークンにアクセスできるようになる可能性があります。これはセキュリティ上の理由から望ましくないことです。このセクションでは、CloudFlare API トークンをファイルシステムに安全に保存する方法を説明します。

まず、次のように CloudFlare API キーを保存するディレクトリ (つまり、~/.secrets/certbot) を作成します。

$ mkdir -pv / .secrets / 証明書ボット

  コンピュータのスクリーンショット 自動生成された説明

新しく作成したディレクトリ (例: ~/.secrets/certbot) に「cloudflare.ini」ファイルを作成し、次のようにお気に入りのテキスト エディタ (例: nano) で開きます。

$ ナノ / .secrets / 証明書ボット / クラウドフレア.ini

「cloudflare.ini」ファイルに次の行を入力して押します。 + バツ 続いて「Y」と <入力> をクリックして保存します (nano テキスト エディターを使用している場合)。

dns_cloudflare_api_token = < あなたのクラウドフレア API トークン >

  コンピュータのスクリーンショット 自動生成された説明

「cloudflare.ini」ファイルへの適切なアクセス許可を確保するには、次のコマンドを実行して、root ユーザーのみがファイルへの読み取りおよび書き込みアクセス権を持っていることを確認します。

$ 須藤 チャウン ルート:ルート ~ / .secrets / 証明書ボット / クラウドフレア.ini

$ 須藤 chmod 0600〜 / .secrets / 証明書ボット / クラウドフレア.ini

ご覧のとおり、root ユーザーのみが「cloudflare.ini」ファイルに対する読み取りおよび書き込み権限を持っています。

$ ls -lh / .secrets / 証明書ボット / クラウドフレア.ini

他のユーザーが「cloudflare.ini」ファイルを読み取ろうとすると、「アクセスが拒否されました」というエラー メッセージが表示されます。

$ / .secrets / 証明書ボット / クラウドフレア.ini

  コンピュータのスクリーンショット 自動生成された説明

Certbot CloudFlare DNS 検証を使用した SSL 証明書の生成

CloudFlare DNS検証を使用してワイルドカードドメイン名「*.nodekite.com」のLet’s Encrypt SSL証明書を生成するには、次のようにcerbotコマンドを実行します。

$ 須藤 証明書ボット証明書のみ --dns-クラウドフレア --dns-cloudflare-credentials / .secrets / 証明書ボット / クラウドフレア.ini -d * .nodekite.com

ドメイン名「nodekite.com」および「www.nodekite.com” using the CloudFlare DNS validation, use the “-d” option of the certbot command for each domain name as follows」の Let’s Encrypt SSL 証明書を生成するには:

$ 須藤 証明書ボット証明書のみ --dns-クラウドフレア --dns-cloudflare-credentials / .secrets / 証明書ボット / クラウドフレア.ini -d www.nodekite.com -d ノードキテ.com

DNS の変更が世界中の一般的な DNS ネームサーバーに反映されるまでに時間がかかる場合は、Certbot の「–dns-cloudflare-propagation-秒」オプションを使用して、DNS 検証の前に Certbot が待機する秒数を設定できます。は発表された。

$ 須藤 証明書ボット証明書のみ --dns-クラウドフレア --dns-cloudflare-credentials / .secrets / 証明書ボット / クラウドフレア.ini --dns-cloudflare-propagation-秒 60 -d * .nodekite.com

Certbot コマンドを実行すると、電子メール アドレスを入力するように求められます。メールアドレスを入力して押してください <入力> 続ける。

「Y」を押してから、 を押します <入力> Let's Encrypt の「利用規約」に同意します。

  コンピュータのスクリーンショット 自動生成された説明

「Y」を押してから、 を押します <入力>

  自動的に生成されたコンピューター プログラムの説明のスクリーンショット

Let’s Encrypt SSL 証明書が発行されています。完了するまでにしばらく時間がかかります。

  コンピューターエラーのスクリーンショット 自動的に生成された説明

この時点で、Let’s Encrypt SSL 証明書が発行されます。 SSL証明書ファイルが保存されているフルパスが表示されます。 SSL 証明書の有効期限も表示されます。

  コンピュータのスクリーンショット 自動生成された説明

Certbot を使用した Let's Encrypt SSL 証明書の一覧表示

次のコマンドを使用して、Certbot を使用して生成したすべての Let’s Encrypt SSL 証明書を一覧表示できます。

$ 須藤 証明書ボット証明書

ご覧のとおり、「nodekite.com」ドメイン用に生成された Let’s Encrypt SSL 証明書がリストされています。 [1] 。 「nodekite.com」に対してワイルドカードSSL証明書が発行されます。 [2] ドメイン名。証明書の有効期限は 2024-03-20 (89 日間有効) [3] 。証明書と秘密キーのパスもここにリストされます [4]

  コンピュータのスクリーンショット 自動生成された説明

Certbot は、ドメイン用に生成したすべての SSL 証明書を、それぞれのフォルダーの「/etc/letsencrypt/live」ディレクトリに保存します。

$ 須藤 ls -Rlh / / letsencrypt / ライブ /

  コンピュータのスクリーンショット 自動生成された説明

Certbot を使用した Let’s Encrypt SSL 証明書の更新

Certbot は、CloudFlare DNS 検証を使用して生成したすべての Let’s Encrypt SSL 証明書を自動的に更新します。

Let’s Encrypt SSL 証明書の自動更新機能が機能するかどうかをテストするには、次のコマンドを実行します。

$ 須藤 証明書ボットの更新 --ドライラン

自動更新アクションは、生成した Let’s Encrypt SSL 証明書ごとにシミュレートされます。

  コンピュータのスクリーンショット 自動生成された説明

テストが成功すると、祝福​​されます。テストが成功した場合は、SSL 証明書が期限切れになる前に自動的に更新されることを意味します。他に何もする必要はありません。

  コンピュータのスクリーンショット 自動生成された説明

Certbot の自動更新機能が機能するには、コンピューター/サーバー上で「cerbot.timer」systemd タイマーが有効化され、アクティブになっている必要があります。

次のコマンドを使用して、「cerbot.timer」systemd タイマーが有効でアクティブであるかどうかを確認できます。

$ 須藤 systemctl ステータス certbot.timer

ご覧のとおり、「certbot.timer」systemd タイマーが有効になっています (起動時に自動的に開始されます)。 [1] そしてアクティブな [2] 。 Certbot は、わずか 11 分後に SSL 証明書を更新する必要があるかどうかを確認し (次のスクリーンショットによる)、期限切れが近づいている SSL 証明書を更新します。 [3]

  コンピュータのスクリーンショット 自動生成された説明

SSL 証明書の有効期限が近づいているかどうかを手動で確認し、期限切れの SSL 証明書を更新するには、次のコマンドを実行します。

$ 須藤 証明書ボットの更新

この例では、期限切れになる SSL 証明書はありません。したがって、Certbot は SSL 証明書を更新しようとしませんでした。

Certbot に特定のドメイン (*.nodekite.com としましょう) の SSL 証明書を強制的に更新するには、次のコマンドを実行します。

$ 須藤 証明書ボット証明書のみ --強制更新 -d * .nodekite.com

「1」を押して、 を押します。 <入力> 最初のオプションを選択します (CloudFlare DNS を使用した DNS 検証の場合)。

  コンピュータのスクリーンショット 自動生成された説明

SSL証明書を更新する必要があります。

結論

Certbot を使用した CloudFlare DNS 検証を使用して Let’s Encrypt SSL 証明書を取得するには、CloudFlare API トークンへのアクセスが必要です。この記事では、ドメインの CloudFlare API トークンを作成し、それをコンピューター/サーバーに安全に保存して、必要なときに Certbot でアクセスできるようにする方法を説明しました。また、Certbot と Certbot CloudFlare DNS プラグインを最も一般的な Linux ディストリビューションにインストールする方法も説明しました。 Certbot と CloudFlare DNS 検証を使用して、Let’s Encrypt ワイルドカード SSL 証明書と単一ドメインの SSL 証明書を生成する方法を説明しました。最後に、Certbot を使用して Let’s Encrypt SSL 証明書を自動および手動で更新する方法を説明しました。

参考文献: