【问题标题】:Docker TLS - How to create key on local machineDocker TLS - 如何在本地机器上创建密钥
【发布时间】:2020-02-12 14:10:28
【问题描述】:

前置知识:

所以我自己开始使用 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.pemcert.pemkey.pem,并使用它们从我的本地 portainer 实例进行连接。 (实际上我只使用了 cert.pemkey.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

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


对不起,如果这是常识,我只是无法在任何地方找到我的答案,或者我不知道我到底在寻找什么......

【问题讨论】:

    标签: docker ssl openssl


    【解决方案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 路身份验证,您将需要访问私钥。没有就做不到。

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

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

    【讨论】:

      猜你喜欢
      • 2019-01-14
      • 1970-01-01
      • 2014-04-20
      • 1970-01-01
      • 2015-07-14
      • 2021-11-14
      • 1970-01-01
      • 2019-03-27
      • 2023-03-31
      相关资源
      最近更新 更多