Docker TLS配置

公司最近采用了Spring Boot架构以Docker容器服务作为载体给客户提供服务,但是最近碰到一个严重的安全问题,这也是这几个月来一直忙碌更换新的架构而忽视的安全问题,但是最近随着产品上线客户的使用安全问题被赤裸裸的暴露出来,好在Docker提供了证书安全保护方案,下面就来讲一下配置与采过的坑(其中命令都是官网提供,具体意义请查询官网https://docs.docker.com/engine/security/https

生成ssl证书命令步骤:注:这里$HOST定义一个域名或服务器名 用DNS指向本机  比方说修改/etc/hosts 加一下  127.0.0.1  master 这里$HOST就是master了

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

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

3.openssl genrsa -out server-key.pem 4096

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

5. echo subjectAltName = DNS:$HOST,IP:127.0.0.1 > extfile.cnf

6.openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem \

-CAcreateserial -out server-cert.pem -extfile extfile.cnf

7.openssl genrsa -out key.pem 4096

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

9.echo extendedKeyUsage = clientAuth > extfile.cnf

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

11.rm -v client.csr server.csr

12.chmod -v 0400 ca-key.pem key.pem server-key.pem

13.chmod -v 0444 ca.pem server-cert.pem cert.pem

测试证书是否正常

1.dockerd --tlsverify --tlscacert=ca.pem --tlscert=server-cert.pem --tlskey=server-key.pem \ -H=0.0.0.0:2376

2.docker --tlsverify --tlscacert=ca.pem --tlscert=cert.pem --tlskey=key.pem \ -H=$HOST:2376 version

Docker配置证书

1. cp -v {ca,cert,key}.pem /etc/docker/

2. vi /usr/lib/systemd/system/docker.service

3. ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2376 -H unix://var/run/docker.sock \

--tlsverify --tlscacert=/etc/docker/ca.pem \

--tlscert=/etc/docker/server-cert.pem \

--tlskey=/etc/docker/server-key.pem

4.将证书拷贝到client服务器  测试连接是否正常

curl https://master:2376/images/json \

  --cert /etc/docker/cert.pem \

  --key /etc/docker/key.pem \

  --cacert /etc/docker/ca.pem

就这样Docker TLS连接就这样配置好了

相关推荐