我希望这是报告Tomcat7问题的正确位置(在Java项目下发布)。从DVD安装12.3新鲜是直接的,下载Tomcat7并解压缩到/ opt,然后启动服务。它是无痛的,只是按预期工作。所以我在**http://localhost:8080**
上进行了测试,没有问题,然后我通过自定义server.xml继续启用https,然后使用keytool生成自签名证书并重新启动tomcat7服务。
对于你的ref,这是我使用的keytool命令和server.xml config。
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)
请给我一些关于我情况的建议!非常感谢你!
答案 0 :(得分:2)
要解决此问题,请注释掉定义APR侦听器的行。 在您的“server.xml”中只需注释掉这一行:
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
现在应该可以正常工作并且会抱怨不受信任的证书(如果您将证书存储在浏览器cert.db(firefox)中。