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により接続が短くなる

推薦する

MySQL は重複データを削除して最小の ID ソリューションを維持します

オンラインで検索して重複データを削除し、ID が最小のデータだけを残します。方法は次のとおりです。 ...

Mac OS に MySQL 5.7.20 をインストールするための詳細なグラフィックとテキストの説明

Mac OS X で TAR.GZ から MySQL 5.7 をインストールする MySQL 5.6...

XHTML 入門チュートリアル: リストタグの使用

リストは、類似または関連する一連の項目をリストするために使用されます。順序なしリスト(箇条書きリスト...

MySQL/MariaDB でピボット テーブルを実装する方法のサンプル コード

前回の記事では、Oracle でピボット テーブルを実装するいくつかの方法を紹介しました。今日は、同...

JavaScript でイベントのバブリングを防ぐ方法

注意すべき点は、イベントバブリング自体の特性上、メリットだけでなくデメリットも生じるということです。...

Docker swarm の簡単なチュートリアル

3つの仮想マシン132、133、134を群がらせる1. クラスターを初期化し、自分自身をクラスターに...

ウェブデザインにおけるテキスト入力ボックスのパラメータの説明

<br />一般的なゲストブック、フォーラムなどでは、テキスト入力ボックスが使われていま...

Ubuntu 16.04 に Docker と nvidia-docker をインストールするための詳細なチュートリアル

目次DockerのインストールNvidia-docker のインストールDockerのインストール1...

js の関数の長さはどれくらいですか?

目次序文なぜいくらですか?パラメータの数デフォルトパラメータ残りのパラメータ要約する序文今日は関数の...

Linux で測位バックグラウンド サービスが時々クラッシュする問題の解決方法

問題の説明最近のバックグラウンドサービスでは、特定の命令の要求データをディスクに保存する新しい機能が...

div タグ内の要素の margin-top が無効である場合の解決策

タイトル通りです。その質問は非常に奇妙です。要素の親タグはdivで、幅や高さなどの属性は設定されてい...

DockerでGDBを使用するときにブレークポイントを入力できない問題を解決する

質問docker で gdb を実行すると、ブレークポイントに到達しますが、ブレークポイントに入るこ...

LinuxでTomcatのポート番号を変更する方法

ここには複数の Tomcat があります。それらを同時に使用する場合は、ポート番号を別の番号に変更す...

Linux 編集の開始、停止、再起動の Springboot jar パッケージ スクリプトの例

序文springboot設定ファイルでは、設定ファイルの名前には独自の意味と用途があります。 dev...

MySQL 8.0.19 インストール詳細チュートリアル (Windows 64 ビット)

目次MySQLを初期化するMySQL サービスをインストール + MySQL サービスを開始MySQ...