Docker TLS-如何在本地计算机上创建密钥

时间:2020-02-12 14:10:28

标签: docker ssl openssl

先验知识:

因此,我开始自己使用docker并将其安装在服务器上并启用了TLS。我遵循了本教程:https://docs.docker.com/engine/security/https/

本教程最终将为您提供6个文件:

  1. -r -------- ca-key.pem
  2. -r--r--r-- ca.pem
  3. -r--r--r-- cert.pem
  4. -r -------- key.pem
  5. -r--r--r-- server-cert.pem
  6. -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,而我将无法访问它。

我可以下载下一个文件:

  1. ca.pem
  2. cert.pem
  3. server-cert.pem

对我来说这是可能的;可以访问那些文件,而不更改服务器上的任何内容,以通过TLS访问Docker?如何创建自己的 key.pem ,或者还有另一种方法?


很抱歉,如果这是常识,我只是在任何地方都找不到答案,或者我不知道自己到底在搜索什么...

2 个答案:

答案 0 :(得分:2)

是的,您可以在该服务器上使用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上运行的容器。

答案 1 :(得分:1)

私人密钥创建证书,您不能通过证书创建密钥。如果您的码头工人需要双向身份验证,则需要访问私钥。没有它就做不到。

您将需要以下文件(用于客户端-服务器身份验证):

  1. ca.pem
  2. cert.pem
  3. key.pem