リモートアクセスシェル用ドッキングウィンドウTLS証明書認証

ドッキングウィンドウは、不正アクセスを防止するために、リモートアクセスポートを開きます

  • 証明書認証の設定
  • ファイアウォールやセキュリティポリシーを設定します

 

#!/ 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メートル"

  

おすすめ

転載: www.cnblogs.com/elvi/p/10959232.html
おすすめ