gpg 过期时间?

gpg 过期时间?

我有一个正在签署的许可证:

gpg --default-sig-expire "2024-02-14" --sign licence

这导致:

$ gpg --verify licence.gpg
gpg: Signature made Tue 13 Feb 2024 08:18:39 AM CET
gpg:                using RSA key 1234567890ABCDEF1234567890ABCDEF
gpg:                issuer "[email protected]"
gpg: Good signature from "Stewart <[email protected]>" [ultimate]
gpg: Signature expires Wed 14 Feb 2024 12:00:00 PM CET

12:00:00 PM CET是我的问题。我通常那个时候去吃午饭。我不想在午餐时接到有关系统离线的电话。可以指定时间吗?我宁愿它过期于13:00:00 PM CET


--ask-sig-expire仅提示您输入天数/周数/年数:

$ gpg --ask-sig-expire --sign licence
Please specify how long the signature should be valid.
         0 = signature does not expire
      <n>  = signature expires in n days
      <n>w = signature expires in n weeks
      <n>m = signature expires in n months
      <n>y = signature expires in n years
Signature is valid for? (0) 

ISO 8601 似乎不受支持:

$ gpg --default-sig-expore "2024-02-14T13:00:00+02:00" --sign licence
gpg: '2024-02-14T13:00:00+02:00' is not a valid signature expiration

man systemd.time规范似乎不受支持

$ gpg --default-sig-expire "2024-02-14 13:00:00" --sign licence
gpg: '2024-02-14 13:00:00' is not a valid signature expiration

手册页也没有表明可能的时间:

--default-sig-expire
       The default expiration time to use for signature expiration. Valid values 
       are "0" for no expiration, a number followed by the letter d (for days), 
       w (for weeks), m (for months), or  y (for years) (for example "2m" for two 
       months, or "5y" for five years), or an absolute date in the form 
       YYYY-MM-DD. Defaults to "0".

我找到的唯一解决方案是将系统的时区更改为我以西的下一个时区,然后签名,然后将系统的时区设置回原来的时间。

$ sudo mv /etc/localtime{,.backup} 
$ sudo ln -s /usr/share/zoneinfo/Europe/London /etc/localtime
$ gpg --default-sig-expire "2024-02-14" --sign licence
$ sudo mv /etc/localtime{.backup,}
$ gpg --verify licence.gpg
gpg: Signature made Tue 13 Feb 2024 08:18:39 AM CET
gpg:                using RSA key 1234567890ABCDEF1234567890ABCDEF
gpg:                issuer "[email protected]"
gpg: Good signature from "Stewart <[email protected]>" [ultimate]
gpg: Signature expires Wed 14 Feb 2024 01:00:05 PM CET

答案1

--default-sig-expire时间规范接受的唯一格式是YYYYMMddTHHmmss[Z]

gpg --default-sig-expire 20240214T130000 --sign license

任何时区说明符都会被忽略,夏令时也会被忽略;因此目前在欧洲,这会产生比指定时间晚一小时的到期时间。处理时间也会影响签名的最终有效期;例如,如果gpg提示任何内容(例如以确认覆盖现有签名文件),所产生的延迟会推迟到期时间。

要检查这一点,请查找定义--default-sig-expire,然后确定使用解析选项的值parse_expire_string,它知道多种格式。唯一接受绝对时间戳(包括小时、分钟和秒)的是isotime2epoch(及其 64 位time_t变体),并带有注释指定

唯一支持的格式是“yyyymmddThhmmss[Z]”,由空格、nul、冒号或逗号分隔。

相关内容