Я использовал tomcat 7 для своего проекта в течение нескольких месяцев. И теперь я хочу перейти на tomcat 8.5, но тот же параметр (server.xml) для tomcat 7 не работает для 8.5.
Я нашел пример конфигурации в server.xml и в https://tomcat.apache.org/tomcat-8.5-doc/ssl-howto.html, но он не работает для меня.
- когда я использовал тот же тег tomcat 7, нет ошибок или исключений, но в консоли eclipse появляется сообщение: «Сертификат [C: /.../ 192.168.0.100.crt] или его закрытый ключ [C: /.../192.168.0.100.key.nopass] не удалось обработать с помощью диспетчера ключей JSSE, и он будет передан непосредственно OpenSSL ", и я не могу получить доступ к своему веб-приложению через браузер.
- затем я изменил настройку tomcat 8.5, при запуске сервера есть IOException. ниже приведено сообщение об исключении:
org.apache.catalina.LifecycleException: не удалось инициализировать
компонент [Соединитель [org.apache.coyote.http11.Http11AprProtocol-8088]]
в
org.apache.catalina.util.LifecycleBase.init (LifecycleBase.java:112)
в
org.apache.catalina.core.StandardService.initInternal (StandardService.java:552)
в
org.apache.catalina.util.LifecycleBase.init (LifecycleBase.java:107)
в
org.apache.catalina.core.StandardServer.initInternal (StandardServer.java:875)
в
org.apache.catalina.util.LifecycleBase.init (LifecycleBase.java:107)
в org.apache.catalina.startup.Catalina.load (Catalina.java:639) в
org.apache.catalina.startup.Catalina.load (Catalina.java:662) в
sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) в
sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
в
sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
в java.lang.reflect.Method.invoke (Method.java:498) в
org.apache.catalina.startup.Bootstrap.load (Bootstrap.java:309) в
org.apache.catalina.startup.Bootstrap.main (Bootstrap.java:492) вызвано
by: org.apache.catalina.LifecycleException: обработчик протокола
инициализация не удалась при
org.apache.catalina.connector.Connector.initInternal (Connector.java:995)
в
org.apache.catalina.util.LifecycleBase.init (LifecycleBase.java:107)
... еще 12 причин: java.lang.IllegalArgumentException at
org.apache.tomcat.util.net.AprEndpoint.createSSLContext (AprEndpoint.java:404)
в org.apache.tomcat.util.net.AprEndpoint.bind (AprEndpoint.java:368)
в
org.apache.tomcat.util.net.AbstractEndpoint.init (AbstractEndpoint.java:1105)
в org.apache.coyote.AbstractProtocol.init (AbstractProtocol.java:581)
в
org.apache.coyote.http11.AbstractHttp11Protocol.init (AbstractHttp11Protocol.java:68)
в
org.apache.catalina.connector.Connector.initInternal (Connector.java:993)
... еще 13 Причины: java.io.IOException at
org.apache.tomcat.util.net.SSLUtilBase.getKeyManagers (SSLUtilBase.java:291)
в
org.apache.tomcat.util.net.openssl.OpenSSLUtil.getKeyManagers (OpenSSLUtil.java:104)
в
org.apache.tomcat.util.net.SSLUtilBase.createSSLContext (SSLUtilBase.java:239)
в
org.apache.tomcat.util.net.AprEndpoint.createSSLContext (AprEndpoint.java:402)
... еще 18
А это тег коннектора в файле server.xml tomcat 7:
<Connector
SSLCertificateFile="C:/.../192.168.0.100.crt"
SSLCertificateKeyFile="C:/.../192.168.0.100.key.nopass"
SSLEnabled="true"
SSLVerifyClient="optional"
URIEncoding="UTF-8" maxThreads="200" parseBodyMethods="POST,PUT" port="8088"
protocol="org.apache.coyote.http11.Http11AprProtocol"
scheme="https" secure="true" SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"/>
а это кот 8.5. (У меня нет именованного хоста, поэтому «hostName» не является реальным. Я ввел имя, потому что tomcat требует один.)
<Connector port="8088" protocol="org.apache.coyote.http11.Http11AprProtocol"
maxThreads="200" SSLEnabled="true" SSLVerifyClient="optional"
URIEncoding="UTF-8" parseBodyMethods="POST,PUT" scheme="https" secure="true">
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
<SSLHostConfig hostName="aaa.bbb.com">
<Certificate certificateKeyFile="C:/.../192.168.0.100.key.nopass"
certificateFile="C:/.../192.168.0.100.crt"
SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"
type="RSA"/>
</SSLHostConfig>
</Connector>