0

我希望这是报告 Tomcat7 问题的正确地方(在 Java 项目下发布)。从 DVD 安装 12.3 很简单,下载 Tomcat7 并解压到 /opt,然后启动服务。它是无痛的,并且可以按预期工作。所以我做了测试**http://localhost:8080**,没有问题,然后我通过自定义 server.xml 继续启用 https,然后使用 keytool 生成自签名证书并重新启动 tomcat7 服务。

对于您的参考,这是我使用的 keytool 命令和 server.xml 配置。

 keytool -genkeypair -keyalg RSA -alias tomcat -keystore testkey
-validity 999 -keysize 2048

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="200" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="/usr/share/tomcat7/webapps/testkey"
keystorePass="testme" />

查看 catalina.out,这是错误。

SEVERE: Failed to initialize end point associated with ProtocolHandler ["http-apr-8443"]
java.lang.Exception: Connector attribute SSLCertificateFile must be defined when using SSL with APR
at org.apache.tomcat.util.net.AprEndpoint.bind(AprEndpoint.java:472)
at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:498)
at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:369)
at org.apache.catalina.connector.Connector.initInternal(Connector.java:909)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
at org.apache.catalina.core.StandardService.initInternal(StandardService.java:559)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:781)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
at org.apache.catalina.startup.Catalina.load(Catalina.java:573)
at org.apache.catalina.startup.Catalina.load(Catalina.java:596)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:281)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:449)

请根据我的情况给我一些建议!非常感谢!

4

1 回答 1

2

要解决此问题,只需注释掉定义 APR 侦听器的行。在您的“server.xml”中,只需注释掉这一行:

<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />

它现在应该可以正常工作并且会抱怨不受信任的证书(如果您将证书存储在浏览器 cert.db (firefox) 中。

于 2013-12-12T03:06:37.930 回答