Tomcat 8.5 с опцией ssl вызывает IOException - PullRequest
0 голосов
/ 17 апреля 2019

Я использовал tomcat 7 для своего проекта в течение нескольких месяцев. И теперь я хочу перейти на tomcat 8.5, но тот же параметр (server.xml) для tomcat 7 не работает для 8.5. Я нашел пример конфигурации в server.xml и в https://tomcat.apache.org/tomcat-8.5-doc/ssl-howto.html, но он не работает для меня.

  1. когда я использовал тот же тег tomcat 7, нет ошибок или исключений, но в консоли eclipse появляется сообщение: «Сертификат [C: /.../ 192.168.0.100.crt] или его закрытый ключ [C: /.../192.168.0.100.key.nopass] не удалось обработать с помощью диспетчера ключей JSSE, и он будет передан непосредственно OpenSSL ", и я не могу получить доступ к своему веб-приложению через браузер.
  2. затем я изменил настройку 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>
...