首页 > 解决方案 > Ubuntu 上的 Tomcat SSL 配置

问题描述

我苦苦挣扎了几天,决定来这里向专家寻求帮助。我目前有一个全新安装的 Ubuntu 18.04,我正在尝试让 Tomcat 9.0.30 在 SSL 上运行。

到目前为止,我的安装过程主要遵循此 URL,然后添加所需的 SSL 配置: https ://linuxize.com/post/how-to-install-tomcat-9-on-ubuntu-18-04/

我可以让 Tomcat 页面显示正常 HTTP 没有问题,我可以毫无问题地访问和管理 Tomcat 实例。唯一的问题是使 HTTPS 连接正常工作。我当前的 server.xml 文件配置如下(默认值除外);

    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="9443" />

    <Connector  port="9443"
                protocol="org.apache.coyote.http11.Http11NioProtocol"
                maxThreads="150"
                SSLEnabled="true"
                scheme="https"
                secure="true"
                clientAuth="false"
                sslProtocol="TLS"
                keystoreFile="/etc/online-intelligence/ssl-certs/ssl.pfx"
                keystoreType="PKCS12"
                keystorePass="password" />

现在,正如我所说,使用此配置,我可以通过 HTTP 连接访问和管理实例,但 HTTPS 连接完全断开。启动实例后,请参见下面从 Catalina.out 文件中提取的内容;

02-Jan-2020 14:53:02.546 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
02-Jan-2020 14:53:02.563 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["https-jsse-nio-9443"]
02-Jan-2020 14:53:02.716 SEVERE [main] org.apache.catalina.util.LifecycleBase.handleSubClassException Failed to initialize component [Connector[HTTP/1.1-9443$
        org.apache.catalina.LifecycleException: Protocol handler initialization failed
                at org.apache.catalina.connector.Connector.initInternal(Connector.java:983)
                at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)
                at org.apache.catalina.core.StandardService.initInternal(StandardService.java:533)
                at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)
                at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:1057)
                at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)
                at org.apache.catalina.startup.Catalina.load(Catalina.java:584)
                at org.apache.catalina.startup.Catalina.load(Catalina.java:607)
                at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
                at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                at java.base/java.lang.reflect.Method.invoke(Method.java:566)
                at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:303)
                at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:473)
        Caused by: java.lang.IllegalArgumentException: Detect premature EOF
                at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:99)
                at org.apache.tomcat.util.net.AbstractJsseEndpoint.initialiseSsl(AbstractJsseEndpoint.java:71)
                at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:217)
                at org.apache.tomcat.util.net.AbstractEndpoint.bindWithCleanup(AbstractEndpoint.java:1141)
                at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:1154)
                at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:575)
                at org.apache.coyote.http11.AbstractHttp11Protocol.init(AbstractHttp11Protocol.java:74)
                at org.apache.catalina.connector.Connector.initInternal(Connector.java:980)
                ... 13 more
        Caused by: java.io.EOFException: Detect premature EOF
                at java.base/sun.security.util.IOUtils.readFully(IOUtils.java:69)
                at java.base/sun.security.util.DerValue.init(DerValue.java:411)
                at java.base/sun.security.util.DerValue.<init>(DerValue.java:331)
                at java.base/sun.security.util.DerValue.<init>(DerValue.java:344)
                at java.base/sun.security.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:1993)
                at java.base/sun.security.util.KeyStoreDelegator.engineLoad(KeyStoreDelegator.java:222)

我一直在无休止地搜索此错误消息,我确信这是我错过的一些愚蠢的东西,但对于我的生活,我无法弄清楚......

任何人都可以为我提供帮助吗?让我知道我是否可以/应该发布更多详细信息?

标签: ubuntussltomcathttps

解决方案


推荐阅读