#9319·certbot

在处理时间区时头部时,重试后处理没有正确/一致地完成

作者: osirisinferi创建于 2022年6月9日更新于 2026年7月22日
标签area: acmepriority: unplannedstale-needs-update

并见https://GitHub.com/certbot/certbot/pul/9275#issuecomment-1094240102.

据我所知 Certbot的Nieve约会时间物体 位于当地的时区 然而,如果[accme.retry after ()'](https://GitHub.com/certbot/certbot/blob/df982b33b905ac9ba77add0df250cd63947f5af0/aclient.py#L195-L224]在 " Retry-after " 信头中将一个时间戳表示为值,那么就我所知,它就将其转换为世界协调时。 [email.utils.parsedate tz ()'](https://docs.ZPython.org/3/library/email.utils.html#email.utils.parsedate tz)以秒数输出从时间戳到协调世界时段的偏移。 此偏移再从信头值中减去,所以结果是UTC中的日期时间. )

Retry-After ' 标题只是整数时,当地时间(使用datetime.now()')用于生成`Retry-After()'的产出。 因此这与上述行为不符.

由于这个错误,位于 > UTC时区的用户在投票权限之间会有负的"睡眠()"秒. I.e.:完全没有拖延。 而位于 < UTC > 时区的用户可能会在UTC等待抵消时间过长.

此外,datetime.timedelta()'的第一个属性是days',而不是seconds',因此,在retry-after ' 值中使用格林尼治平时以外的一个时区时,目前`tz-secs'的值是不正确的。 幸运的是, " Retry-After " 标题( " HTTP-Date " )的规格规定时间戳总是在格林尼治平时,因此这不应是一个问题。 但绝对肯定的是,我们还是解决这个错误吧:略微地 微笑地 面:

之前我做了一个公关(#9276)来修复这两件事:

  • retry after ()' 的返回值始终位于当地时区,因此延迟是在Certbot的其他地方正确计算的; *tz secs'实际上是UTC以秒表示的抵消,而不是误差60-*60-*24倍(即:天).

但是,我已经关闭了所有 开放的公关。 不过欢迎其他人使用密码 复制/复制我从上面的公关的解释 作为一个问题,因为我认为这真的是个错误.

内容来源: certbot/certbot