Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.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 NIO SSO处理器中的空指针_Java_Ssl_Https_Gitblit_Adoptopenjdk - Fatal编程技术网

java NIO SSO处理器中的空指针

java NIO SSO处理器中的空指针,java,ssl,https,gitblit,adoptopenjdk,Java,Ssl,Https,Gitblit,Adoptopenjdk,尝试在tomcat 9上使用JDK 11运行gitblit偶尔会导致以下堆栈跟踪: gitblit | 07-May-2020 04:30:39.247 SEVERE [https-jsse-nio-8443-exec-10] org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun Error running socket processor gitblit | java.lang.NullPointerExce

尝试在tomcat 9上使用JDK 11运行gitblit偶尔会导致以下堆栈跟踪:

gitblit    | 07-May-2020 04:30:39.247 SEVERE [https-jsse-nio-8443-exec-10] org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun Error running socket processor
gitblit    |    java.lang.NullPointerException
gitblit    |            at java.base/sun.security.ssl.HKDF.extract(HKDF.java:93)
gitblit    |            at java.base/sun.security.ssl.HKDF.extract(HKDF.java:119)
gitblit    |            at java.base/sun.security.ssl.ServerHello.setUpPskKD(ServerHello.java:1167)
gitblit    |            at java.base/sun.security.ssl.ServerHello$T13ServerHelloProducer.produce(ServerHello.java:545)
gitblit    |            at java.base/sun.security.ssl.SSLHandshake.produce(SSLHandshake.java:436)
gitblit    |            at java.base/sun.security.ssl.ClientHello$T13ClientHelloConsumer.goServerHello(ClientHello.java:1234)
gitblit    |            at java.base/sun.security.ssl.ClientHello$T13ClientHelloConsumer.consume(ClientHello.java:1170)
gitblit    |            at java.base/sun.security.ssl.ClientHello$ClientHelloConsumer.onClientHello(ClientHello.java:852)
gitblit    |            at java.base/sun.security.ssl.ClientHello$ClientHelloConsumer.consume(ClientHello.java:813)
gitblit    |            at java.base/sun.security.ssl.SSLHandshake.consume(SSLHandshake.java:392)
gitblit    |            at java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:444)
gitblit    |            at java.base/sun.security.ssl.SSLEngineImpl$DelegatedTask$DelegatedAction.run(SSLEngineImpl.java:1061)
gitblit    |            at java.base/sun.security.ssl.SSLEngineImpl$DelegatedTask$DelegatedAction.run(SSLEngineImpl.java:1048)
gitblit    |            at java.base/java.security.AccessController.doPrivileged(Native Method)
gitblit    |            at java.base/sun.security.ssl.SSLEngineImpl$DelegatedTask.run(SSLEngineImpl.java:995)
gitblit    |            at org.apache.tomcat.util.net.SecureNioChannel.tasks(SecureNioChannel.java:443)
gitblit    |            at org.apache.tomcat.util.net.SecureNioChannel.handshakeUnwrap(SecureNioChannel.java:507)
gitblit    |            at org.apache.tomcat.util.net.SecureNioChannel.handshake(SecureNioChannel.java:238)
gitblit    |            at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1616)
gitblit    |            at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
gitblit    |            at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
gitblit    |            at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
gitblit    |            at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
gitblit    |            at java.base/java.lang.Thread.run(Thread.java:834)
当客户端试图从gitblit GUI中提取文件时

可能有意思的是,在我更新到JDF的11.0.7版本之前,我看到了以下错误:

Where修复了此处可选项的错误使用:但可能实际上没有解决根本问题

或者关于是什么触发了这个错误的其他想法?我用的是自签名证书,仅供参考。客户端是Firefox,java版本是

openjdk版本“11.0.7”2020-04-14 OpenJDK运行时环境采用OpenJDK(构建11.0.7+10) OpenJDK 64位服务器VM采用OpenJDK(构建11.0.7+10,混合模式)

在alpine linux docker系统中运行

查找gitblit偶尔出现1分钟超时的问题,并在日志中查找此问题。不确定是否相关,或是否

看起来它也在tomcat中被发现,并在这里报道


由于我无法提供有关openjdk错误跟踪程序的信息,因此我可以告诉您,通常导致我出现错误的客户端是linux上的Firefox 75。

正如您提供的错误跟踪程序参考文件所指出的,这是一个与会话恢复相关的错误

虽然这个答案并不能解决这个bug本身,但是有可能要求SSLEngine不允许恢复特定连接。这会对将来的连接造成性能损失,因为客户端需要为新连接重新握手,而不是利用会话恢复机制

在握手建立后的任何时候,您都可以调用SSLSession。正如文件所指出的:

未来的连接将无法恢复或加入此会话。但是,使用此会话的任何现有连接都可以继续使用该会话,直到连接关闭

这意味着它对当前连接没有影响,但会阻止会话恢复,从而避免JDK错误

我的握手循环片段:

case NOT_HANDSHAKING:
case FINISHED:
{
    if( !sslEngine.getSession().isValid() || sslEngine.getSession().getId().length == 0 )
        throw new SSLHandshakeException("Handshake failed");

    // prevent bug with rejoin session
    sslEngine.getSession().invalidate();

    return;
}

我同意你的观点,OpenJDK bug跟踪器是一个持续的恼怒源。可以得出结论,参与OpenJDK是不受欢迎的。或者这只是Oracle的默认行为?