Docker で Let's Encrypt から永久無料 SSL 証明書を取得する方法

Docker で Let's Encrypt から永久無料 SSL 証明書を取得する方法

1. 原因

公式の cerbot は面倒すぎます。野生の成長よりもさらに悪い acme.sh の使用は推奨されません。ここでは、Docker で cerbot を実行して、Let's Encrypt から永久無料 SSL 証明書を取得する方法を紹介します。

2. モデルの選択

cerbot 証明書は日付を自動的に更新しませんが、acme.sh にはこの機能があり、期限切れのドメイン名を自動的に検出し、毎日午前 0 時に更新します。

cerbot を実行するために docker を選択すると、サーバー内の構成と無意味なプログラムを最小限に抑えて管理が容易になります。例えば、Let's Encryptに必要なPython 2.7、git、pipをホストマシンにインストールする必要はなく、コンテナが自動的に構成します。

オリジナル記事 https://github.com/acmesh-official/acme.sh/wiki/Run-acme.sh-in-docker

3. イメージをプルする

$ docker pull neilpang/acme.sh

docker コマンドを DNS モードで実行する

$ docker run --rm -it \
 -v "$(pwd)/out":/acme.sh \
 -e Ali_Key="xxxxxx" \
 -e Ali_Secret="xxxx" \
 neilpang/acme.sh --issue --dns dns_ali -d domain.cn -d *.domain.cn

成功すると、証明書は out フォルダに保存されます。上記の最初の行「$(pwd)/out」を保存先のパスに変更して、パスを指定することもできます。

4. 注記

--dns dns_ali

ドメイン名の DNS モードに応じて選択する必要があります。明らかに、これは Alibaba です。最初の2つの設定はAli_KeyとAli_Secretです

Ali_Key、Ali_Secret

Alibaba Cloudバックエンドから取得する必要がある

ドメイン名の DNS モードがわからない場合は、https://github.com/acmesh-official/acme.sh/wiki/dnsapi で確認できます。

ドメイン名のDNSモードと関連設定を取得する方法については、ドメイン名のカスタマーサービスに直接お問い合わせください。

テンセントを例に挙げましょう

$ docker run --rm -it \
 -v "$(pwd)/out":/acme.sh \
 -e DP_Id="xxxxxx" \
 -e DP_キー="xxxx" \
 neilpang/acme.sh --issue --dns dns_dp -d domain.cn -d *.domain.cn

テンセントがDNSPodを買収したので、dns_dpになります

最初はTX_Id、TX_Key、dns_txなどだと思いました。

いろいろ調べてみたところ、Alibaba サーバーは正常に動作しているものの、手順に問題がないことがわかりました。

そこで私は会社にドメイン名のアカウントを取得するよう依頼し、その後テンセントのカスタマーサービスに問い合わせてこの件について調べてもらいました。

もちろん、これはテンセントとは何の関係もありません。私を騙した会社に責任があるのです。

私はこれとは何の関係もありません

5. コマンド

docker run --rm のコマンドは誰でも知っています。実行したら終了するだけです。これにより、ハンマーが実行され、ssh 証明書が自動的に更新されます。

方法1

docker run --rmは使用せず、docker runのみを使用してください。

利点はシンプルであることです。欠点は、この目的専用のコンテナが使用されるため、リソースが無駄になることです。

方法2

スケジュールされたタスクはdocker run --rmを実行し、元の例は次のとおりです。

#cronジョブを実行する
docker run --rm -it \
 -v "$(pwd)/out":/acme.sh \
 --net=ホスト\
 neilpang/acme.sh --cron

実は、--cron は Linux の crontab パラメータであり、具体的な使い方は面倒ではありません。

crontabを使いたい場合はcrontabを使用してください

気に入らない場合は、ブログの後半を読んでください。

方法3

これをdockerデーモンに結び付けます。結局のところ、デーモンは実行されている必要があるため、リソースの無駄にはなりません。

これはacme.shに推奨されるアプローチです

元のテキストと同じ例

