序文 以前、Docker の 2375 Remote API を有効にしていました。会社のセキュリティ部門から、認証を有効にする必要があるというリクエストを受け取りました。公式ドキュメントを調べました。 Dockerデーモンソケットを保護する TLSを有効にする Dockerサーバー上でCA秘密鍵と公開鍵を生成する $ openssl genrsa -aes256 -out ca-key.pem 4096 RSA秘密鍵の生成、4096ビット長の係数 .............................................................................................................................................................................................................................................++ ........++ eは65537(0x10001) ca-key.pem のパスフレーズを入力してください: 検証中 - ca-key.pem のパスフレーズを入力してください: $ openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem ca-key.pem のパスフレーズを入力してください: 組み込まれる情報を入力するよう求められます 証明書リクエストに追加します。 これから入力するのは、識別名または DN と呼ばれるものです。 フィールドはたくさんあるが、一部は空白のままにしておくこともできる いくつかのフィールドにはデフォルト値があります。 「.」を入力すると、フィールドは空白のままになります。 ----- 国名(2文字コード)[AU]: 州または県名(フルネーム)[Some-State]:クイーンズランド 地域名(例:都市) []:ブリスベン 組織名(例:会社)[Internet Widgits Pty Ltd]:Docker Inc 組織単位名(例:セクション)[]:営業 共通名(例:サーバーのFQDNまたはあなたの名前)[]:$HOST メールアドレス []:[email protected] CAを取得したら、サーバーキーと証明書署名要求(CSR)を作成できます。
$ openssl genrsa -out サーバーキー.pem 4096 RSA秘密鍵の生成、4096ビット長の係数 ...............................................................................................++ ................................................................................................................................++ eは65537(0x10001) $ openssl req -subj "/CN=$HOST" -sha256 -new -key server-key.pem -out server.csr 次に、CA を使用して公開キーに署名します。 $ echo subjectAltName = DNS:$HOST,IP:$HOST:127.0.0.1 >> extfile.cnf $ echo 拡張キー使用法 = serverAuth >> extfile.cnf キーを生成: $ openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem \ -CAcreateserial -out server-cert.pem -extfile extfile.cnf 署名OK 件名=/CN=your.host.com CA秘密鍵の取得 ca-key.pem のパスフレーズを入力してください: クライアント キーと証明書署名要求を作成します。 $ openssl genrsa -out キー.pem 4096 RSA秘密鍵の生成、4096ビット長の係数 ...............................................................++ ................++ eは65537(0x10001) $ openssl req -subj '/CN=client' -new -key key.pem -out client.csr extfile.cnf を変更します。 echo 拡張キー使用法 = clientAuth > extfile-client.cnf 署名秘密鍵を生成します: $ openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem \ -CAcreateserial -out cert.pem -extfile extfile-client.cnf 署名OK 件名=/CN=クライアント CA秘密鍵の取得 ca-key.pem のパスフレーズを入力してください: Dockerサービスを停止し、Dockerサービスファイルを変更します。 [ユニット] 説明=Docker アプリケーション コンテナ エンジン ドキュメント=http://docs.docker.io [サービス] 環境="PATH=/opt/kube/bin:/bin:/sbin:/usr/bin:/usr/sbin" ExecStart=/opt/kube/bin/dockerd --tlsverify --tlscacert=/root/docker/ca.pem --tlscert=/root/docker/server-cert.pem --tlskey=/root/docker/server-key.pem -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375 ExecStartPost=/sbin/iptables -I FORWARD -s 0.0.0.0/0 -j ACCEPT ExecReload=/bin/kill -s HUP $MAINPID 再起動=失敗時 再起動秒数=5 LimitNOFILE=無限大 LimitNPROC=無限大 LimitCORE=無限大 委任=はい キルモード=プロセス [インストール] WantedBy=マルチユーザー.ターゲット その後、サービスを再起動します systemctlデーモンリロード systemctl docker.service を再起動します。 再起動後にサービスの状態を確認します。 systemctl ステータス docker.service ● docker.service - Docker アプリケーション コンテナ エンジン ロード済み: ロード済み (/etc/systemd/system/docker.service; 有効; ベンダープリセット: 有効) アクティブ: 2019-08-08 19:22:26 CST 木曜日からアクティブ (実行中)、1 分前 すでに発効しています。 証明書を使用して接続します。 ca.pem、cert.pem、key.pemの3つのファイルをクライアントにコピーします。 docker --tlsverify --tlscacert=ca.pem --tlscert=cert.pem --tlskey=key.pem -H=$HOST:2375 バージョンが接続できます docker-java TLS を有効にする このプロジェクトでは、docker の Java クライアント docker-java を使用して docker を呼び出します。TLS をサポートするには、クライアントの作成時に TLS 設定を追加する必要があります。 まず、ca.pem cert.pem key.pem の 3 つのファイルをローカルの場所にコピーします (例: E:\\docker\\")。 次に、DefaultDockerClientConfig で withDockerTlsVerify を true に設定し、certpath をコピーしたディレクトリに設定します。 DefaultDockerClientConfig.Builder ビルダー = デフォルトDockerClientConfig.createDefaultConfigBuilder() .withDockerHost("tcp://" + サーバー + ":2375") .withApiVersion("1.30"); コンテナ構成のDockerTlsVerify()を実行すると、 ビルダー = builder.withDockerTlsVerify(true) .withDockerCertPath("E:\\docker\\"); } DockerClientBuilder.getInstance(builder.build()).build() を返します。 大きな仕事は終わりました。 要約する 以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。 以下もご興味があるかもしれません:
|
テーブルを美しくするために、セルごとに異なる境界線の色を設定できます。基本的な構文<TD 境界...
私はプロジェクトを実行するために react を使い始めたばかりで、非常に未熟で完全な初心者です。私...
今日は春節の金貨の赤い封筒のアクティビティを作りました。なかなか良い出来だと思います。皆さんと共有し...
目次ブラウザカーネルJavaScript エンジンV8エンジンJavaScript がどのように実行...
背景<br />フロントエンドを担当する学生は、ページが多すぎると煩雑になるため、開発プ...
この記事では主に、ElementUI テーブルのヘッダー アイコンにフローティング プロンプトを追加...
JavaScript は多くの素晴らしい機能を備えています。この記事では、作業効率の向上とコードのデ...
1. 公式サイトからダウンロード: https://dev.mysql.com/downloads/...
この記事では、MySQL 8.0.15の詳細なインストールと使用方法のチュートリアルを参考までに紹介...
Nginxはバージョン情報を隠すだけでなく、カスタムWebサーバー情報もサポートします。まずは最終的...
最初はブラウザのスクロールバーのスタイルを変更して効果を実現したいと思っていましたが、情報を調べてみ...
目次1. MySQL論理アーキテクチャの概要2. コネクタクエリキャッシュ4. パーサー5. オプテ...
目次1 バージョンと計画1.1 バージョン情報: 1.2 クラスター計画2. 展開1. ファイアウォ...
暗い背景スタイルのページ デザインは非常に人気があり、シックでエレガント、そして非常にクリエイティブ...
単一のテーブルを削除する: tableName から columnName = value を削除し...