如何处理从一个区域到另一个区域的基于 ssh 证书的身份验证以及证书有效期?

如何处理从一个区域到另一个区域的基于 ssh 证书的身份验证以及证书有效期?

我正在尝试使用一个地区(例如印度)的 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 进行分析。

相关内容