我有Tomcat 9.0.12和Java JDK / JRE 1.8.0_191。我正在尝试配置SSL / TLS。我已经这样更改了server.xml文件:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="443" />
<Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="C:\my_certificate.pfx"
keystorePass="my_password" keystoreType="PKCS12" />
我的证书文件是* .pfx格式。我使用startup.bat命令通过命令行运行tomcat服务器。但是我在我的catalina.log中遇到了这样的错误:
...
05-Nov-2018 16:33:57.080 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
05-Nov-2018 16:33:57.190 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
05-Nov-2018 16:33:57.205 SEVERE [main] org.apache.catalina.util.LifecycleBase.handleSubClassException Failed to initialize component [Connector[org.apache.coyote.http11.Http11Protocol-443]]
org.apache.catalina.LifecycleException: Protocol handler instantiation failed
at org.apache.catalina.connector.Connector.initInternal(Connector.java:904)
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:852)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)
at org.apache.catalina.startup.Catalina.load(Catalina.java:633)
at org.apache.catalina.startup.Catalina.load(Catalina.java:656)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:306)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:491)
...
当我尝试连接http://localhost:443时,我得到了ERR_CONNECTION_REFUSED,该信息已添加到下面。
ERR_CONNECTION_REFUSED:
答案 0 :(得分:1)
在 Tomcat 9.0.x 中,通过更新 Connector 元素中的 protocol 属性值来摆脱以下例外情况em> server.xml 文件。
例外:
27-Mar-2020 08:06:45.726 SEVERE [main] org.apache.catalina.util.LifecycleBase.handleSubClassException Failed to initialize component [Connector[org.apache.coyote.http11.Http11Protocol-auto-null]]
org.apache.catalina.LifecycleException: Protocol handler instantiation failed
27-Mar-2020 08:06:44.929 SEVERE [main] org.apache.catalina.connector.Connector.<init> Protocol handler instantiation failed
java.lang.ClassNotFoundException: org.apache.coyote.http11.Http11Protocol
异常语法:
<Connector port="9443"
protocol="org.apache.coyote.http11.Http11Protocol"
maxThreads="200"
SSLEnabled="true"
scheme="https"
secure="true"
clientAuth="want"
sslProtocol="TLS"
connectionTimeout="20000"
keystoreFile="D:\\MYAPP\\DINESH_LOMTE\\dlomte_keystore.jks"
keystorePass="cardinal"
keystoreType="JKS"
truststoreFile="D:\\MYAPP\\DINESH_LOMTE\\dlomte_truststore.jks"
truststorePass="cardinal"
truststoreType="JKS"
/>
在上述 Connector 元素语法中,更新 protocol 属性值
来自
protocol="org.apache.coyote.http11.Http11Protocol"
收件人
protocol="org.apache.coyote.http11.Http11NioProtocol"
注意:为了使用显式协议而不是依靠自动切换机制,可以使用以下值之一,请根据需要进行选择
org.apache.coyote.http11.Http11NioProtocol - non blocking Java NIO connector
org.apache.coyote.http11.Http11Nio2Protocol - non blocking Java NIO2 connector
org.apache.coyote.http11.Http11AprProtocol - the APR/native connector.
答案 1 :(得分:0)
我有同样的问题。 它开始初始化非io-blocking连接器
05-Nov-2018 16:33:57.080 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
但是您的配置建议使用io阻止连接器
Http11Protocol
因此,也许您会尝试使用其他连接器。就我而言,将Http11Protocol
更改为Http11NioProtocol
可以解决此错误。