Cloudflare DNSプラグインでCertBotを使用してワイルドカードTLS/SSL証明書を暗号化してみましょう


情報がすでにインターネット上に存在しているにもかかわらず、私は時々このような投稿を作成します。 。 。 どこかに、明確さが欠けていたり、時代遅れであったり、ステップが抜けていたり、間違った情報が含まれていたりすることがよくあります。 これが、この記事が Technoogies に存在する理由です。私は、主に自分自身のために、必要なときにいつでも簡単に参照できるように、明確かつ簡潔な方法で記事を作成したかっただけです。 CertBot には、ほぼすべての環境に適合するプラグインが多数ありますが、このチュートリアルでは Cloudflare プラグインのみを使用します。 正直なところ、Cloudflare を使用していないのであれば、なぜ使用しないのでしょうか?

この記事のセクションは、さまざまなドキュメントから直接コピーされたものです。 本当に、これ以上どう言えばいいでしょうか? すべてを 1 か所にまとめているだけで、さらに明確になることを願っています。 AIスピンなし。 ここでは AI に関する記事は扱いません。

このモンスターの長さについて申し訳ありませんが、明確さは重要です。

Let's Encrypt – Technoogies が月間最優秀ユーザー賞を受賞

質問しすぎて、欲しかったものを手に入れたようです「今月の新規ユーザー」賞。 それはなんだか逆行しているように思えます。

CertBot 情報

CertBot の安定リリースのドキュメントは次の場所にあります。
https://eff-certbot.readthedocs.io/en/stable/using.html

スタンドアロンウェブルート are installed by default, but there are lot of plugins that will probably fit with your environment. We’re only going to use the Cloudflare plugin for this tutorial though.

CertBot は、次の 2 つのタスクを達成するのに役立ちます: (ドキュメントより)

  1. Obtaining a certificate: automatically performing the required authentication steps to prove that you control the domain(s), saving the certificate to /etc/letsencrypt/live/ and renewing it on a regular schedule.
  2. Optionally, installing that certificate to supported web servers (like Apache or nginx) and other kinds of servers. This is done by automatically modifying the configuration of your server in order to use the certificate.

The CertBot Commands:
https://eff-certbot.readthedocs.io/en/stable/using.html#certbot-command-line-options

CertBot プラグイン

The CertBot Snap stuff page: (This is the method you want)
CertBot Project (certbot-eff) published snaps in the Snap Store (snapcraft.io)

Snapcraft certbot plugins page, select cloudflare

The list at post time: (Linked to each plugin doc)

Docker 上の CertBot 用プラグイン

(CertBot can’t install certificates automatically with this method . . . At post time. Eventually . . . Maybe.)

CertBot’s Profile | Docker Hub

Snap を使用した CertBot およびプラグイン パッケージのインストール

Snap は CertBot が推奨する CertBot のインストール方法ですが、一部のサーバーでは Snap を使用できません。 ここでは、CertBot の Snap メソッドについてのみ説明します。これは、私が調査した唯一のメソッドであるためです。

このチュートリアルでは、ルート ホーム フォルダーからすべてを実行します。そのため、最初のステップは、bash または使用するシェルにログインすることです。 CertBot のドキュメントには、各プラットフォームとそのサポートされるシェル環境の詳細が記載されています。 。 。 どこかで一度見たことがあります。

適切なアップデートの知恵

すべてのパッケージをインストールする前に apt update を実行する必要があるのはなぜですか? パッケージ インデックス ファイルをソースから再同期します。 予防の知恵です。 ああ、賢明な方、これ以上何を言うことができますか。

