首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Tomcat 9中配置SSL连接器引发NullPointerException

在Tomcat 9中配置SSL连接器引发NullPointerException
EN

Stack Overflow用户
提问于 2018-01-05 17:34:58
回答 1查看 3.8K关注 0票数 1

虽然我可以在localhost:8080上看到Tomcat的splash页面,但我在获得JSSE连接器工作时遇到了问题。我在Ubuntu16.04的JDK 9.0.1上使用Tomcat 9.0.2。

我的连接器是:

代码语言:javascript
复制
<Connector port="8443"
           protocol="org.apache.coyote.http11.Http11NioProtocol"
           sslImplementationName="org.apache.tomcat.util.net.jsse.JSSEImplementation"
           maxThreads="150"
           SSLEnabled="true"
           scheme="https"
           secure="true" >
    <SSLHostConfig>
        <Certificate certificateKeystoreFile="../.keystore"
                     certificateKeystorePassword="changeit"
                     certificateKeyAlias="tomcat"
                     type="RSA" />
    </SSLHostConfig>
</Connector>

但是,当我在浏览器上转到localhost:8443时,我会看到以下内容:

在Firefox上:“连接被重置。到服务器的连接在页面加载时被重置。”

在铬上:“这个页面不工作。本地主机没有发送任何数据。ERR_EMPTY_RESPONSE。”

我看到keystore文件被正确读取了。当我这么做时:

代码语言:javascript
复制
openssl s_client -debug -connect localhost:8443

输出如下:

代码语言:javascript
复制
CONNECTED(00000003)
write to 0xb9f0b0 [0xb9fdb0] (305 bytes => 305 (0x131))
...
depth=0 C = EC, ST = mystate, L = mycity, O = myorg, OU = myou, CN = my name
verify error:num=18:self signed certificate
verify return:1
depth=0 C = EC, ST = mystate, L = mycity, O = myorg, OU = myou, CN = my name
verify return:1
...
Certificate chain
 0 s:/C=EC/ST=mystate/L=mycity/O=myorg/OU=myou/CN=my name
   i:/C=EC/ST=mystate/L=mycity/O=myorg/OU=myou/CN=my name
---
Server certificate
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
subject=/C=EC/ST=mystate/L=mycity/O=myorg/OU=myou/CN=my name
issuer=/C=EC/ST=mystate/L=mycity/O=myorg/OU=myou/CN=my name
---
No client certificate CA names sent
Peer signing digest: SHA512
Server Temp Key: ECDH, P-256, 256 bits
---
SSL handshake has read 1353 bytes and written 431 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-GCM-SHA384
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-AES256-GCM-SHA384
    Session-ID: 65D77EF99F8E4E7D145ABC005CCBFAA283533280995D7203A0220A6C1D11B9D4
    Session-ID-ctx: 
    Master-Key: 5B2734E8A9EC21DE0090F2AC288A3D6E872FB292455B6F9FF84963D77F745D2E2E627D2A4358AE4A65F89B8EA123571A
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1515167322
    Timeout   : 300 (sec)
    Verify return code: 18 (self signed certificate)

catalina.out日志文件中,我发现每当我试图通过浏览器本地主机:8443访问时,就会发生NPE:

代码语言:javascript
复制
05-Jan-2018 08:48:06.848 SEVERE [https-jsse-nio-8443-exec-1] org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun
 java.lang.NullPointerException
        at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLEngine(AbstractJsseEndpoint.java:180)
        at org.apache.tomcat.util.net.SecureNioChannel.processSNI(SecureNioChannel.java:325)
        at org.apache.tomcat.util.net.SecureNioChannel.handshake(SecureNioChannel.java:175)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1353)
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.base/java.lang.Thread.run(Thread.java:844)

此异常重复10次,其中唯一不同的重复重复是第一行中的子字符串"exec-“,其中的数字从1到10 (在上面的示例中是1)。

为什么doRun方法抛出NPE对我来说是个谜。我尝试过许多配置组合,但都没有效果。怎么了?

EN

Stack Overflow用户

回答已采纳

发布于 2018-01-05 20:51:22

这个问题已由bug.cgi?id=61914解决,并将在Tomcat 9.0.3+中解决。

o.a.t.util.net.AbstractJsseEndpoint.createSSLEngine()第180行中添加了一个空检查,以便在使用Java9时纠正潜在的NPE。

票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48118559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档