ubuntu - 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)
我一直在无休止地搜索此错误消息,我确信这是我错过的一些愚蠢的东西,但对于我的生活,我无法弄清楚......
任何人都可以为我提供帮助吗?让我知道我是否可以/应该发布更多详细信息?
解决方案
推荐阅读
- java - 在 Java 中使用城市名称获取本地时区
- c# - 从我的控制器外部的类返回状态代码
- javascript - 如何为混合类型图表设置固定范围的数据
- python-3.7 - 如何在 Python 中的 file.txt 上从句子或数据训练中制作 unigram、bigram、trigram 模型?
- java - Hive 速度流 - 反应式 Java 或 Kafka 流
- laravel-5 - 如何在 Laravel 中存储对象数据
- safari - 启用 Safari 应用扩展后打开新标签页
- java - 如何在 Java 中打印不同的参数多态方法?
- r - 在 R markdown Knitr HTML 输出中更改绘图大小以使所有内容可见时如何保持比率?
- google-analytics - 将增强的电子商务指标添加到查询中