TLS暗号化通信を使用してDockerにリモート接続する詳細な例

TLS暗号化通信を使用してDockerにリモート接続する詳細な例

デフォルトでは、Docker はネットワーク化されていない UNIX ソケット上で実行されます。オプションの通信には HTTP ソケットを使用することもできます。
ネットワーク経由で Docker に安全にアクセスする必要がある場合は、信頼できる CA 証明書を指すように Docker フラグを指定して TLS を有効にすることができます。
デーモン モードでは、この CA によって署名された証明書によって認証されたクライアントからの接続のみが許可されます。クライアント モードでは、その CA によって署名された証明書を持つサーバーにのみ接続します。

# CA証明書ディレクトリを作成 [root@localhost ~]# mkdir tls
[root@localhost ~]# cd tls/
# CA キーを作成 [root@localhost tls]# openssl genrsa -aes256 -out ca-key.pem 4096
RSA秘密鍵の生成、4096ビット長の係数
..............................................................................................++
.............................................................................................................................................................................................................++
eは65537(0x10001)
ca-key.pem のパスフレーズを入力してください:
検証中 - ca-key.pem のパスフレーズを入力してください:
# CA 証明書を作成 [root@localhost tls]# openssl req -new -x509 -days 1000 -key ca-key.pem -sha256 -subj "/CN=*" -out ca.pem
ca-key.pem のパスフレーズを入力してください:
[root@localhost tls]# ll
総投与量 8
-rw-r--r--. 1 ルート ルート 3326 12月3日 17:20 ca-key.pem
-rw-r--r--. 1 ルート ルート 1765 12月 3日 19:03 ca.pem
# サーバーの秘密鍵を作成 [root@localhost tls]# openssl genrsa -out server-key.pem 4096
RSA秘密鍵の生成、4096ビット長の係数
................................................................................++
...............++
eは65537(0x10001)
[root@localhost tls]# ll
総投与量 12
-rw-r--r--. 1 ルート ルート 3326 12月3日 17:20 ca-key.pem
-rw-r--r--. 1 ルート ルート 1765 12月 3日 19:03 ca.pem
-rw-r--r--. 1 ルート ルート 3243 12月3日 19:03 server-key.pem
# 秘密鍵に署名する [root@localhost tls]# openssl req -subj "/CN=*" -sha256 -new -key server-key.pem -out server.csr
[root@localhost tls]# ll
総投与量 16
-rw-r--r--. 1 ルート ルート 3326 12月3日 17:20 ca-key.pem
-rw-r--r--. 1 ルート ルート 1765 12月 3日 19:03 ca.pem
-rw-r--r--. 1 ルート ルート 1574 12月3日 19:04 server.csr
-rw-r--r--. 1 ルート ルート 3243 12月3日 19:03 server-key.pem
CA証明書と秘密鍵で署名し、上記で設定したパスワードを入力します [root@localhost tls]# openssl x509 -req -days 1000 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem
署名OK
件名=/CN=*
CA秘密鍵の取得
ca-key.pem のパスフレーズを入力してください:
#クライアントキーを生成 [root@localhost tls]# openssl genrsa -out key.pem 4096
RSA秘密鍵の生成、4096ビット長の係数
...................................................................................................................................................++
..................................++
eは65537(0x10001)
#クライアントに署名 [root@localhost tls]# openssl req -subj "/CN=client" -new -key key.pem -out client.csr
# 設定ファイル [root@localhost tls] を作成# echo ExtendedKeyUsage=clientAuth > extfile.cnf
#証明書に署名 [root@localhost tls]# openssl x509 -req -days 1000 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile extfile.cnf
署名OK
件名=/CN=クライアント
CA秘密鍵の取得
ca-key.pem のパスフレーズを入力してください:
[root@localhost tls]# ll
総投与量40
-rw-r--r--. 1 ルート ルート 3326 12月3日 17:20 ca-key.pem
-rw-r--r--. 1 ルート ルート 1765 12月 3日 19:03 ca.pem
-rw-r--r--。1 ルート ルート 17 12月 3 19:35 ca.srl
-rw-r--r--。1 ルート ルート 1696 12月 3日 19:35 cert.pem
-rw-r--r--. 1 ルート ルート 1582 12月 3日 19:29 client.csr
-rw-r--r--. 1 ルート ルート 28 12月3日 19:32 extfile.cnf
-rw-r--r--. 1 ルート ルート 3243 12月 3日 19:08 key.pem
-rw-r--r--. 1 ルート ルート 1647 12月 3日 19:08 server-cert.pem
-rw-r--r--. 1 ルート ルート 1574 12月3日 19:04 server.csr
-rw-r--r--. 1 ルート ルート 3243 12月3日 19:03 server-key.pem
# 不要なファイルを削除する [root@localhost tls]#

