TLS加密远程连接Docker

这里写自定义目录标题

      • TLS加密远程连接Docker
      • 官方文档
      • 操作流程
        • 1、创建证书保存目录
        • 2、创建CA证书私钥:过程中需要输入并确认密码
        • 3、以此秘钥创建CA证书,自己给自己签发证书,自己就是CA机构,也可以交给第三方机构去签发
        • 4、创建服务端私钥
        • 5、创建服务端证书签名请求文件(csr即certificate signing request,里面包含公钥与服务端信息)
        • 6、配置白名单
        • 7、将Docker守护程序密钥的扩展使用属性设置为仅用于服务器身份验证
        • 8、创建CA证书已签名的服务端证书
        • 9、创建客户端私钥
        • 10、创建客户端证书签名请求文件
        • 11、扩展使用属性设置为仅用于客户端身份验证
        • 12、 创建CA证书已签名好客户端证书
        • 13、设置只读权限和删除多余文件
        • 14、转存Docker 服务端证书
        • 15、修改docker.service配置文件
        • 16、重新加载daemon和重启Docker(执行后不应该有任何信息输出,否则就是存在问题)
      • idea 连接配置
      • 1、下载证书到本地(可以下载整个ca文件,实际用到的是ca.pem、server-cert.pem、server-key.pem)
        • 2、配置连接

TLS加密远程连接Docker

简单的配置下可以达到开放外部连接的效果,但无法保证安全(其他人可以随意连接甚至入侵你的服务器),下面描述使用CA证书加密的一种方式

官方文档

https://docs.docker.com/engine/security/protect-access/

操作流程

1、创建证书保存目录
mkdir /ca && cd /ca
2、创建CA证书私钥:过程中需要输入并确认密码
openssl genrsa -aes256 -out ca-key.pem 4096
3、以此秘钥创建CA证书,自己给自己签发证书,自己就是CA机构,也可以交给第三方机构去签发
openssl req -new -x509 -days 1000 -key ca-key.pem -sha256 -subj "/CN=*" -out ca.pem
4、创建服务端私钥
openssl genrsa -out server-key.pem 4096
5、创建服务端证书签名请求文件(csr即certificate signing request,里面包含公钥与服务端信息)
openssl req -subj "/CN=${服务器IP/域名}" -sha256 -new -key server-key.pem -out server.csr
6、配置白名单
echo subjectAltName = IP:${服务器I},IP:0.0.0.0 >> extfile.cnf
7、将Docker守护程序密钥的扩展使用属性设置为仅用于服务器身份验证
echo extendedKeyUsage = serverAuth >> extfile.cnf
8、创建CA证书已签名的服务端证书
openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem \-CAcreateserial -out server-cert.pem -extfile extfile.cnf
9、创建客户端私钥
openssl genrsa -out key.pem 4096
10、创建客户端证书签名请求文件
openssl req -subj "/CN=client" -new -key key.pem -out client.csr
11、扩展使用属性设置为仅用于客户端身份验证
echo extendedKeyUsage = clientAuth >> extfile.cnf
12、 创建CA证书已签名好客户端证书
openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem \-CAcreateserial -out cert.pem -extfile extfile.cnf
13、设置只读权限和删除多余文件
rm -rf ca.srl client.csr extfile.cnf server.csr
chmod -v 0400 ca-key.pem key.pem server-key.pem
chmod -v 0444 ca.pem server-cert.pem cert.pem
文件名 作用
ca.pem CA机构证书
ca-key.pem 根证书RSA私钥
cert.pem 客户端证书
key.pem 客户私钥
server-cert.pem 服务端证书
server-key.pem 服务端私钥
14、转存Docker 服务端证书
cp server-*.pem  /etc/docker/ && cp ca.pem /etc/docker/
15、修改docker.service配置文件
vim /lib/systemd/system/docker.service 

将原本内容(注释部分)修改为下面内容
在这里插入图片描述

ExecStart=/usr/bin/dockerd-current --tlsverify --tlscacert=/root/work/ca.pem --tlscert=/root/work/server-cert.pem --tlskey=/root/work/server-key.pem -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock \
16、重新加载daemon和重启Docker(执行后不应该有任何信息输出,否则就是存在问题)

在这里插入图片描述

systemctl daemon-reload && systemctl restart docker

idea 连接配置

1、下载证书到本地(可以下载整个ca文件,实际用到的是ca.pem、server-cert.pem、server-key.pem)

2、配置连接

TLS加密远程连接Docker_第1张图片

你可能感兴趣的:(问题解决,分享,Linux运维,docker,容器,运维)