Let’s Encrypt DNS-01 チャレンジ (または DNS 検証) の仕組みの詳細については、「Let’s Encrypt DNS-01 チャレンジとは何か、および SSL 証明書を取得するためにそれを使用する方法」という記事を参照してください。
この記事では、Let’s Encrypt DNS 検証を使用して、Certbot と Certbot CloudFlare DNS プラグインを使用してドメイン名の SSL 証明書を取得する方法を説明します。
内容のトピック:
- CloudFlare DNS を使用したドメインの管理
- Ubuntu/Debian への Certbot および Certbot CloudFlare プラグインのインストール
- Certbot と Certbot CloudFlare プラグインを Fedora にインストールする
- RHEL/AlmaLinux/Rocky Linux/CentOS Stream への Certbot および Certbot CloudFlare プラグインのインストール
- Certbot と Certbot CloudFlare プラグインが正しくインストールされているかどうかを確認する
- CloudFlare APIトークンの生成
- CloudFlare API トークンをコンピュータ/サーバーに安全に保存する
- Certbot CloudFlare DNS 検証を使用した SSL 証明書の生成
- Certbot を使用した Let's Encrypt SSL 証明書の一覧表示
- Certbot を使用した Let’s Encrypt SSL 証明書の更新
- 結論
- 参考文献
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」ファイルに次の行を入力して押します。
「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 ノードキテ.comDNS の変更が世界中の一般的な DNS ネームサーバーに反映されるまでに時間がかかる場合は、Certbot の「–dns-cloudflare-propagation-秒」オプションを使用して、DNS 検証の前に Certbot が待機する秒数を設定できます。は発表された。
$ 須藤 証明書ボット証明書のみ --dns-クラウドフレア --dns-cloudflare-credentials ~ / .secrets / 証明書ボット / クラウドフレア.ini --dns-cloudflare-propagation-秒 60 -d * .nodekite.comCertbot コマンドを実行すると、電子メール アドレスを入力するように求められます。メールアドレスを入力して押してください <入力> 続ける。
「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 証明書を自動および手動で更新する方法を説明しました。