SSH を使用して root としてシェルにログインします。

  1. はい、root としてログインします。
  2. を使用してルート ホームにいることを確認してください障害者コマンドラインで。
    それはあなたに示すはずです/根ファイルシステム内の場所として。 そうでない場合は、使用してくださいcd /ルートそしてもう一度確認してください障害者。 この場所から作業するのが一般的なので、そうします。
  3. 入力または貼り付けsudo aptアップデートEnter キーを押して実行します (すべてのコマンド ラインの実行は Enter キーを押すことで実行されます)。適切なアップデート各パッケージをインストールする前にインストールする必要があると言う人もいます。 ただし、パッケージのインデックスが完全にスポットであることを確認したい場合に備えて、インストールする前に実行しても問題はありません (メリー・ポピンズによる)。

スナップ デーモン (snapd) をインストールしますが、まず古いものを削除します。

Snap はデフォルトで Ubuntu にプリインストールされていますが、確認したい場合は、プロンプトで次のように実行できます。certbot –バージョン または スナップ - ヘルプスナップのヘルプダイアログを表示します。 プロンプトにバージョン番号またはヘルプ ダイアログが表示されれば、Snap がインストールされています。

certbot --バージョン

CertBot の削除と再インストール (CertBot ごと)

彼らがページに書いたとおりにここに載せておきます、https://certbot.eff.org/instructions?ws=other&os=ubuntufocal

これは Web サーバー タイプからのものです。その他」を選択しますが、そのページでインストール オプションのいずれかを選択できますが、この操作についてはすべて同じ手順が示されます。

certbot-auto およびすべての CertBot OS パッケージを削除します (ドキュメントから)

次のような OS パッケージ マネージャーを使用して CertBot パッケージがインストールされている場合aptDNF、または うーん、コマンド certBot を実行するときに、OS パッケージ マネージャーからのインストールではなくスナップが使用されるようにするために、CertBot スナップをインストールする前にそれらを削除する必要があります。 これを行うための正確なコマンドは OS によって異なりますが、一般的な例は次のとおりです。sudo apt-get 証明書ボットを削除するsudo dnf 証明書ボットを削除します、または sudo yum 証明書ボットを削除します.

apt と apt-get (短縮版)

適切な取得– パッケージの依存関係は自動インストールされません。 きめ細かい制御。
適切な– パッケージの依存関係もインストールされます。 使いやすい。 プログレスバー (これは素晴らしいですね)。
(それは簡単ではありませんか? それに、それに関する 1,000 ワードのブログ投稿を読む必要もありませんでした。)

sudo apt -y certbot を削除します sudo apt autoremove

Snap を使用して CertBot をインストールする

スナップコマンドをインストールする

CertBot をインストールするシステムのコマンド プロンプトでこのコマンドを実行します。これにより、Ubuntu パッケージ (この記事の時点ではバージョン 0.40.0) ではなく最新バージョンがインストールされ、Cloudflare トークン オプションでは機能しません。 これは、Certbot Snap のインストール前に上記の削除コマンドを実行する必要がある理由でもあります。

sudo apt update sudo snap install --classic certbot

スナップがロードされて実行されているかどうかを確認する

CertBot のパスが正しく更新されていることを確認するには、ログアウトして再度ログインするか、システムを再起動してください。そうしないと、次のようなメッセージが表示され、それを理解するのに多くの時間が無駄になります。 どうやって知っているのか聞いてください。 いいえ、やめてください。

root@esp1:~# certbot plugins -bash: /usr/bin/certbot: そのようなファイルまたはディレクトリはありません

再起動するか、ログアウトしてサーバーに戻りましたよね?
それでは、ロードされて動作していることをテストして確認したい場合は、「」をインストールして実行できます。こんにちは世界「スナップするか、ただ走るだけ」certbot –バージョン.

ハローワールドの例:

# sudo snap install hello-world hello-world 6.4 from Canonical✓ がインストールされました # hello-world Hello World!

CertBot Cloudflare プラグインをスナップでインストールする (PUN)

何? それが来るのを見ていなかったのですか?

注: Cloudflare トークン キャビアト

