centos7遠程訪問docker配置TLS認證——shell腳本一鍵生成

  • 安裝docker
    yum install docker
  • 複製執行shell腳本,只需改動SERVER即可
#創建 Docker TLS 證書
#!/bin/bash

#相關配置信息
#docker主機IP
SERVER="192.168.199.100"
PASSWORD="password123456"
COUNTRY="CN"
STATE="shanghai"
CITY="shanghai"
ORGANIZATION="shanghai"
ORGANIZATIONAL_UNIT="Dev"
EMAIL="[email protected]"

###開始生成文件###
echo "開始生成文件"

#切換到生產密鑰的目錄
cd /etc/docker   
#生成ca私鑰(使用aes256加密)
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.pem -subj "/C=$COUNTRY/ST=$STATE/L=$CITY/O=$ORGANIZATION/OU=$ORGANIZATIONAL_UNIT/CN=$SERVER/emailAddress=$EMAIL"

#生成server證書私鑰文件
openssl genrsa -out server-key.pem 2048
#生成server證書請求文件
openssl req -subj "/CN=$SERVER" -new -key server-key.pem -out server.csr

echo "subjectAltName=IP:${SERVER},IP:0.0.0.0" >> extfile.cnf
echo "extendedKeyUsage=serverAuth" >> extfile.cnf

#使用CA證書及CA密鑰以及上面的server證書請求文件進行簽發,生成server自簽證書
openssl x509 -req -days 3650 -in server.csr -CA ca.pem -CAkey ca-key.pem -passin "pass:$PASSWORD" -CAcreateserial  -out server-cert.pem -extfile extfile.cnf

#生成client證書RSA私鑰文件
openssl genrsa -out key.pem 2048
#生成client證書請求文件
openssl req -subj '/CN=client' -new -key key.pem -out client.csr

sh -c 'echo "extendedKeyUsage=clientAuth" > extfile.cnf'

#生成client自簽證書(根據上面的client私鑰文件、client證書請求文件生成)
openssl x509 -req -days 3650 -in client.csr -CA ca.pem -CAkey ca-key.pem  -passin "pass:$PASSWORD" -CAcreateserial -out cert.pem  -extfile extfile.cnf

#更改密鑰權限
chmod 0400 ca-key.pem key.pem server-key.pem
#更改密鑰權限
chmod 0444 ca.pem server-cert.pem cert.pem
#刪除無用文件
rm client.csr server.csr

echo "生成文件完成"
###生成結束###

#開始修改docker啓動配置文件
sed -i '19i --tlsverify \\' /usr/lib/systemd/system/docker.service
sed -i '20i --tlscacert=/etc/docker/ca.pem \\' /usr/lib/systemd/system/docker.service
sed -i '21i --tlscert=/etc/docker/server-cert.pem \\' /usr/lib/systemd/system/docker.service
sed -i '22i --tlskey=/etc/docker/server-key.pem \\' /usr/lib/systemd/system/docker.service
sed -i '23i -H tcp://0.0.0.0:2375 \\' /usr/lib/systemd/system/docker.service
sed -i '24i -H unix:///var/run/docker.sock \\' /usr/lib/systemd/system/docker.service

# 重新加載文件
systemctl daemon-reload
systemctl restart docker.service
  • 最後複製docker主機文件到登錄主機上
scp /etc/docker/*pem username@HOST:/etc/docker
  • 遠程訪問
docker --tlsverify --tlscacert=/etc/docker/ca.pem --tlscert=/etc/docker/cert.pem --tlskey=/etc/docker/key.pem -H=192.168.199.100:2375 version
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章