A.1.4 分发密钥
现在已经有了全部的密钥和证书,是时候将他们分发到客户端和daemon节点上了。复制如下文件。
- 从CA复制
ca.pem、daemon-cert.pem,以及daemon-key.pem到node3(daemon节点) - 从CA复制
ca.pem、client-cert.pem,以及client-key.pem到deno1(客户端节点)
下面会介绍如何使用 scp 完成复制操作,读者也可随意选择其他工具使用。
在 node2 (CA节点)密钥所在目录下运行下面的命令。
// Daemon files
$ scp ./ca.pem ubuntu@daemon:/home/ubuntu/.docker/ca.pem
$ scp ./daemon-cert.pem ubuntu@daemon:/home/ubuntu/.docker/cert.pem
$ scp ./daemon-key.pem ubuntu@daemon:/home/ubuntu/.docker/key.pem
//Client files
$ scp ./ca.pem ubuntu@client:/home/ubuntu/.docker/ca.pem
$ scp ./client-cert.pem ubuntu@client:/home/ubuntu/.docker/cert.pem
$ scp ./client-key.pem ubuntu@client:/home/ubuntu/.docker/key.pem
关于命令需要注意以下几点。
(1)第2、3、5以及第6条命令在复制过程中对文件进行了重命名。重命名非常重要,因为Docker对文件的命名规范有规定。
(2)命令假设使用的环境是Ubuntu Linux,并且使用 ubuntu 作为用户账户。
(3)在执行命令前,需要分别在daemon和客户端所在节点上提前创建 /home/ubuntu/.docker 这个隐藏目录。此外还需要修改 .docker 目录的权限,允许复制操作执行。可以使用 chmod 777.docker ,但这种方式并不安全。切记,当前只是为了快速创建一个CA和证书,才可以这么做。在安全的PKI构建中该操作决不允许。
(4)如果当前环境是AWS,需要在每条命令之后通过 -i <key> 来指定实例的私钥。
当前环境如图A.3所示。

node1 和 node3 节点只会信任由其CA公钥签名的CA以及证书。
配置了正确的证书后,就可以开始配置Docker的客户端和daemon使用TLS了。