最近在弄docker swarm tls证书的更新规则,网上查了一通,大都是对官方manual的一个转述,还是不理解其更新规则。
下面是我的测试结果
docker daemon version: 19.03.11
- docker swarm init --cert-expiry <value>
结果:
- 更改了Expiry Duration的值
- 对证书本身的有效期不影响(Not Before, Not After),还是缺省3个月
- 对证书rotate周期不影响,还是缺省3个月
- docker swarm update --cert-expiry <value>
结果:
- 更改了Expiry Duration的值
- 对证书本身的有效期不影响(Not Before, Not After),还是缺省3个月
- 对证书rotate周期不影响,还是缺省3个月
(docker swarm update --cert-expiry和docker swarm init --cert-expiry的结果是一样的)
- docker swarm ca --rotate
结果:
- 当场重签新的证书
- 不会改变Expiry Duration的值
- 对证书本身的有效期不影响(Not Before, Not After),还是缺省3个月
- 对证书rotate周期不影响,还是缺省3个月
- docker swarm ca --rotate --cert-expiry <value>
结果:
- 当场重签新的证书
- 改变Expiry Duration的值,根据<value>来定
- 修改证书的有效期(Not Before, Not After),根据<value>来定
- 更改证书rotate周期,与<value>有关,但是怎么个关系不清楚。
两点疑问,往有经验的专家指示?
- docker swarm update --cert-expiry和docker swarm init --cert-expiry貌似只是修改了Expiry Duration的值,但这个值并没有任何用处,也就是说证书的renew周期并不根据这个Expiry Duration值来工作。
这个这两个命令本身的manual文档不一致。 - 影响证书renew周期的只有命令docker swarm ca --rotate --cert-expiry,但事实上这个命令同时修改了Expiry Duration和证书本身的有效期,这里就不明确renew到底是由于Expiry Duration起作用,还是证书本身的有效期起作用;而且也无法明确具体renew的时间点,即假设设置--cert-expiry=5h,那么具体在哪一个时间点去renew呢,是在第5个小时,还是在4个小时,还是在第三个小时呢?根据测试的结果,这个renew的时间点非常随意,而且每个周期都不固定。
请大佬赐教,谢!
网友评论