Docker---docker生产环境之TLS通讯加密

网友投稿 253 2022-10-27

Docker---docker生产环境之TLS通讯加密

Docker---docker生产环境之TLS通讯加密

Docker---docker生产环境之TLS通讯加密 一: 在docker中搭建TLS加密 - 在公司的docker业务中,一般为了防止链路劫持、会话劫持等问题导致docker通信时被中间人攻击,c/s两端应该通过加密方式通讯。 - 流程: 秘钥key---> 身份前面csr---->(服务器/客户端) (结合ca.pem) 制作证书pem #实验环境 | 角色 | IP地址 | 软件包 | | ---------------------- | ------------------ | --------- | | master(docker服务端) | 192.168.100.200/24 | docker-ce | | client(docker客户端) | 192.168.100.190/24 | docker-ce | 通过在服务端上创建tls密钥证书,再下发给客户端,客户端通过私钥访问容器,这样就保证的docker通讯的安全性 CA证书只是一个官方认证的证书 接下来要创建server、client节点的证书 此时创建证书有三步 1.设置私钥 确保安全加密 2.私钥签名 确保身份真实不可抵赖 3.制作证书 csr是一个签名文件 #---------------------------------------master操作 1.环境部署 echo "127.0.0.1 master" >> /etc/hosts ping master "要能ping通" 2.创建ca秘钥 mkdir /root/tls && cd /root/tls openssl genrsa -aes256 -out ca-key.pem 4096 '//使用rsa非对称秘钥,位数256位,-out 输出密钥文件ca-key.pem' ls "包含ca-key.pem" 3.创建ca证书 '//输入CA秘钥密码123123' openssl req -new -x509 -days 1000 -key ca-key.pem -sha256 -subj "/CN=*" -out ca.pem ls "包含ca-key.pem ca.pem" 4.创建服务器server私钥 openssl genrsa -out server-key.pem 4096 '//创建服务器秘钥' ls "ca-key.pem ca.pem server-key.pem" 5.创建服务器server签名私钥 openssl req -subj "/CN=*" -sha256 -new -key server-key.pem -out server.csr ls "ca-key.pem ca.pem server.csr server-key.pem" 6.使用ca证书和签名私钥,创建server-cert.pem证书 "输入123123密码" openssl x509 -req -days 1000 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem ls "ca-key.pem ca.pem ca.srl server-cert.pem server.csr server-key.pem" 7.生成客户端client密钥 openssl genrsa -out key.pem 4096 ls "ca-key.pem ca.pem ca.srl key.pem server-cert.pem server.csr server-key.pem" 8.生成客户端client签名 openssl req -subj "/CN=client" -new -key key.pem -out client.csr ls "ca-key.pem ca.pem ca.srl client.csr key.pem server-cert.pem server.csr server-key.pem" 9.创建配置文件 echo extendedKeyUsage=clientAuth > extfile.cnf ls "ca-key.pem ca.srl extfile.cnf server-cert.pem server-key.pem ca.pem client.csr key.pem server.csr" 10.创建签名证书,输入123123密码 openssl x509 -req -days 1000 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile extfile.cnf '//基于ca证书,ca秘钥生成签名证书' ls "ca-key.pem ca.srl client.csr key.pem server.csr ca.pem cert.pem extfile.cnf server-cert.pem server-key.pem" 11.删除多余文件(也可以不删) rm -rf ca.srl client.csr extfile.cnf server.csr /tmp ls "ca-key.pem ca.pem cert.pem key.pem server-cert.pem server-key.pem" 12.修改docker的配置文件,并且重启服务 vi /usr/lib/systemd/system/docker.service #ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock "注释" 添加ExecStart=/usr/bin/dockerd --tlsverify --tlscacert=/root/tls/ca.pem --tlscert=/root/tls/server-cert.pem --tlskey=/root/tls/server-key.pem -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock systemctl daemon-reload systemctl restart docker 13.将(ca.pem)ca证书,(cert.pem)签名证书,(key.pem)客户端密钥复制到client的/etc/docker目录下 scp ca.pem root@192.168.100.190:/etc/docker/ scp cert.pem root@192.168.100.190:/etc/docker/ scp key.pem root@192.168.100.190:/etc/docker/ #--------------------------Client操作 1.在client上设置基本环境,且验证TLS echo "192.168.100.200 master" >> /etc/hosts ping master ls /etc/docker/ "ca.pem cert.pem daemon.json key.json key.pem" cd /etc/docker/ "在/etc/docker/执行以下命令" docker --tlsverify --tlscacert=ca.pem --tlscert=cert.pem --tlskey=key.pem -H tcp://master:2376 version 2.测试 ----master docker pull nginx docker --tlsverify --tlscacert=ca.pem --tlscert=cert.pem --tlskey=key.pem -H tcp://master:2376 images "master能查看到自己本地的镜像" ----client docker --tlsverify --tlscacert=ca.pem --tlscert=cert.pem --tlskey=key.pem -H tcp://master:2376 images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 7e4d58f0e5f3 2 weeks ago 133MB "client也能查看到" //报错内容 [root@master tls]# docker --tlsverify --tlscacert=ca.pem --tlscert=cert.pem --tlskey=key.pem -H tcp://master:2375 images Cannot connect to the Docker daemon at tcp://master:2375. Is the docker daemon running? [root@master tls]# docker --tlsverify --tlscacert=ca.pem --tlskey=server-key.pem --tlscert=server-cert.pem -H tcp://server:2376 images error during connect: Get dial tcp: lookup server on 114.114.114.114:53: no such host //报错一般是端口错误或者证书错误

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Docker--Harbor私有仓库
下一篇:java中的DateTime的具体使用
相关文章

 发表评论

暂时没有评论,来抢沙发吧~