0

我已经在我的项目中使用了 tomcat 7 几个月了。现在我想迁移到 tomcat 8.5,但是 tomcat 7 的相同设置(server.xml)不适用于 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”,我无法使用浏览器访问我的 web 应用程序。
  2. 然后我更改了tomcat 8.5的设置,启动服务器时出现IOException。以下是异常消息:

org.apache.catalina.LifecycleException:无法在 org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:112) 处初始化组件 [Connector[org.apache.coyote.http11.Http11AprProtocol-8088]]。 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(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect。DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:309) at org.apache .catalina.startup.Bootstrap.main(Bootstrap.java:492) 原因:org.apache.catalina.LifecycleException:协议处理程序初始化在 org.apache.catalina.connector.Connector.initInternal(Connector.java:995) 处失败org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107) ... 12 更多原因: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) at org.apache.coyote.http11.AbstractHttp11Protocol.init(AbstractHttp11Protocol.java:68) at org.apache.catalina.connector.Connector.initInternal(Connector.java:993) .. . 13 更多原因: org.apache.tomcat.util.net.SSLUtilBase.getKeyManagers(SSLUtilBase.java:291) 的 java.io.IOException 在 org.apache.tomcat.util.net.openssl.OpenSSLUtil.getKeyManagers(OpenSSLUtil .java:104) 在 org.apache.tomcat.util.net.AprEndpoint.createSSLContext(AprEndpoint.java:402) 在 org.apache.tomcat.util.net.SSLUtilBase.createSSLContext(SSLUtilBase.java:239) ...还有 18 个993) ... 13 更多原因:org.apache.tomcat.util.net.openssl.OpenSSLUtil 的 org.apache.tomcat.util.net.SSLUtilBase.getKeyManagers(SSLUtilBase.java:291) 的 java.io.IOException .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 更多993) ... 13 更多原因:org.apache.tomcat.util.net.openssl.OpenSSLUtil 的 org.apache.tomcat.util.net.SSLUtilBase.getKeyManagers(SSLUtilBase.java:291) 的 java.io.IOException .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 更多

这是tomcat 7的server.xml中的连接器标记:

    <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"/>

这是tomcat 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>
4

0 回答 0