docker - 具有未来开始日期的 Docker Swarm 管理器证书:验证根 CA 证书时出错:x509:证书已过期或尚未生效
问题描述
我有 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
要将管理器添加到此 swarm,请运行“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
现在,我检查了我的 swarm manager 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.
瞧,它现在按预期工作。谁能解释为什么我的 swarm ca 证书是“未来的”?
解决方案
Docker的证书不在未来。相反,您的时区设置不正确。一方面,您正在显示 EDT,或 -4。而在另一个节点上,它落后了一个小时,因为它显示了相同的本地时间,但在 -3 时区。证书的输出是 GMT 或 +0。
您应该使用 NTP 之类的工具来保持时钟同步,这将显示 -3 机器在本地时间比另一台机器提前一个小时运行,但如果您比较相同的时区,则时间相同。
推荐阅读
- sql - 根据另一个表中的值过滤表的行(Oracle)
- docker - Docker 卷安装问题到已安装的文件夹
- postgresql - 如何在postgresql中分隔逗号分隔值字符串并逐行保存
- c++ - 如何在 C++ 中找到数组的大小?
- deep-learning - 最多使用第 n 个时间步的 RNN (LSTM)
- python - 如果单词在 Python 的两列中,则从两列中删除列表中的单词
- php - 如何在 Laravel 中使用 ajax 请求插入 sessionStorage 数据?
- pine-script - 使用带有赋值的布尔值计算透明度时出错?
- contiki - Contiki:如何在不同的 RPL 目标函数之间切换?
- python - 写入 postgresql 数据库表或 csv 文件?哪个更快?