温馨提示×

如何在CentOS Overlay中使用TLS加密

小樊
56
2025-08-26 22:55:05
栏目: 网络安全

在CentOS Overlay网络中使用TLS加密可以确保容器间通信的安全性。以下是实现这一目标的步骤:

1. 生成TLS证书和密钥

首先,你需要生成用于TLS加密的证书和密钥。可以使用OpenSSL来生成这些文件。

# 创建CA目录
mkdir -p /etc/docker/certs.d/tls-ca

# 生成CA私钥
openssl genrsa -out /etc/docker/certs.d/tls-ca/ca-key.pem 4096

# 生成CA证书
openssl req -new -x509 -days 365 -key /etc/docker/certs.d/tls-ca/ca-key.pem -out /etc/docker/certs.d/tls-ca/ca-cert.pem -subj "/CN=tls-ca"

# 生成服务器私钥
openssl genrsa -out /etc/docker/certs.d/tls-ca/server-key.pem 4096

# 生成服务器证书签名请求(CSR)
openssl req -new -key /etc/docker/certs.d/tls-ca/server-key.pem -out /etc/docker/certs.d/tls-ca/server-csr.pem -subj "/CN=server"

# 使用CA证书签名服务器CSR
openssl x509 -req -in /etc/docker/certs.d/tls-ca/server-csr.pem -CA /etc/docker/certs.d/tls-ca/ca-cert.pem -CAkey /etc/docker/certs.d/tls-ca/ca-key.pem -CAcreateserial -out /etc/docker/certs.d/tls-ca/server-cert.pem -days 365

# 生成客户端私钥
openssl genrsa -out /etc/docker/certs.d/tls-ca/client-key.pem 4096

# 生成客户端证书签名请求(CSR)
openssl req -new -key /etc/docker/certs.d/tls-ca/client-key.pem -out /etc/docker/certs.d/tls-ca/client-csr.pem -subj "/CN=client"

# 使用CA证书签名客户端CSR
openssl x509 -req -in /etc/docker/certs.d/tls-ca/client-csr.pem -CA /etc/docker/certs.d/tls-ca/ca-cert.pem -CAkey /etc/docker/certs.d/tls-ca/ca-key.pem -CAcreateserial -out /etc/docker/certs.d/tls-ca/client-cert.pem -days 365

2. 配置Docker守护进程

编辑Docker守护进程的配置文件 /etc/docker/daemon.json,添加TLS相关的配置。

{
  "tls": true,
  "tlscacert": "/etc/docker/certs.d/tls-ca/ca-cert.pem",
  "tlscert": "/etc/docker/certs.d/tls-ca/server-cert.pem",
  "tlskey": "/etc/docker/certs.d/tls-ca/server-key.pem",
  "hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2376"]
}

然后重启Docker守护进程:

sudo systemctl restart docker

3. 配置Docker客户端

将生成的客户端证书和密钥复制到客户端的Docker配置目录中。

mkdir -p ~/.docker
cp /etc/docker/certs.d/tls-ca/client-cert.pem ~/.docker/
cp /etc/docker/certs.d/tls-ca/client-key.pem ~/.docker/

创建或编辑 ~/.docker/config.json 文件,添加TLS验证配置:

{
  "tls": true,
  "tlsverify": true,
  "tlscacert": "/etc/docker/certs.d/tls-ca/ca-cert.pem",
  "tlscert": "/etc/docker/certs.d/tls-ca/client-cert.pem",
  "tlskey": "/etc/docker/certs.d/tls-ca/client-key.pem"
}

4. 测试TLS连接

使用 docker 命令行工具测试TLS连接。

docker info

如果配置正确,你应该能够看到Docker守护进程的信息,并且连接是通过TLS加密的。

5. 配置Overlay网络

创建一个使用TLS加密的Overlay网络。

docker network create \
  --driver overlay \
  --opt encrypted=true \
  --opt tlsverify=true \
  --opt tlscacert=/etc/docker/certs.d/tls-ca/ca-cert.pem \
  --opt tlscert=/etc/docker/certs.d/tls-ca/client-cert.pem \
  --opt tlskey=/etc/docker/certs.d/tls-ca/client-key.pem \
  my-secure-overlay-network

6. 连接容器到Overlay网络

将容器连接到这个安全的Overlay网络。

docker run -d --network my-secure-overlay-network --name my-container my-image

通过以上步骤,你可以在CentOS Overlay网络中使用TLS加密来确保容器间通信的安全性。

0