Loading

Docker实战(三) —— 使用TLS保护Docker远程端口

>>Docker实战系列<<


🍕生成服务端证书

创建或者进入到你想要保存证书的目录中,例如我创建的是 /usr/app/docker/tls 并在目录中执行以下命令生成ca-key.pem文件

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

自定义输入证书密码并 妥善保存 自己的密码 例如我的密码是随机生成的 MmwATEegvU9aBxHX

接着执行以下命令生成ca文件

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

输入密码 然后依次输入国家 例如CN 省例如是Shanghai 市Shanghai 组织名称 组织单位 姓名或服务器名 邮件地址 都可以随意填写

#生成server-key.pem
openssl genrsa -out server-key.pem 4096
#将 192.168.242.147 替换为你的服务器IP
openssl req -subj "/CN=192.168.242.147" -sha256 -new -key server-key.pem -out server.csr
#将 192.168.242.147 替换为你的服务器IP 并指定允许连接的IP地址
echo subjectAltName = DNS:192.168.242.147,IP:192.168.242.147,IP:0.0.0.0 >> extfile.cnf
#仅用于服务器身份验证
echo extendedKeyUsage = serverAuth >> extfile.cnf
#生成签名证书
openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem \
  -CAcreateserial -out server-cert.pem -extfile extfile.cnf

🍔生成客户端证书

openssl genrsa -out key.pem 4096
openssl req -subj '/CN=client' -new -key key.pem -out client.csr
#客户端身份验证
echo extendedKeyUsage = clientAuth > extfile-client.cnf
#生成签名证书
openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem \
  -CAcreateserial -out cert.pem -extfile extfile-client.cnf

🍟后续操作

#您可以安全地删除两个证书签名和扩展配置文件
rm -v client.csr server.csr extfile.cnf extfile-client.cnf
#保护您的钥匙以免损坏 删除其写权限
chmod -v 0400 ca-key.pem key.pem server-key.pem
chmod -v 0444 ca.pem server-cert.pem cert.pem

🌭开启Docker远程端口

#停止Docker
systemctl stop docker
#修改Docker配置文件
vi /usr/lib/systemd/system/docker.service
#找到 ExecStart= 开头的配置 在行位追加以下配置( /usr/app/docker/tls 要换成你的证书目录)
-H unix://var/run/docker.sock -H tcp://0.0.0.0:2376 --tlsverify --tlscacert=/usr/app/docker/tls/ca.pem --tlscert=/usr/app/docker/tls/server-cert.pem --tlskey=/usr/app/docker/tls/server-key.pem


保存后重载配置 重新启动Docker

systemctl daemon-reload
systemctl restart docker.service 

🍿使用IDEA连接Docker

ca.pem cert.pem key.pem 下载到本地 如我的是Windows的 G:\docker\tls 目录

打开IDEA的设置 并搜索Docker

点击 + 号输入对应内容

连接成功

🧂参考文档:

Use TLS (HTTPS) to protect the Docker daemon socket

posted @ 2021-05-27 14:32  niaucz  阅读(299)  评论(0编辑  收藏  举报