idea docker远程TLS加密连接

一、TLS证书生成

1、新建tls.sh文件并添加以下内容

#!/bin/bash
FILE_ADDRESS=/data/work
mkdir -p $FILE_ADDRESS
#DOMAIN_HOST=`ifconfig eth0 | grep "inet" | awk '{ print $2}' | sed -n '1p;1q'`
DOMAIN_HOST=域名地址 #选择域名方案最好
INTERNET_IP=服务器外网ip
HOST=$DOMAIN_HOST
# 自定义信息
PASSWORD="密码"
COUNTRY=CN
PROVINCE=gd
CITY=gz
ORGANIZATION=dounine
GROUP=dg
NAME=lake
SUBJ="/C=$COUNTRY/ST=$PROVINCE/L=$CITY/O=$ORGANIZATION/OU=$GROUP/CN=$HOST"
# 自定义信息
#============================================================================================
#此形式是自己给自己签发证书,自己就是CA机构,也可以交给第三方机构去签发
# 生成根证书RSA私钥,password作为私钥密码(身份证)
openssl genrsa -passout pass:$PASSWORD -aes256 -out $FILE_ADDRESS/ca-key.pem 4096
# 2.用根证书RSA私钥生成自签名的根证书(营业执照)
openssl req -new -x509 -days 365 -passin pass:$PASSWORD -key $FILE_ADDRESS/ca-key.pem -sha256 -subj $SUBJ -out $FILE_ADDRESS/ca.pem
#============================================================================================
#给服务器签发证书
# 1.服务端生成自己的私钥
openssl genrsa -out $FILE_ADDRESS/server-key.pem 4096
# 2.服务端生成证书(里面包含公钥与服务端信息)
openssl req -new -sha256 -key $FILE_ADDRESS/server-key.pem -out $FILE_ADDRESS/server.csr -subj "/CN=$DOMAIN_HOST"
# 3.通过什么形式与我进行连接,可设置多个IP地扯用逗号分隔
echo subjectAltName=IP:$INTERNET_IP,IP:0.0.0.0 > $FILE_ADDRESS/extfile.cnf
# 4.权威机构对证书进行进行盖章生效
openssl x509 -passin pass:$PASSWORD -req -days 365 -sha256 -in $FILE_ADDRESS/server.csr -CA $FILE_ADDRESS/ca.pem -CAkey $FILE_ADDRESS/ca-key.pem -CAcreateserial -out $FILE_ADDRESS/server-cert.pem -extfile $FILE_ADDRESS/extfile.cnf
#============================================================================================
#给客户端签发证书
openssl genrsa -out $FILE_ADDRESS/key.pem 4096
openssl req -subj '/CN=client' -new -key $FILE_ADDRESS/key.pem -out $FILE_ADDRESS/client.csr
echo extendedKeyUsage = clientAuth > $FILE_ADDRESS/extfile.cnf
openssl x509 -passin pass:$PASSWORD -req -days 365 -sha256 -in $FILE_ADDRESS/client.csr -CA $FILE_ADDRESS/ca.pem -CAkey $FILE_ADDRESS/ca-key.pem -CAcreateserial -out $FILE_ADDRESS/cert.pem -extfile $FILE_ADDRESS/extfile.cnf
#============================================================================================
# 清理文件
rm -rf $FILE_ADDRESS/ca-key.pem
rm -rf $FILE_ADDRESS/{server,client}.csr
rm -rf $FILE_ADDRESS/ca.srl
rm -rf $FILE_ADDRESS/extfile.cnf
# 最终文件
# ca.pem  ==  CA机构证书
# cert.pem  ==  客户端证书
# key.pem  ==  客户私钥
# server-cert.pem  == 服务端证书
# server-key.pem  ==  服务端私钥

注意 更改DOMAIN_HOSTINTERNET_IPPASSWORD

2、赋予运行权限

chmod +x tls.sh

3、执行脚本

bash tls.sh

4、此时还剩以下文件

文件名作用
ca.pemCA机构证书
ca-key.pem根证书RSA私钥
cert.pem客户端证书
key.pem客户私钥
server-cert.pem服务端证书
server-key.pem服务端私钥

二、docker配置远程连接

1、打开文件

 vi /usr/lib/systemd/system/docker.service

2、ExecStart处添加以下内容

		--tlsverify \
        --tlscacert=/data/work/ca.pem \
        --tlscert=/data/work/server-cert.pem \
        --tlskey=/data/work/server-key.pem \

![配置截图](https://img-blog.csdnimg.cn/ce9a78f72f9a498da19a30bb6d8ecca9.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3JlZnVzZV93d2o=,size_16,color_FFFFFF,t_70

①:docker搭建时默认配置
②:无需TLS加密远程连接docker
③:TLS加密远程连接docker

3、加载上述配置,再重启docker服务

systemctl daemon-reload && systemctl restart docker

三、idea配置远程连接docker

1、idea安装docker插件

docker插件

我这里已经安装了,没有安装的点击Install,然后重启docker即可

2、下载客户端证书(关键)

将服务器上生成的ca.pemcert.pemkey.pem三个文件保存到本地文件系统

客户端证书

3、配置远程连接docker

配置远程连接

连接成功后我们便可查看docker下的容器和镜像
Services

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