Docker-TLS加密通讯

为了防止链路劫持、会话劫持等问题导致 Docker 通信时被中 间人攻击,client/server 两端应该通过加密方式通讯。

什么是TLS

传输层安全性协议(英语:Transport Layer Security,缩写作TLS),及其前身安全套接层(Secure Sockets Layer,缩写作SSL)是一种安全协议,目的是为互联网通信提供安全及数据完整性保障。
SSL包含记录层(Record Layer)和传输层,记录层协议确定传输层数据的封装格式。传输层安全协议使用X.509认证,之后利用非对称加密演算来对通信方做身份认证,之后交换对称密钥作为会谈密钥(Session key)。这个会谈密钥是用来将通信两方交换的数据做加密,保证两个应用间通信的保密性和可靠性,使客户与服务器应用之间的通信不被攻击者窃听。

配置docker容器TLS加密通讯的方法

1.创建一个ca密钥 ca-key.pem

openssl genrsa -aes256 -out ca-key.pem 4096			#自己输入一个密码

2.由ca密钥生成一个ca证书 ca.pem

openssl req -new -x509 -days 1000 -key ca-key.pem -sha256 -subj "/CN=*" -out ca.pem		#需要输入密码

3.创建服务器私钥 server-key.pem

openssl genrsa -out server-key.pem 4096 

4.签名私钥 server.scr

openssl req -subj "/CN=*" -sha256 -new -key server-key.pem -out server.csr

5.生成数字证书 server-cert.pem

openssl x509 -req -days 1000 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem

6.生成客户端密钥 key.pem

openssl genrsa -out key.pem 4096

7.签名客户端私钥 client.csr

openssl req -subj "/CN=client" -new -key key.pem -out client.csr

8.创建配置文件,生成client自签证书

echo extendedKeyUsage=clientAuth > extfile.cnf

9.生成客户端数字证书 cert.pem

openssl x509 -req -days 1000 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile extfile.cnf

10.删除多余文件

rm -rf ca.srl client.csr extfile.cnf server.csr

11.配置docker

vim /lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd --tlsverify --tlscacert=/tls/ca.pem --tlscert=/tls/server-cert.pem --tlskey=/tls/server-key.pem -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock				#端口号可自定义

12.重新加载和启动服务

systemctl daemon-reload
systemctl restart docker

13.将ca.pem、cert.pem、key.pem上传客户端

scp ca.pem root@192.168.100.12:/etc/docker/
scp cert.pem root@192.168.100.12:/etc/docker/
scp key.pem root@192.168.100.12:/etc/docker/

验证

本地验证

echo "192.168.100.100 masher" >> /etc/hosts
docker --tlsverify --tlscacert=ca.pem --tlscert=cert.pem --tlskey=key.pem -H tcp://master:2376 version				

#此处必须做域名映射,master要映射到服务端ip地址
发现可以正常查看

客户端验证

echo "192.168.100.100 masher" >> /etc/hosts
docker --tlsverify --tlscacert=ca.pem --tlscert=cert.pem --tlskey=key.pem -H tcp://master:2376 version

也能正常访问查看docker版本信息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值