この CertBot Cloudflare Snap パッケージのインストールは、私がこれまでに使用した中で Cloudflare トークンを機能させることができた唯一の方法です。 必要に応じて、Python のインストールを試してみてください。 Snap は CertBot が選択するインストール方法です。
へのサポートcertbot-dns-cloudflareは 1.2.0 バージョンで追加されたため、そのバージョン以降を必ず入手する必要があります。

別の DNS プラグインが必要な場合は、このサイトにアクセスしてください。 クリック '最新/安定した' インストール情報のボタン、または 'インストール' ボタンがありますが、前者ではオプションを細かく選択できます。

Snap Store を使用して Ubuntu に certbot-dns-cloudflare をインストールする | スナップクラフト

Snapcraft certbot アーキテクチャを選択してインストール 1

これらのコマンドは、CertBot Cloudfalre DNS プラグインをインストールし、適切な設定を保証します。

各行を一度に 1 行ずつ実行します。

sudo apt update snap set certbot trust-plugin-with-root=ok sudo ln -s /snap/bin/certbot /usr/bin/certbot snap install certbot-dns-cloudflare snap connect certbot:plugin certbot-dns-cloudflare
インストールされているプラ​​グインを確認する

今すぐ実行してください証明書ボットプラグインことを確認するためにcertbot-dns-cloudflareプラグインが正しくインストールされています。 インストールしたプラグインによっては次のようになりますが、このリストには Cloudflare プラグインが表示されるはずです。

# certbot plugins
Saving debug log to /var/log/letsencrypt/letsencrypt.log
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* apache
Description: Apache Web Server plugin
Interfaces: Authenticator, Installer, Plugin
Entry point: EntryPoint(name='apache',
value='certbot_apache._internal.entrypoint:ENTRYPOINT', group='certbot.plugins')
* dns-cloudflare
Description: Obtain certificates using a DNS TXT record (if you are using
Cloudflare for DNS).
Interfaces: Authenticator, Plugin
Entry point: EntryPoint(name='dns-cloudflare',
value='certbot_dns_cloudflare._internal.dns_cloudflare:Authenticator',
group='certbot.plugins')
* nginx
Description: Nginx Web Server plugin
Interfaces: Authenticator, Installer, Plugin
Entry point: EntryPoint(name='nginx',
value='certbot_nginx._internal.configurator:NginxConfigurator',
group='certbot.plugins')
* standalone
Description: Runs an HTTP server locally which serves the necessary validation
files under the /.well-known/acme-challenge/ request path. Suitable if there is
no HTTP server already running. HTTP challenge only (wildcards not supported).
Interfaces: Authenticator, Plugin
Entry point: EntryPoint(name='standalone',
value='certbot._internal.plugins.standalone:Authenticator',
group='certbot.plugins')
* webroot
Description: Saves the necessary validation files to a
.well-known/acme-challenge/ directory within the nominated webroot path. A
seperate HTTP server must be running and serving files from the webroot path.
HTTP challenge only (wildcards not supported).
Interfaces: Authenticator, Plugin
Entry point: EntryPoint(name='webroot',
value='certbot._internal.plugins.webroot:Authenticator',
group='certbot.plugins')
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