クライアントでのテスト

[root@client ~]# docker --tlsverify --tlscacert=ca.pem --tlscert=cert.pem --tlskey=key.pem -H tcp://master:2376 バージョン
クライアント: Docker Engine - コミュニティ
 バージョン: 19.03.13
 APIバージョン: 1.40
 Goバージョン: go1.13.15
 Gitコミット: 4484c46d9d
 作成日: 2020年9月16日水曜日 17:03:45
 OS/アーキテクチャ: linux/amd64
 実験的: 偽

サーバー: Docker Engine - コミュニティ
 エンジン:
 バージョン: 19.03.13
 API バージョン: 1.40 (最小バージョン 1.12)
 Goバージョン: go1.13.15
 Gitコミット: 4484c46d9d
 作成日: 2020年9月16日水曜日 17:02:21
 OS/アーキテクチャ: linux/amd64
 実験的: 偽
 コンテナ:
 バージョン: 1.3.9
 Gitコミット: ea765aba0d05254012b0b9e595e995c09186427f
 ランク:
 バージョン: 1.0.0-rc10
 Gitコミット: dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
 バージョン: 0.18.0
 Gitコミット: fec3683

以上で、TLS 暗号化通信を使用して Docker にリモート接続する方法についての説明は終了です。Docker への TLS 暗号化リモート接続の詳細については、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Dockerは安全なTLSリモート接続アクセスを可能にします
  • サーバーのDockerコンテナへのvscodeリモート接続を設定する方法
  • Docker は 2003 年の問題を解決するために MySQL リモート接続を導入しました
  • Docker で MySQL をインストールし、リモート接続を実装するチュートリアル
  • Docker はリモート接続のサンプルコードを実現するために MySQL をデプロイします
  • dockerデーモンのリモート接続設定の詳しい説明
  • Dockerリモート接続設定の実装例

<<:  Vueルーティングルーターの詳細な説明

>>:  Windows 10 システムで Mysql8.0.13 のルート パスワードを忘れる方法

推薦する

Ubuntu 20.04 aptの国内ソースを変更する方法

UPD 2020.2.26 現在、Ubuntu 20.04 LTSはまだリリースされていないため、チ...

vsftp を使用して Linux で FTP サーバーを構築する (パラメータの説明付き)

導入この章では、主に Linux で FTP サーバーを構築するプロセスを紹介します。習得すべき重要...

ネイティブjsはショッピングカートのロジックと機能を実装します

この記事の例では、ショッピングカートのロジックと機能を実装するためのjsの具体的なコードを共有してい...

Unicode の数学記号の概要

数学、物理学、および一部の科学技術分野で使用される特殊記号は多数あります。Unicode コードには...

Mysql での結合操作

結合の種類1. 内部結合: 結合関係を持つ 2 つのテーブル内のフィールドは、結合関係を満たすレコー...

MySQL 8 の新機能: 非表示のインデックス

背景インデックスは諸刃の剣です。クエリ速度は向上しますが、DML 操作も遅くなります。結局のところ、...

js タグ構文の使用法の詳細

目次1. ラベルステートメントの紹介2. ラベルステートメントの使用序文:日常の開発では、プログラム...

システム エラー 1067 のため、MySQL 5.6 解凍バージョン サービスを開始できません

今日午後ずっと私を悩ませたバグを記録する半月前から始めましょう。それから.................

mysqlはストアドプロシージャを使用してツリーノード取得メソッドを実装します。

図に示すように: テーブルデータこのようなツリーの場合、「Gao Yinrui」の下のすべてのノード...

要素に丸い境界線を追加する border-radius メソッド

border-radius:10px; /* すべての角は半径 10px で丸められます*/ bor...

ウェブページ制作時のコードコメントの書き方

<br />私の仕事で使用しているアノテーションの書き方の基準をまとめました。技術的な内...

Vue の基本 MVVM、テンプレート構文、データバインディング

目次1. Vueの概要Vue公式サイトMVVM アーキテクチャ パターンVue の紹介2. Vueを...

Zabbix を使用して Oracle データベースを監視する方法の詳細な説明

1. 概要Zabbix は非常に強力で、最も広く使用されているオープンソースの監視ソフトウェアです。...

Linux 上の MySQL 5.7 でパスワードを忘れる問題を解決する

1. 問題Linux 上の mysql5.7 のパスワードを忘れました2. 解決策• ステップ 1:...