序文 以前、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 をご愛顧いただき、誠にありがとうございます。 以下もご興味があるかもしれません:
|
序文この記事では、Windows 10 システムで MySQL を完全に削除してアンインストールする...
序文数日前、偶然、コーナーの四角形が欠落している機能に遭遇しました。最初に頭に浮かんだのは、必要な場...
では、早速コードを見てみましょう。 1. 上部、中央、下部のレイアウト: <!DOCTYPE ...
状況の説明:今日、MySQL データベースのスレーブ ノード ホストにログインしたところ、/var/...
この記事では、WeChatアプレットの宝くじ番号ジェネレータの具体的なコードを参考までに紹介します。...
この記事では、参考までに、Vuex の具体的なコードを共有して、簡単なショッピングカートを実装します...
文字の位置を取得するための同様の方法について学習します。 charAt() 文字列内の指定された位置...
Ethereum 上で DApps を開発したことがある場合は、フロントエンド JavaScript...
1. 環境VS 2019 16.9.0 プレビュー 1.0 .NET SDK 5.0.100 2. ...
Vue では、ほとんどの場合、テンプレートを使用して HTML を作成することを推奨しています。ただ...
目次序文文章1. 終了1.1 クロージャとは何ですか? 1.2 クロージャの特性1.3 クロージャを...
恥ずかしながら、このようなよく使われるチェックボックスのスタイルを変更するために、Baidu で長い...
最近、同社は CCFA 関連のいくつかの作業を行う予定で、その 1 つはカメラのリアルタイム監視を再...
HTTPとは何ですか?ウェブサイトを閲覧したいときは、ブラウザのアドレス バーにウェブサイトのアド...
最近、Dreamweaver を使用して製品プレゼンテーションを作成し、画像にハイパーリンクを追加し...