DNS のみの Cloudflare API トークンを作成する

  1. Cloudflareアカウントにログインし、任意のドメインに移動します。 どちらであるかは問題ではありません。右下のメニュー項目がメイン ダッシュボードのどこにもないというだけです。 'を持っている必要があります概要' セクションを左側のメニューから選択します。
  2. APIトークンを取得する
    ページの一番下に向かって下にスクロールします。
    左側の「」をクリックしますAPIトークンを取得する'。
    https://dash.cloudflare.com/profile/api-tokens

    API トークン 2 を取得する

  3. トークンの作成
    クリックしてください 'トークンの作成' ボタン、右上。 一番上のテンプレート「」を選択します。ゾーンDNSの編集' の右側にあるボタンをクリックします。

    CloudflareのユーザーAPIトークンのページ。 作成されたユーザー API トークンをリストします。 トークン作成ボタンは右上にあります。

  4. 許可
    '権限' セクションはテンプレートを介してすでに適切に設定されています。

    ゾーンのリソース
    「」に進みますゾーンのリソース' セクションを参照し、' に設定する必要があります。含めます' 最初のフィールドにこれもテンプレートのデフォルトです。

    指定されたゾーン
    2 番目のフィールドは「」に設定されます特定ゾーン』をクリックし、3 番目のフィールドで SSL 証明書が必要なドメイン名を選択します。 「」をクリックして、証明書が必要な DNS ゾーンの数だけこれを繰り返します。+さらに追加' リンク。

    クライアントIPアドレスフィルタリング
    何も選択せずに「」のままにすると、アイテムを選択…' その後、IP フィルタリングなしでトークンの作成に進むことができますが、私があなただったら、そうはしません。 追加のセキュリティは不可欠です。 誰かがトークンを取得した場合、フィルター内のシステム IP のいずれかにアクセスできない限り、そのトークンを使用することはできません。

    '入っています' は通常、このトークンに必要なものです。 他のオプション「入っていない' を指定すると、右側のフィールドに入力された IP アドレスへのアクセスが除外されます。 これらの証明書リクエストの送信元となる IP アドレスを入力します。 アドレスを入力すると、フィールドの下にアドレスを含むクリック可能なバルーンが表示されます。 アドレスをフィールドに追加するには、これをクリックする必要があります。 ここで必要な数のアドレスを追加できます。 一度に 1 つのアドレスのみを受け入れます。 (残念)

    ゾーンDNS設定用のCloudflare APIトークン。

  5. すべて完了?
    クリック '概要に進む'。
    すべてが正しく見えますか?
    クリック 'トークンの作成'。
  6. トークンをコピー
    これで、トークンをコピーして、命をかけて守ることができます。
    また、プロンプトからカール スクリプトを実行してトークンをテストし、トークンが有効であることを確認することをお勧めします。
    結果は次のようになります。
    {“結果”:{“id”:”1234567890abcdefghijklmnopqrstuvwxyz”,”ステータス”:”アクティブ”},”成功”:true,”エラー”:[],”メッセージ”:[{”コード”:10000,”メッセージ”:”この API トークンは有効でアクティブです”,”type”:null}]}

Cloudflareプラグインの設定

Cloudflare.ini 用の安全なフォルダーを作成する

次に、クラウドフレア.iniファイルはルート ディレクトリ (古い学校の場合) またはフォルダーにあります。 パスは次のようになります/root/.secrets/cloudflare.ini. If you are logged in as root, the touch command without sudo should set the file permissions already for root only, being 0700. Using sudo touch sets permissions to 0644. We should make it more secure and change that with chmod to 0400. We also need to change the permissions on .secret to 0700. Most situations will work with the file permission set to 0400, but if not, try 0600 instead.

Run each command one at a time.

mkdir /root/.secrets
touch /root/.secrets/cloudflare.ini
sudo chmod 0700 /root/.secrets/
sudo chmod 0400 /root/.secrets/cloudflare.ini

Use nano or vim, or whatever text editor you prefer and add your token to the cloudflare.ini file.

Cloudflare.ini を編集する

nano /root/.secrets/cloudflare.ini
# Cloudflare Token
dns_cloudflare_api_token = "1234567890abcdefghijklmnopqrstuvwxyz"

CertBot cli.ini 構成

The CertBot cli.ini file is located in /etc/letsencrypt/cli.ini unless you haven’t made any requests yet. If that is the case, then use the ‘touch' 指示。

/etc/letsencrypt/cli.ini にタッチします
nano /etc/letsencrypt/cli.ini

デフォルトで Cloudflare プラグインを使用するようにこれを編集します。

