我正在尝试使用一个地区(例如印度)的 keygen 工具创建一个 ssh 证书来连接另一个地区(例如美国)的服务器。
我给出的证书有效期为 (当前时间) 至 (当前时间 + 2 小时)。例如:证书的有效期为 (26-4-2024 00:30:00) 至 (26-4-2024 2:30:00)(在印度)。
但是我将使用此证书访问美国的服务器。当前印度时间 = 2024 年 4 月 26 日 00:30:00 当前美国时间 = 2024 年 4 月 25 日 03:00:00
证书创建时间与我当前的印度时间仍有 9 小时的差距。如何使用 UTC 创建证书?这将是解决此问题的正确方法。
我按照 keygen 手册页中的方法尝试了。但没有成功。它说时间格式无效。
keygen 中提到的带有 UTC 时区的 cert gen 示例命令手册页。
ssh-keygen -s ca -I 身份字符串 -n 用户名 -V 20100101123000Z:20110101123000Z client.pub
回复:
自时间“20100101123000Z”起无效
有人能帮忙吗?
答案1
证书的有效期以 UTC/GMT 时间计算:
$ echo ""|openssl s_client -connect www.google.com:443|&openssl x509 -noout -subject -issuer -dates
subject=CN=www.google.com
issuer=C=US, O=Google Trust Services LLC, CN=GTS CA 1C3
notBefore=Apr 8 07:33:48 2024 GMT
notAfter=Jul 1 07:33:47 2024 GMT
这意味着它将独立于端点的时区工作,因为有效性将使用 UTC 时间进行检查。您不必担心这一点。我认为该问题是由其他原因引起的。
要了解证书不受信任的原因,您需要检查客户端和服务器日志。进行网络捕获并搜索TLS 警报错误消息。例如 certificate_expired、bad_certificate、certificate_unknown 等。对于网络捕获,请使用 tcpdump、dumpcap,然后使用 WireShark 进行分析。