具有未来开始日期的Docker Swarm Manager证书:验证根CA证书时出错:x509:证书已过期或尚未生效

时间:2018-08-17 03:18:37

标签: docker certificate x509certificate docker-swarm

我有3个节点要与经理和工作人员一起玩。我的第一个(Debian)我变成了一群管理员:

root@debiancli:~# docker swarm init --advertise-addr 192.168.182.129
Swarm initialized: current node (mkg6ecl3x28uyyqx7gvzz0ja3) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-47h52q7mpdkhbi4dsqyjt7pnjqgvm4oxxfh87k6e2hoj8f4op0-2p1zkg309owyophvk95bw7rj0 192.168.182.129:2377

要将管理员添加到该群集,请运行“ docker swarm join-token manager”并按照说明进行操作。

在我的第二个即将成为节点(CentOS)上,我尝试将其加入集群:

[root@centostraining ~]# docker swarm join --token SWMTKN-1-47h52q7mpdkhbi4dsqyjt7pnjqgvm4oxxfh87k6e2hoj8f4op0-2p1zkg309owyophvk95bw7rj0 192.168.182.129:2377
Error response from daemon: error while validating Root CA Certificate: x509: certificate has expired or is not yet valid

但如上所述,它表示证书无效(日期发行)。我在Debian上检查了日期,就可以了

root@debiancli:~# date
Tue Aug 14 22:02:29 EDT 2018

我也在CentOS中检查了日期:

[root@centostraining ~]# date
Ter Ago 14 22:05:05 -03 2018

现在,我检查了群集管理器的CA证书日期:

root@debiancli:~# docker swarm ca | openssl x509 -noout -text | grep -E "Before|After" 
            Not Before: Aug 15 01:58:00 2018 GMT
            Not After : Aug 10 01:58:00 2038 GMT

那么,很奇怪,我的证书是在生成证书后的第二天开始生成的? 然后在我的未来节点(CentOS)上,如果我更改日期:

[root@centostraining ~]# date +%Y%m%d -s "20180816"
20180816
[root@centostraining ~]# date
Qui Ago 16 00:00:01 -03 2018
[root@centostraining ~]# docker swarm join --token SWMTKN-1-47h52q7mpdkhbi4dsqyjt7pnjqgvm4oxxfh87k6e2hoj8f4op0-2p1zkg309owyophvk95bw7rj0 192.168.182.129:2377
This node joined a swarm as a worker. 

Voilá,现在可以正常运行了。谁能解释为什么我的蜂群证书“在将来”?

1 个答案:

答案 0 :(得分:0)

不再提供Docker的证书。而是,您的时区设置不正确。一方面,您正在显示EDT或-4。在另一个节点上,它显示了相同的本地时间,但时差为-3时区,因此它晚了一个小时。证书的输出为GMT或+0。

您应该使用NTP之类的工具来使时钟保持同步,然后该时钟将显示-3机器在本地时间比其他机器早一小时运行,但是如果您比较相同的时区,则会显示相同的时间。