のパスを追加しますクラウドフレア.ini編集したばかりのファイル。

dns-cloudflare-credentials = /root/.secrets/cloudflare.ini

この方法で証明書を取得する場合は、Cloudflare を認証システムとして追加することもできますが、別の認証システムを使用する必要がある場合は、これをコメントアウトするか、使用したい認証システムに変更する必要があります。つまり、Nginx、Webroot、Apache などです。

その他の cli.ini オプション

認証者 = dns-cloudflare

または
CertBot Cloudflare プラグインを使用しない場合。 等号の後に選択したプラグインを挿入するだけです。

認証者 = ウェブルート

私の中でcli.iniこれらの行を使用して CertBot を実行します。 これらをcli.ini, この情報を CertBot コマンド文字列に含める必要はありません。

dns-cloudflare-credentials = /root/.secrets/cloudflare.iniauthenticator = dns-cloudflare dns-cloudflare-propagation-seconds = 120 ## 60 は時々失敗します。 優先チャレンジ = dns-01

デフォルトの滞留時間の 10 秒では、Let's Encrypt で TXT レコードの伝播を検証するには不十分であることがわかったので、ここでは 120 秒に設定しました。 60も試しましたが、これも頻繁に失敗します。 も使用できます–dn-cloudflare-propagation 120CertBot コマンド文字列に等号は含まれていません。

予行テストの時間です

これらの CertBot の例では、証明書を取得するだけであり、certonly オプションを使用して証明書をインストールしません。 証明書をインストールしたい場合は、次を使用します。証明書ボットそれなし確実にそしてあなたの環境のためのプラグイン。 プラグインの操作を組み合わせることができます。 これを行う方法についてはドキュメントを参照してください。 Cloudflare プラグインは証明書もインストールしません。 取得後も手動で管理する必要があります。

注: (ドキュメントより)

