Docker算是这几年来最火的linux程序都不为过,博主个人对其的定位就是虚拟机,轻量,方便,快捷。对于有着Docker集群管理需求的用户来说,swarm或许是个不错的选择,但是对于个人用户来说就没必要这么折腾。利用好Docker自带的API接口,配合SSL验证与加密使用Protainer面板,我们一样可以安全便捷创建属于自己的小集群。

本文主要提供SSL证书制作与服务配置的教程,不包含Docker安装,Protainer面板安装等前期工作的基础教程。(太简单了,百度一搜一大坨,自己动动手呗。)

1. 使用openssl 制作证书密钥(在被控端)

1.1. 在服务器中新建目录/etc/docker,并切换到该目录下

mkdir /etc/docker && cd /etc/docker

1.2. 创建根证书RSA私钥:

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

此处会提示输入证书密码,一共需要输入两次,请根据实际情况设置密码,设置成功后目录下生成ca-key.pem密钥文件

1.3. 创建CA证书

openssl req -new -x509 -days 1000 -key ca-key.pem -sha256 -subj "/CN=*" -out ca.pem

以上一步生成的ca-key.pem秘钥创建证书,这里是自己作为ca机构,自己给自己签发证书,也可以从第三方ca机构服务商处签发证书。

注意: 如果你想同时启用客户端与服务端验证,请将 -subj "/CN=*"中的星号更改为你被控端机器的ip地址或者是域名!

1.4. 创建服务端私钥

openssl genrsa -out server-key.pem 4096

此处生成server-key.pem密钥(服务端私钥)。

1.5. 创建服务端签名请求证书文件

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

此处生成服务端证书文件server.csr 。

注意: 如果你想同时启用客户端与服务端验证,请将 -subj "/CN=*"中的星号更改为你被控端机器的ip地址或者是域名!

1.6. 创建签名生效的服务端证书文件

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

此处签名后的正式server-cert.pem为签名生效的服务端证书。创建期间要求输入证书密码(之前创建的证书密码)

1.7. 创建客户端私钥

openssl genrsa -out key.pem 4096

此处生成的key.pem文件为客户端私钥,用于客户端远程链接认证

1.8. 创建客户端签名请求证书文件

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

此处生成的为客户端签的证书文件client.csr。

1.9. 创建extfile.cnf的配置文件

echo extendedKeyUsage=clientAuth > extfile.cnf

1.10. 创建签名生效的客户端证书文件

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

此处生成的为客户端证书文件,用于客户端远程链接认证。

1.11. 删除多余文件

rm -rf ca.srl client.csr extfile.cnf server.csr

删除多余文件后,该目录下剩余:
ca.pem CA机构证书
ca-key.pem 根证书RSA私钥
cert.pem 客户端证书
key.pem 客户私钥
server-cert.pem 服务端证书
server-key.pem 服务端私钥

1.12 下载所有证书文件到本地保存

2. 配置Docker支持TSL链接(在被控端)

2.1. 编辑docker.service配置文件

vim /lib/systemd/system/docker.service

找到ExecStart = 开头的一行代码,将其替换为如下内容:

ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375 --tlsverify --tlscacert=/etc/docker/ca.pem --tlscert=/etc/docker/server-cert.pem --tlskey=/etc/docker/server-key.pem

此处指定了ca证书、服务端证书和服务端密钥,端口设置为:2375(docker默认端口)

2.2. 刷新配置,重启Docker

systemctl daemon-reload && systemctl restart docker

3.与Protainer面板对接(在主控端)

3.1添加被控节点

首先进入 Protainer面板,按图中所示选择 Endpoints并点击 Add Endpoint

添加被控节点

之后按照图中要求添加所有信息并分别上传刚刚下载的证书。如果不想开启服务端认证可以选择第四部右边的选项,这样就不用上传被控端的CA证书了。

设置被控节点信息

上传证书的对应关系为:

TLS CA certificate = ca.pem

TLS certificate = crt.pem

TLS key = key.pem

最后点击保存添加节点即可。

3.2 查看被控机是否连接成功

选择Dashboard选项,多刷新几次直至新添加的机器变成绿色的 up即可。

查看连接状态

最后修改:2021 年 02 月 27 日 03 : 25 PM
如果觉得我的文章对你有用,请随意赞赏