Docker-TLS加密通讯 超实用的通讯方式

Docker-TLS加密通讯

Docker-TLS加密通讯

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

hostnamectl set-hostname master
su

vim /etc/hosts
127.0.0.1   master
//创建ca密钥
openssl genrsa -aes256 -out ca-key.pem 4096  //输入123123
//创建ca证书
openssl req -new -x509 -days 1000 -key ca-key.pem -sha256 -subj "/CN=*" -out ca.pem  //输入123123
//创建服务器私钥
openssl genrsa -out server-key.pem 4096 
//签名私钥
openssl req -subj "/CN=*" -sha256 -new -key server-key.pem -out server.csr
//使用ca证书与私钥证书签名,输入123123
openssl x509 -req -days 1000 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem
//生成客户端密钥
openssl genrsa -out key.pem 4096
//签名客户端
openssl req -subj "/CN=client" -new -key key.pem -out client.csr
//创建配置文件
echo extendedKeyUsage=clientAuth > extfile.cnf
//签名证书,输入123123,需要(签名客户端,ca证书,ca密钥)
openssl x509 -req -days 1000 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile extfile.cnf
//删除多余文件
rm -rf ca.srl client.csr extfile.cnf server.csr
//配置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

//重启进程
systemctl daemon-reload
//重启docker服务
systemctl restart docker

//将 /tls/ca.pem /tls/cert.pem /tls/key.pem 三个文件复制到另一台主机
scp ca.pem root@192.168.199.50:/etc/docker/
scp cert.pem root@192.168.199.50:/etc/docker/
scp key.pem root@192.168.199.50:/etc/docker/

//本地验证
docker --tlsverify --tlscacert=ca.pem --tlscert=cert.pem --tlskey=key.pem -H tcp://master:2376 version
docker pull nginx



//client上操作
vim /etc/hosts
192.168.199.40 master

docker --tlsverify --tlscacert=ca.pem --tlscert=cert.pem --tlskey=key.pem -H tcp://master:2376 version

Version:           20.10.5
 API version:       1.41
 Go version:        go1.13.15
 Git commit:        55c4c88
 Built:             Tue Mar  2 20:33:55 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.5
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       363e9a8
  Built:            Tue Mar  2 20:32:17 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.4
  GitCommit:        05f951a3781f4f2c1911b05e61c160e9c30eaa8e
 runc:
  Version:          1.0.0-rc93
  GitCommit:        12644e614e25b05da6fd08a38ffa0cfe1903fdec
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
  • 以下放实验图片

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!感谢您的提问。以下是 Traefik 结合 docker-compose 的快速安装及使用步骤: 1. 首先,您需要安装 Dockerdocker-compose 工具。您可以参考 Docker 官方文档进行安装。 2. 创建一个 docker-compose.yml 文件,并添加以下内容: ``` version: '3' services: reverse-proxy: image: "traefik:v2.0" container_name: "traefik" ports: - "80:80" - "443:443" volumes: - "/var/run/docker.sock:/var/run/docker.sock:ro" - "./traefik.yml:/traefik.yml:ro" - "./certs:/certs" ``` 这个 docker-compose 文件中包含了 Traefik 服务的配置,它会监听端口 80 和 443,并将请求转发到相应的 Docker 容器中。 3. 创建一个 traefik.yml 文件,包含 Traefik 的配置信息。以下是一个简单的 traefik.yml 文件示例: ``` providers: docker: endpoint: "unix:///var/run/docker.sock" exposedByDefault: false ``` 这个 traefik.yml 文件中指定了 Traefik 使用 Docker 作为服务提供者,并监听 Docker 的 Unix Socket。 4. 在 certs 目录下创建一个 TLS 证书,用于 HTTPS 请求。您可以使用 OpenSSL 工具生成自签名证书,例如: ``` mkdir certs openssl req -x509 -nodes -newkey rsa:2048 -keyout certs/key.pem -out certs/cert.pem -days 365 ``` 这个命令会在 certs 目录下生成一个 key.pem 和 cert.pem 文件,用于 HTTPS 请求的 TLS 加密。 5. 运行 docker-compose 命令启动 Traefik 服务: ``` docker-compose up -d ``` 现在,Traefik 服务已经启动,并监听端口 80 和 443。您可以通过访问 Traefik 的 IP 地址来测试服务是否正常工作。 6. 配置其他服务加入到 Traefik 的代理中,例如您的 Web 应用程序。在您的应用程序的 Docker Compose 文件中添加以下标签: ``` labels: - "traefik.enable=true" - "traefik.http.routers.my-app.rule=Host(`my-app.example.com`)" - "traefik.http.routers.my-app.entrypoints=websecure" - "traefik.http.routers.my-app.tls=true" - "traefik.http.routers.my-app.tls.certresolver=letsencryptresolver" ``` 这个标签中指定了您的应用程序需要加入 Traefik 的代理中,并指定了域名、TLS 加密等信息。 7. 重新启动您的应用程序 Docker 容器,Traefik 会自动将请求转发到相应的应用程序中。 至此,您已经完成了 Traefik 结合 docker-compose 的快速安装及使用。希望这些信息能对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值