Docker容器通信安全----TLS加密通讯

一、TLS加密通信

在公司的docker业务中,一般为了防止链路劫持、会话劫持等问题导致docker通信时
被中间人攻击,C/S两端应该通过加密方式通讯。

二、搭建部署

2.1、搭建环境

两台虚拟机都安装了 docker-ce。
server端-----10.0.0.10
client端------10.0.0.20

2.2、server端部署

1、修改主机名,并配置hosts文件

hostnamectl set-hostname master
su
vim /etc/hosts
127.0.0.1   master     ‘末行添加’

2、创建目录和ca密钥

[root@master ~]# mkdir /tls
[root@master ~]# cd /tls
[root@master tls]# openssl genrsa -aes256 -out ca-key.pem 4096
‘openssl :开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听’
‘genrsa:rsa 非对称密钥’
‘-aes256:指定密钥长度为256位’
‘-out ca-key.pem:创建ca-key.pam密钥文件’

Generating RSA private key, 4096 bit long modulus
.......................................++
..................................................................++
e is 65537 (0x10001)
Enter pass phrase for ca-key.pem:       #输入密码
Verifying - Enter pass phrase for ca-key.pem:   #确认密码
[root@master tls]# ls 
ca-key.pem    #生成的密匙

在这里插入图片描述

3、创建ca证书

[root@master tls]# openssl req -new -x509 -days 1000 -key ca-key.pem -sha256 -subj "/CN=*" -out ca.pem

‘ -days 1000:有效期是1000天 ’
‘req -new:请求创建新的证书’
‘-x509:证书的一个参数’
‘-key:指定密钥文件’
‘-sha256:哈希验证’
‘-subj “/CN=*”:指定项目名称’
‘-out ca.pam:产生出ca证书’

[root@master tls]# openssl req -new -x509 -days 1000 -key ca-key.pem -sha256 -subj "/CN=*" -out ca.pem
Enter pass phrase for ca-key.pem:     #输入创建ca密匙时的密码
[root@master tls]# ls
ca-key.pem  ca.pem   #官方颁布的证书

在这里插入图片描述

4、创建服务器端的私钥

[root@master tls]# openssl genrsa -out server-key.pem 4096
Generating RSA private key, 4096 bit long modulus
........................................................................................................++
...........++
e is 65537 (0x10001)
[root@master tls]# ls
ca-key.pem  ca.pem  server-key.pem

在这里插入图片描述

5、认证服务器私钥,签名私钥

[root@master tls]# openssl req -subj "/CN=*" -sha256 -new -key server-key.pem -out server.csr
‘使用server-key.pem 密钥文件进行签名,生产私钥证书’
[root@master tls]# ls
ca-key.pem  ca.pem  server.csr  server-key.pem

在这里插入图片描述

6、 使用ca证书与私钥证书签名,输入密码,生成服务器证书

[root@master tls]# openssl x509 -req -days 1000 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem

‘openssl x509:使用openssl方式生成 509证书’
‘-in server.csr :导入签名文件’
‘-CA ca.pam :加入CA官方授权的证书’
‘-CAcreateserial -out server-cert.pem:创建服务端的证书’


Signature ok
subject=/CN=*
Getting CA Private Key
Enter pass phrase for ca-key.pem:   #输入密码
[root@master tls]# ls
ca-key.pem  ca.pem  ca.srl  server-cert.pem  server.csr  server-key.pem

在这里插入图片描述

7、客户端密钥生成,使用密钥进行签名

[root@master tls]# openssl genrsa -out key.pem 4096
Generating RSA private key, 4096 bit long modulus
.............++
...........................................++
e is 65537 (0x10001)
[root@master tls]# openssl req -subj "/CN=clinet" -new -key key.pem -out client.csr
[root@master tls]# ls
ca-key.pem  ca.pem  ca.srl  client.csr  key.pem  server-cert.pem  server.csr  server-key.pem

在这里插入图片描述
8、创建配置文件

[root@master tls]# echo extendedKeyUsage=clientAuth > extfile.cnf

在这里插入图片描述
9、创建签名证书,需指定ca证书、ca秘钥、客户端前面和刚生成的配置文件

[root@master tls]# openssl x509 -req -days 1000 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile extfile.cnf

在这里插入图片描述
10、删除多余的文件,配置docker service文件

[root@master tls]# rm -rf ca.srl client.csr extfile.cnf server.csr
[root@master tls]# vim /lib/systemd/system/docker.service
‘注释14行默认的准启动内容’
‘在15行添加准启动内容’
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

在这里插入图片描述
加载单元,重启服务

[root@master tls]# systemctl daemon-reload 
[root@master tls]# systemctl restart docker

11、 将 /tls/ca.pem 、/tls/cert.pem 、/tls/key.pem 这三个文件复制到客户端/etc/docker下,需输入root密码

[root@master tls]# scp ca.pem root@10.0.0.20:/etc/docker/  
[root@master tls]# scp cert.pem root@10.0.0.20:/etc/docker/
[root@master tls]# scp key.pem root@10.0.0.20:/etc/docker/

客户端验证

[root@localhost ~]# hostnamectl set-hostname client
[root@localhost ~]# su
[root@client ~]# vim /etc/hosts
10.0.0.10 master

[root@client ~]# cd /etc/docker/
[root@client docker]# ls
ca.pem  cert.pem  daemon.json  key.json  key.pem
[root@client docker]# docker --tlsverify --tlscacert=ca.pem --tlscert=cert.pem --tlskey=key.pem -H tcp://master:2376 version

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值