–ドライラン
Let's Encrypt ステージング サーバーに対してテスト実行を実行し、テスト (無効な) 証明書を取得しますが、ディスクには保存しません。 これは ' とのみ使用できます。確実に'と'更新する' サブコマンド。 Web サーバーのリロードをトリガーして、構成ファイルを一時的に変更およびロールバックする場合があります。
–プリフック–ポストフックコマンドはデフォルトで実行されます。–デプロイフックコマンドは、有効にしない限り実行されません。–run-deploy-hooks.
テストサーバーは次のようにオーバーライドされる可能性があります。-サーバ。 (デフォルト: False

あなたの中に指示がなければ、cli.iniCertBot コマンド文字列は次のようにする必要があります。

certbot certonly --dry-run --dns-cloudflare --dns-cloudflare-propagation-seconds 120 --dns-cloudflare-credentials /root/.secrets/cloudflare.ini -d example.com,*.example.com - -preferred-challenges dns-01


しかし、ディレクティブが存在する場合、cli.ini必要なのはこれだけです。

certbot certonly --dry-run -d example.com,*.example.com


成功した場合、結果は次のようになります。

root@esp1:~# certbot certonly --dry-run -d example.com,*.example.com /var/log/letsencrypt/letsencrypt.log へのデバッグ ログの保存 example.com およびその他の 3 つのドメインの証明書要求のシミュレーションDNS の変更が反映されるまで 120 秒待機しています。ドライ ランは成功しました。

「」を使用して更新リクエストをテストすることもできます。更新する' 指示。

certbot 更新 --dry-run -d example.com、*.example.com

本当の取引の時が来ました!

を削除するだけです–ドライランあなたのコマンドからそのように。

certbot certonly -d example.com,*.example.com

注意 – 複数のドメインリクエスト

複数のドメインリクエストを一緒に文字列化すると、-d、 好き-d example.com、*.example.com -d example.app、*example.app個別の証明書は作成されませんが、すべてのドメインが同じ証明書に追加されます。 このようにカンマを入れてドメインをリストとして区切るのと同じです。-d example.com、*.example.com、example.app、*example.app.
要点: ドメインごとに個別の証明書が必要な場合は、単一の証明書要求でそれぞれを実行することで、それらを個別に実行します。

結果

これで証明書が作成され、自動更新によって証明書が最新の状態に保たれます。 。 。 願っています。

結果ダイアログは次のようになります。

root@esp1:~# certbot certonly -d example.com,*.example.com -d example.com,*.example.com デバッグ ログを /var/log/letsencrypt/letsencrypt.log に保存します。 たとえば、証明書を要求します。 com とさらに 3 つのドメイン DNS の変更が反映されるまで 120 秒待機しています 証明書を正常に受信しました。 証明書の保存場所: /etc/letsencrypt/live/example.com/fullchain.pem キーの保存場所: /etc/letsencrypt/live/example.com/privkey.pem この証明書の有効期限は 2024 年 3 月 28 日です。 これらのファイルは、証明書が更新されるときに更新されます。 Certbot は、この証明書をバックグラウンドで自動的に更新するスケジュールされたタスクを設定しました。

証明書を確認してください

使用 証明書ボット証明書コマンドプロンプトで。

# sudo certbot 証明書 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 次の証明書が見つかりました: 証明書名前: example.com シリアル番号: 459d220f63a0c2377c76aa47b7218e564cb キーの種類: ECDSA ドメイン: example.com *.example.com 有効期限: 2024-03-28 01:20:56+00:00 (有効: 89 日) 証明書のパス: / etc/letsencrypt/live/example.com/fullchain.pem 秘密鍵パス: /etc/letsencrypt/live/example.com/privkey.pem - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

更新能力をチェックしてみよう

これを行うのはcertbot 更新 - ドライランそして結果はこう言うはずです。

# sudo certbot renew --dry-run - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 処理中/etc/letsencrypt/renewal/example.com.conf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - example.com とさらに 3 つのドメインの既存の証明書の更新をシミュレートしています DNS の変更が反映されるまで 120 秒待機しています - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - おめでとうございます。シミュレートされた更新はすべて成功しました: /etc/letsencrypt/live/example.com/fullchain.pem (成功) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

それで?

CertBot や Cloudflare DNS プラグインをインストールするには、pip などの他の方法もありますが、現時点では Snap パッケージが最も簡単で、最もよくメンテナンスされています。 また、更新が最も簡単です。

エラーがある場合は、デフォルトで /var/log/letsencrypt/letsencrypt.log に記録されます。 私の記憶によれば、デフォルトでは最大 1000 行または KB が保存されますが、いずれにしても、そこに問題の詳細が表示されます。 デバッグ方法については説明しませんが、その方法がわかったらまた別の機会に書くかもしれません(笑)。

(Visited 683 times, 1 visits today)

レビューを残します

免責事項

Technoogies.com 提供された情報が正しいことを確認するためにあらゆる努力をしましたが、アドバイスではありません。 Technoogiesは、誤りや脱落について一切の責任を負いません。 技術の作者は、サードパーティのサイトを保証しません。 ご自身の責任でサードパーティのサイトにアクセスしてください。 Technoogiesは、ベンダーやサードパーティと直接提携していません。 このウェブサイトは、分析と基本的なウェブサイト機能のためにのみクッキーを使用しています。 Technoogiesは、このサイトに表示されているデータにアクセスすることから生じる可能性のあるいかなる責任も負いません。 内部ページへのリンクは、Technoogiesのコンテンツを宣伝します。 この記事は法律上の助言を構成するものではありません。

所属の開示

Technoogies.com と提携しています グーグルアマゾン、およびその他の広告主。 このサイトを運営するにはお金がかかり、広告でそれ自体を維持できない場合は、さようならになります。 あなたが興味を持っている広告を後援することでそれが起こらないように私を助けてください。

知識の技術的ナゲット
上へスクロール