【问题标题】:Will Timezone Change affect SSL Handshakes?时区更改会影响 SSL 握手吗?
【发布时间】:2017-03-15 07:48:12
【问题描述】:

我遇到了一个奇怪的问题(无需任何操作即可解决 :-)),只是想知道是否有人知道它是如何发生的。

背景:

所以我的测试服务器有一个逻辑,它使用 REST URL 连接到支付网关(第三方)以获取它支持的银行列表。由于它是一个后台连接和恒定服务 URL,我为我的 http 客户端使用了虚拟信任库(类似于 this)。我的应用程序在具有 UTC 时区的服务器上运行。

问题:

从 2016 年 10 月 31 日 EOD 到 2016 年 11 月 1 日 EOD,这就是它的开始方式——访问 https REST URL 时,它会引发“javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated”异常。 java版本是open-jdk-1.7.0.09 &我在不同的服务器上尝试了相同的配置,情况是一样的。当我在一台服务器中将 java 更新为 1.7.0.101 时,它开始工作。我今天把问题留给了 cehck 在Nov 2, 2016 上,只需重启 jvm 一切正常。证书验证/连接没有问题。我发现一个奇怪的事实是 java 默认时区从 UTC 更改为 America/Los Angeles。此外,夏令时设置为 true(Ok 十月已结束)。

问题:

时区是否与 SSL 握手有任何连接?我没有看到环境/代码有任何其他变化。有人知道吗? 我希望这不违反问题标准:-)

【问题讨论】:

    标签: java datetime ssl timezone sslhandshakeexception


    【解决方案1】:

    在正确编写的 TLS 堆栈中,当前时区无关紧要。证书的到期时间与 UTC 一起存储,因此与时区无关。因此,比较时间也应该是 UTC。在适当的操作系统上,本地时间也在内部存储在 UTC 中,尽管 Windows 在这里可能是一个例外。因此,如果都使用 UTC,则时区的更改将没有问题。当然,也有可能是有人根据时区使用功能,搞砸了这个不错的理论。

    【讨论】:

    • Windows 也不例外。内部的系统时间确实是UTC。它只是保持本地时间的BIOS时钟,这与这个问题无关。您是正确的,SSL/TLS 仅依赖于 UTC。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-15
    • 2021-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-02
    相关资源
    最近更新 更多