Docker TLS - 如何在本地机器上创建密钥
Posted
技术标签:
【中文标题】Docker TLS - 如何在本地机器上创建密钥【英文标题】:Docker TLS - How to create key on local machine 【发布时间】:2020-02-12 14:10:28 【问题描述】:前置知识:
所以我自己开始使用 docker 并将其安装在我的服务器上并启用了 TLS。我遵循了这个教程:https://docs.docker.com/engine/security/https/
本教程最终会给你 6 个文件:
-
-r-------- ca-key.pem
-r--r--r-- ca.pem
-r--r--r-- cert.pem
-r-------- key.pem
-r--r--r-- server-cert.pem
-r-------- server-key.pem
这些文件的所有者是 root。我复制了 ca.pem、cert.pem 和 key.pem,并使用它们从我的本地 portainer 实例进行连接。 (实际上我只使用了 cert.pem 和 key.pem 因为我只开启了客户端验证)
DOCKER 主机:
"hosts": [
"unix:///var/run/docker.sock",
"tcp://0.0.0.0:2376"
],
"storage-driver": "overlay2",
"tls": true,
"tlscacert": "/etc/docker/certs/ca.pem",
"tlscert": "/etc/docker/certs/server-cert.pem",
"tlskey": "/etc/docker/certs/server-key.pem",
"tlsverify": true
我的问题:
我工作的公司为我安装了 docker 并启用了 TLS,将所有 pem 文件放在我可以访问的目录中...问题是,我无法下载 密钥。 pem 因为所有者是 root,我无法访问它。
我可以下载下一个文件:
-
ca.pem
cert.pem
server-cert.pem
对我来说是可能的; ONLY 可以访问这些文件,而不更改服务器上的任何内容,以通过 TLS 访问 docker?如何创建自己的 key.pem,或者有其他方法吗?
对不起,如果这是常识,我只是无法在任何地方找到我的答案,或者我不知道我到底在寻找什么......
【问题讨论】:
【参考方案1】:是的,您可以使用该服务器上的 docker-daemon,而无需为该服务器创建另一个密钥和证书。
下载server-cert.pem
并在本地会话中导出以下环境变量:
DOCKER_TLS_VERIFY="1"
DOCKER_CERT_PATH="server-cert.pem"
DOCKER_HOST= "tcp://HOST:2376"
现在您可以使用本地 docker-client 并使用服务器上的 docker-daemon。例如docker ps
应该显示在远程 docker 上运行的容器。
【讨论】:
这是一种 2 路身份验证,所以这不起作用,服务器不会接受。答案如下:“做不到”。服务器管理员创建了一个临时文件夹,我可以在其中下载私钥并在之后将其删除。【参考方案2】:私钥创建证书,您不能从证书创建密钥。如果您的 docker 想要 2 路身份验证,您将需要访问私钥。没有就做不到。
您需要以下文件(用于客户端-服务器身份验证):
-
ca.pem
cert.pem
key.pem
【讨论】:
以上是关于Docker TLS - 如何在本地机器上创建密钥的主要内容,如果未能解决你的问题,请参考以下文章