前書き: Docker がポート 2375 を直接開くのは安全ではありません。他のユーザーが接続する限り、何でもできます。以下は、Docker の TLS と CA 認証を有効にし、Jenkins と Portainer を使用して接続する方法です。 1. 証明書を生成するサーバーのホスト名を確認する ホスト名 docker-tls-ca.sh を自動生成します # !/bin/bash # ワンクリックで TLS 証明書と CA 証明書を生成# 作成日: 2021-08-25 # 更新日: 2021-08-25 # @著者: wuduoqiang # サーバーホスト名 SERVER="6c377ffb8e86" # パスワード PASSWORD="2cx&BUjsV4u%3TW9" # 国 COUNTRY="CN" # 省 STATE="海南省" # 都市 CITY="海口" # 組織名 ORGANIZATION="Xiao Qiangzi Company" # 組織単位 ORGANIZATIONAL_UNIT="Little Qiangzi Unit" # メール EMAIL="[email protected]" # CA キーを生成する openssl genrsa -aes256 -passout pass:$PASSWORD -out ca-key.pem 2048 # CA 証明書を生成 openssl req -new -x509 -passin "pass:$PASSWORD" -days 3650 -key ca-key.pem -sha256 -out ca-cert.pem -subj "/C=$COUNTRY/ST=$STATE/L=$CITY/O=$ORGANIZATION/OU=$ORGANIZATIONAL_UNIT/CN=$SERVER/emailAddress=$EMAIL" # サーバーキーを生成する openssl genrsa -out server-key.pem 2048 # サーバー証明書に署名するためのリクエストファイルを生成します openssl req -subj "/CN=$SERVER" -new -key server-key.pem -out server-req.csr # サーバー証明書を生成します openssl x509 -req -days 3650 -in server-req.csr -CA ca-cert.pem -CAkey ca-key.pem -passin "pass:$PASSWORD" -CAcreateserial -out server-cert.pem # クライアントキーを生成する openssl genrsa -out client-key.pem 2048 # クライアント証明書署名要求ファイルを生成する openssl req -subj '/CN=client' -new -key client-key.pem -out client-req.csr # クライアント証明書を生成 sh -c 'echo "extendedKeyUsage=clientAuth" >> extfile.cnf' openssl x509 -req -days 3650 -in client-req.csr -CA ca-cert.pem -CAkey ca-key.pem -passin "pass:$PASSWORD" -CAcreateserial -out client-cert.pem -extfile extfile.cnf # キーの権限を変更する chmod 0400 ca-key.pem server-key.pem client-key.pem # 証明書の権限を変更する chmod 0444 ca-cert.pem server-cert.pem client-cert.pem # 不要なファイルを削除します# rm ca-cert.srl client-req.csr server-req.csr extfile.cnf ファイルの説明 ca.srl: CA 証明書のシリアル番号レコード ファイルca-cert.pem: CA 証明書ca-key.pem: CA キーserver-key.pem: サーバー キーserver-req.csr: サーバー証明書署名要求ファイルserver-cert.pem: サーバー証明書client-key.pem: クライアント キーextfile.cnf: クライアント証明書拡張構成ファイルclient-req.csr: クライアント証明書署名要求ファイルclient-cert.pem: クライアント証明書 コマンド分析 # -subj /C=$COUNTRY/ST=$STATE/L=$CITY/O=$ORGANIZATION/OU=$ORGANIZATIONAL_UNIT/CN=$SERVER/emailAddress=$EMAIL -subjは指定された証明書申請者の情報です。Cは国名です。 STは州または県名です Lは地域名を表します Oは組織名です OUは組織単位名です CNは一般名です emailAddressはメールアドレスです 2. リモートを有効にするDockerのリモートアクセスAPIを有効にする # ファイルを編集する vim /etc/systemd/system/docker.service # 内容を変更します。証明書の指定された場所に注意してください。ExecStart=/usr/bin/dockerd \ --tlsverify \ --tlscacert=/etc/docker/ca-cert.pem \ --tlscert=/etc/docker/server-cert.pem \ --tlskey=/etc/docker/server-key.pem \ -H unix:///var/run/docker.sock \ -H tcp://0.0.0.0:2375 # サービスを再起動します systemctl daemon-reload && systemctl restart docker キーと証明書がないと接続できません docker -H 192.168.8.248:2375 イメージ キーと証明書がないとホスト名を使用して接続することはできません。 docker -H 6c377ffb8e86:2375 イメージ さらに、ホスト名を使用せずにキーと証明書を接続することはできません。 curl https://192.168.8.248:2375/info --cert ./client-cert.pem --key ./client-key.pem --cacert ./ca-cert.pem キーと証明書を追加し、ホスト名を使用してアクセスします curl https://6c377ffb8e86:2375/info --cert ./client-cert.pem --key ./client-key.pem --cacert ./ca-cert.pem 3. リモート接続3.1 Jenkins接続資格情報を追加する 情報を入力してください 接続をテストします。ここではホスト名を使用する必要があります。 JenkinsがDockerによってインストールされている場合は、ホスト名をマッピングする必要があります バージョン: '3' サービス: ジェンキンス: 再起動: 常に イメージ: 192.168.8.247/xiaoqiangzai/jenkins:latest コンテナ名: jenkins ポート: - '8888:8080' - '50000:50000' ボリューム: - ./data/jenkins_home:/var/jenkins_home ./data/war/jenkins.war:/usr/share/jenkins/jenkins.war 環境: JENKINS_OPTS: "--prefix=/jenkins" 追加ホスト: - 「6c377ffb8e86:192.168.8.248」 3.2 ポーテナー接続クライアントキーと証明書、およびCA証明書を選択します 接続OK Portainerがdockerでインストールされている場合は、ホスト名をマッピングする必要があります バージョン: '3' サービス: ポーター: 再起動: 常に 画像: portainer/portainer-ce:latest コンテナ名: ポーテナー 特権: true ポート: - '9000:9000' ボリューム: - ./データ/データ:/データ - ./data/public:/public 追加ホスト: - 「6c377ffb8e86:192.168.8.248」 Docker で TLS と CA 認証を有効にする手順についてはこれで終わりです。Docker で TLS と CA 認証を有効にする方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: Centos7 で mysqldump を使用して MySQL データベースの毎日の自動バックアップを作成する
Bステーションでパスワードを入力するときに目を覆っているこの画像を見たことがある人もいると思いますこ...
テーブルの背景画像を設定します。任意の GIF または JPEG 画像ファイルを使用できます。基本的...
システム環境: centos7.4 1. データベースがインストールされているかどうかを確認します。...
この記事では、WeChatアプレットがSMS認証コードのカウントダウンを送信するための具体的なコード...
目次概要Gulp.jsをインストールするGulp.jsを使用してプロジェクトを作成するgulpfil...
今日、イメージを起動した後、HTTP リクエスト経由でアクセスできないという小さな問題が発生しました...
日々の運用・保守作業において、MySQL データベースのバックアップは重要です。ウェブサイトにとって...
MySQL パフォーマンスの最適化MySQL パフォーマンスの最適化とは、リソースを合理的に配置し、...
目次1. 部分文字列() 2. サブストラクチャ() 3.インデックス() 4.最後のインデックス(...
編集者注: この記事は、Teambition チームの @娄昊川 が寄稿したものです。Teambit...
序文職場で次のような状況に遭遇しました。ログ システムのテーブルでは、時間フィールドには日付データで...
<br />構造と階層により複雑さが軽減され、読みやすさが向上します。記事やサイトが整理...
ソースコードの例: https://codepen.io/shadeed/pen/03caf6b36...
目次序文ステップ序文今日、es ログが記録されていないことに気付きました。filebeat、elas...
目次導入インデックスの原則1. データページ2. ページディレクトリ3. インデックス原則分析要約す...