ドッキングウィンドウは、不正アクセスを防止するために、リモートアクセスポートを開きます
- 証明書認証の設定
- ファイアウォールやセキュリティポリシーを設定します
#!/ binに/ bashの #docker.tls.sh #CentOSの7环境、ルート #は创建ドッカーTLS证书 ##########配置信息 ポート= 2376 ノード= $(ホスト名) IP = $(ipが追加します| -nr sedのの#^ * INET / [1-9] *(ENS | ETH)。(*。)。。* $#\ 1#GP ') PASSWORD = "88888888" 国= "CN" STATE = "上海" CITY = "上海" ORGANIZATION = "エルフ" ORGANIZATIONAL_UNIT = "Devの" COMMON_NAME = "$ IP" EMAIL = "[email protected]" ##########生成证书 #は、CAキーの生成 opensslのをgenrsa -aes256 -passout "渡します。$ PASSWORD"を"CA-KEY_ $ Node.pem" -out 4096&>を/ dev / null #CAを生成します openssl reqを-new -x509 -days 730 -key "CA-KEY_ $ Node.pem" -sha256 -out "CA_ $ Node.pem" "渡します。$ PASSWORD"を-passin -subj「/ C = $の国/ ST = $ STATE / L = $のCITY / O = $ ORGANIZATION / OU = $ ORGANIZATIONAL_UNIT / CN = $ COMMON_NAME / EMAILADDRESS = $ EMAIL "&>を/ dev / null エコー"#SERVER" #はサーバキーを生成 opensslのgenrsa -out"サーバ- KEY_ $ Node.pem」4096&>を/ dev / null #サーバーサートを生成します。 opensslのREQ -subj "/ CN = $ COMMON_NAME" -sha256 -new -key "サーバーKEY_ $ Node.pem" -out server.csr エコー"のsubjectAltName = IP:$ IP、IP:127.0.0.1" >> EXTFILE。 CNF エコー"extendedKeyUsageの= serverAuth" >> extfile.cnf opensslのX509 -req -days 730 -sha256 -in server.csr -passin "渡します。$ PASSWORD"を-CA "CA_ $ Node.pem" -CAkey "CA-KEY_ $ Node.pem" -CAcreateserial -out「サーバcert_ $ Node.pem "-extfile extfile.cnf エコー"#Client" のopenssl genrsa -out "クライアントKEY_ $ Node.pem" 4096&>は/ dev / nullに opensslのREQ -subj '/ CN =クライアントの-new -key"クライアントKEY_ $ Node.pem "-out client.csr エコーextendedKeyUsageの= CLIENTAUTH >> extfile.cnf のopensslのx509 -req -days 730 -sha256 -in client.csr -passin "渡します。$ PASSWORD"を-CA" CA_の$ノード.PEM "-CAkey "CA-KEY_ $ Node.pem" -CAcreateserial -out "クライアントcert_ $ Node.pem" -extfile extfile.cnf のchmod 0400 "クライアントKEY_ $ Node.pem""サーバKEY_ $ノード。PEM」 chmodの0444 "" $ Node.pem CA_ "サーバーcert_ $ Node.pem" "クライアントcert_ $ Node.pem" ##########ドッキングウィンドウ配置 エコー エコー"コピー証明書#" #サーバ証明書 は、mkdir -p〜/ .dockerの CP "CA_ $ Node.pem" "サーバーcert_ $ Node.pem" "サーバーKEY_ Node.pem $" 〜/ .docker -avf #クライアント証明書ファイルの CP -avf "クライアントcert_ $ Node.pem" "クライアントKEY_ $ Node.pem" 〜/ .docker / #梱包クライアント証明書の タール-zcfドッキングウィンドウ-TLS-あるCLIENT_IDENTIFIER $ Node.tar.gz クライアントcert_ $ Node.pem CA_ $ $ Node.pem KEY_ Node.pemのClient- CP-TLS-あるCLIENT_IDENTIFIER -afドッカー〜$ Node.tar.gz / .docker / LS -hl $(PWD)/ TLS-ドッカー* エコー エコー"ドッキングウィンドウのスタートアップ項目#の/lib/systemd/system/docker.serviceを変更する" SetOPTS =「以下。--tls \ HOME = $ / .docker / CAの$ {_}ノードの\を.PEM --tlscacert HOME = $ --tlscert /.docker/server-cert_${Node}.pem \ HOME --tlskey = $ /。ドッキングウィンドウ/サーバー・キー_ $ {}ノードの.pem \ -H 0.0.0.0:${Port}」 -iは、 "S#^ ExecStart。SetOPTS *#&$#" /lib/systemd/system/docker.serviceのセッド はgrep '^ ExecStart' /lib/systemd/system/docker.service systemctlデーモンリロード(Reload) エコー エコー「クライアント#をリモート接続の終了" エコー" IPドッカー-H $:$ {ポート} --tlsverify --tlscacert〜/ .docker / CA_〜$ Node.pem --tlscert / .docker /クライアントcert_ $ Node.pem --tlskey 〜/ .docker /クライアント-PS Node.pem KEY_ $ -a " カール"を使用してエコー"#クライアント接続 エコー"カール--cacert〜/ .docker / CA_〜$ Node.pem --cert / .docker /クライアントを〜$ Node.pem --key -cert_ / .docker /クライアントKEY_ $ Node.pem HTTPS:// IP $:$ {ポート} /コンテナ/ JSON」 #clean RMの.srl * -f * CA *の.pem * .csrです.cnfの エコー エコー-e "\ E [1; 32Mの#のリブート効果のドッキングウィンドウを取るためには、 ドッキングウィンドウの再起動systemctl \ Eを[0メートル" #