Docker Daemon Socket TLS 加密

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

1.创建文件夹,修改主机名(方便后续使用)

mkdir /tls
cd /tls
hostnamectl set-hostname server
bash

2.客户机操作

hostnamectl set-hostname client
vi /etc/hosts

/etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.95.132 server

3.创建ca秘钥,设定秘钥密码

openssl genrsa -aes256 -out ca-key.pem 4096

image.png

4.创建ca证书

openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem

image.png

5.创建服务器密钥

openssl genrsa -out server-key.pem 4096

6.证书签名请求 (CSR)

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

7.接下来,我们将用我们的 CA 签署公钥:

由于可以通过 IP 地址和 DNS 名称建立 TLS 连接,因此在创建证书时需要指定 IP 地址。例如,要允许使用192.168.95.133(测试用的Client)和连接127.0.0.1:

echo subjectAltName = DNS:server,IP:192.168.95.133,IP:127.0.0.1 >> extfile.cnf

将 Docker 守护进程密钥的扩展使用属性设置为仅用于服务器身份验证:

echo extendedKeyUsage = serverAuth >> extfile.cnf

8.生成签名证书:

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

9.生成客户端秘钥

openssl genrsa -out key.pem 4096

9.签名客户端

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

10.创建配置文件

echo extendedKeyUsage = clientAuth > extfile-client.cnf

11.生成签名证书

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

12.修改docker的配置文件,并且重启服务

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:2388
systemctl daemon-reload
systemctl restart docker

image.png

13.将 /tls/ca.pem /tls/cert.pem /tls/key.pem 三个文件复制到客户机的~/.docker/

14.服务端本地验证

docker --tlsverify   --tlscacert=/tls/ca.pem   --tlscert=/tls/cert.pem   --tlskey=/tls/key.pem   -H=127.0.0.1:2388 version

image.png

15.客户端验证

证书默认会去~/.docker下找

docker --tlsverify -H=192.168.95.132:2388 version

image.png

点赞(0)

评论列表 共有 0 评论

暂无评论

微信服务号

微信客服

淘宝店铺

support@elephdev.com

发表
评论
Go
顶部