序文 以前、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 をご愛顧いただき、誠にありがとうございます。 以下もご興味があるかもしれません:
|
序文Sass は CSS3 言語の拡張機能です。Sass を使用すると、より良いスタイルシートをより...
多くの人は、Scss を使用する瞬間からコンパイル方法を説明されてきました。したがって、コマンドのコ...
jsx/tsxファイルを直接作成できます今回のプロジェクト構成は以下のとおりです。 vueファイルで...
この記事では、花火効果を実現するためのJavaScriptの具体的なコードを参考までに紹介します。具...
スワップの紹介Linux のスワップ (スワップ パーティション) は、Windows の仮想メモリ...
1.0 Redis の永続性Redis はメモリ内データベースです。サーバー プロセスが終了すると、...
序文配列は特別な種類のオブジェクトです。 js には実際の配列はなく、オブジェクトを使用して配列をシ...
導入:従来の画像検証コードと比較して、スライダー検証コードには次の利点があります。サーバーは検証コー...
1. div css マウスの手の形は cursor:pointer; です。 2. HTML の相...
バブリングとは何ですか? DOM イベント フローには、イベント キャプチャ ステージ、ターゲット ...
この記事では、オンラインリアルタイム多人数チャットルームを実現するためのNode.js+expres...
Code Cloudで新しいプロジェクトtest1を作成します。 公開鍵を取得するには次のコマンドを...
序文LINUX では、定期的なタスクは通常、cron デーモン プロセス [ps -ef | gre...
MySQL 5.7.27のインストールチュートリアルは以下のように記録され、皆さんと共有されています...
目次概要コンポーネントクラスの型定義を作成するジェネリック型を使用してPropsとStateを定義す...