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 のルート パスワードを忘れる方法

推薦する

CentOS システムの rpm インストールと Nginx の設定

目次CentOS rpm のインストールと Nginx の設定導入rpm パッケージのインストールサ...

docker run後にコンテナがExited (0)と表示される問題を解決する

Centos7 上で openresty 用の Dockerfile を作成し、ビルドしました。 d...

Vueはパーセンテージバー効果を実現します

この記事では、パーセンテージバーを実現するためのVueの具体的なコードを参考までに共有します。具体的...

Linux のよく使うコマンドの使い方を詳しく解説(第 2 回)———— テキストエディタのコマンド vi/vim

vi/vim の紹介どちらもマルチモード エディターです。違いは、vim が vi のアップグレー...

dockerがredisを再起動するとmysqlデータが失われる問題を解決する

公式ドキュメント:したがって、mysql は次のように起動する必要があります。 docker run...

Linux システムで MySQL データベースの解凍バージョンをインストールして構成する方法

1. ファイルを現在のディレクトリに解凍しますコマンド: tar -zxvf mysql....ta...

アイデアを使用して Springboot 初期化サーバーを構築する際の問題分析

問題の説明最近、Springbootプロジェクトを構築していたところ、会社のネットワークケーブルに接...

MySQL 外部キー制約の一般的な操作の例 [表示、追加、変更、削除]

この記事では、例を使用して、MySQL 外部キー制約の一般的な操作について説明します。ご参考までに、...

MySQL の複合インデックスはどのように機能しますか?

目次背景複合インデックスを理解する左端一致原則フィールド順序の影響複合インデックスは単一のインデック...

MySQL 8.0.14 のインストールと設定方法のグラフィックチュートリアル (一般)

MySQLサービス8.0.14のインストール(一般)の参考までに、具体的な内容は次のとおりです。イ...

Kubernetes YAMLファイルの使用

目次01 YAMLファイルの概要YAML---キー値型YAML---リスト型02 K8Sにおけるマス...

docker を使用して Windows 10 Home バージョンで Laravel 開発環境を構築する方法の詳細なチュートリアル

オペレーティング·システム: Win10 ホームエディションDockerをインストールします:公式サ...

WeChatミニプログラムでのマップの正しい使用例

目次序文1. 準備2. 実際の戦闘2.1 ミニプログラムの権限を設定する2.2 カプセル化ツールの機...

トップに戻るボタンの例の JavaScript 実装

この記事では、トップに戻るボタンを実装するためのJavaScriptの具体的なコードを参考までに紹介...

Vue2は応答性を提供するためにprovide injectを実装しています

1. vue2 での従来の書き方 // 親コンポーネントは 'foo' を提供します...