$ docker run --rm -itd \
 -v "$(pwd)/out":/acme.sh \
 --net=ホスト\
 --name=acme.sh \
 neilpang/acme.sh デーモン

6. 最終結果

$ docker run --rm -itd \
 -v "$(pwd)/out":/acme.sh \
 -e DP_Id="xxxxxx" \
 -e DP_キー="xxxx" \
 neilpang/acme.sh --issue --dns dns_dp -d domain.cn -d *.domain.cn デーモン

Docker で Let's Encrypt から永久無料 SSL 証明書を取得する方法についての記事はこれで終わりです。Docker で Let's Encrypt から永久無料 SSL 証明書を取得する方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • ルート権限なしでログインするためのDockerソリューション
  • Dockerでmysqlのルートパスワードを変更する方法
  • Docker を使用してコンテナ内のルート パスワードを変更する方法
  • Dockerコンテナでルート権限を取得する方法
  • docker cp ファイルをコピーしてコンテナに入る
  • Dockerはコンテナに入るためにルートを使用する
  • Dockerコンテナにホストディレクトリへの書き込み権限がない場合の解決策
  • Dockerに証明書を追加する方法

<<:  jQueryは画像の強調表示を実現します

>>:  MySQLの不合理なMaxIdleConnsにより接続が短くなる

推薦する

Navicat For MySQL の使い方に関する簡単なチュートリアル

推薦する: Navicat for MySQL 15 登録とアクティベーションの詳細なチュートリアル...

MySQLトランザクションとSpring分離レベルの実装原理の詳細な説明

1. トランザクションはACID特性を持つ原子性: トランザクションは、トランザクションによって分割...

JavaScript BOMの構成と一般的なイベントの詳細な説明

目次1. 部品2. BOMの構成2. ウィンドウオブジェクトの共通イベント1. ウィンドウ読み込みイ...

MySQL最新バージョン8.0.17解凍版インストールチュートリアル

個人的にはインストール版よりも解凍版の方がインストールしやすいと思います。早速、解凍版のインストール...

Vue.jsは画像切り替え機能を実装する

この記事では、画像切り替え機能を実装するためのVue.jsの具体的なコードを参考までに共有します。具...

モバイルデバイスにおける適応レイアウトの問題に関する簡単な説明 (レスポンシブ、rem/em、Js ダイナミクス)

3G の普及により、携帯電話を使ってインターネットにアクセスする人が増えています。モバイル デバイ...

nacos が mysql に接続できない場合の解決策

理由nacos の pom が依存する mysql バージョンが、mysql バージョンと一致してい...

Docker で php-nginx-alpine イメージをゼロから構築する方法

これまでにも Docker 環境でいくつかのプロジェクトを実行したことはありますが、まだイメージをよ...

Expressはログイン認証を実装

この記事では、ログイン認証を実装するためのExpressの具体的なコードを例として紹介します。具体的...

Linux で at および cron スケジュールタスクをカスタマイズする方法

Linux システムには 2 種類のスケジュールされたタスクがあります。1 つは 1 回だけ実行され...

最小限のルートファイルシステムを構築するためにbusyboxを移植するための詳細な手順

Busybox: 小さなコマンドが詰まったスイスアーミーナイフ。ステップ1: ディレクトリ構造を作成...

Vue.js ドロップダウン コンポーネント付きテキストボックス

ドロップダウン付きのテキストボックスを使用すると、ユーザーはドロップダウン リストから入力を選択した...

elasticsearchを使用してインデックスデータを定期的に削除する

1. ESを使うこともあるリソースが限られている、またはビジネス上のニーズにより、最新の期間のデータ...

JSはオンラインでのアナウンスのスクロール効果を実現します

この記事では、オンラインアナウンスのスクロール効果を実現するためのJSの具体的なコードを参考までに共...

MySQL 5.7.24 圧縮パッケージのインストールと設定方法のグラフィックチュートリアル

この記事では、参考までにMySQL 5.7.24圧縮パッケージのインストールチュートリアルを紹介しま...