Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 时区更改会影响SSL握手吗?_Java_Datetime_Ssl_Timezone_Sslhandshakeexception - Fatal编程技术网

Java 时区更改会影响SSL握手吗?

Java 时区更改会影响SSL握手吗?,java,datetime,ssl,timezone,sslhandshakeexception,Java,Datetime,Ssl,Timezone,Sslhandshakeexception,我面临着一个奇怪的问题(没有任何行动就解决了:-),我只是想知道是否有人知道它是如何发生的 背景: 因此,我的测试服务器有一个逻辑,它使用RESTURL连接到支付网关(第三方),以获取它支持的银行列表。因为它是一个后台连接&常量服务URL,所以我为我的http客户机使用了虚拟信任库(类似于)。我的应用程序正在UTC时区的服务器上运行 问题: 从2016年10月31日的EOD到2016年11月1日的EOD,它就是这样开始的——当访问https REST URL时,它抛出了一个“javax.net.

我面临着一个奇怪的问题(没有任何行动就解决了:-),我只是想知道是否有人知道它是如何发生的

背景:

因此,我的测试服务器有一个逻辑,它使用RESTURL连接到支付网关(第三方),以获取它支持的银行列表。因为它是一个后台连接&常量服务URL,所以我为我的http客户机使用了虚拟信任库(类似于)。我的应用程序正在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&在2016年11月2日,只要重启jvm,一切正常。证书验证/连接没有问题。我发现一个奇怪的事实是java默认时区从
UTC
更改为
America/Los Angeles
。此外,夏令时设置为true(Ok十月结束)

问题:

是否有SSL握手的时区连接?我在环境/代码中没有看到任何其他更改。有人知道这件事吗?
我希望这不会违反问题标准:-)

在正确编写的TLS堆栈中,当前时区并不重要。证书的过期时间与UTC一起存储,因此与时区无关。因此,比较时间也应以UTC为单位。在适当的操作系统上,本地时间也存储在UTC内部,尽管Windows可能是一个例外。因此,如果所有人都使用UTC,时区的更改将不会有问题。当然,仍然可能有人因为使用了依赖于时区的功能而弄乱了这个不错的理论。

在正确编写的TLS堆栈中,当前时区并不重要。证书的过期时间与UTC一起存储,因此与时区无关。因此,比较时间也应以UTC为单位。在适当的操作系统上,本地时间也存储在UTC内部,尽管Windows可能是一个例外。因此,如果所有人都使用UTC,时区的更改将不会有问题。当然,可能还是有人把这个不错的理论搞砸了,因为它使用的功能取决于时区。

Windows也不例外。系统内部时间实际上是UTC。只有BIOS时钟保持在本地时间,这与这个问题无关。您认为SSL/TLS仅依赖UTC是正确的。Windows也不例外。系统内部时间实际上是UTC。只有BIOS时钟保持在本地时间,这与这个问题无关。您认为SSL/TLS仅依赖于UTC是正确的。