尝试在 tomcat 6.x 服务器上运行启用 SSL 的应用程序时出现错误。启用 APR。
我像这样创建了证书:
openssl genrsa -des3 -out key.pem 2048
passphrase
openssl req -new -x509 -key key.pem -out cert.pem -days 1095
passphrase
我的 ssl 配置如下所示:
<Connector protocol="org.apache.coyote.http11.Http11AprProtocol"
port="8444" minSpareThreads="5" maxSpareThreads="75"
enableLookups="true" disableUploadTimeout="true"
acceptCount="100" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
clientAuth="false" sslProtocol="TLS"
SSLCertificateFile="/usr/local/tomcat/conf/ssl/cert.pem"
SSLCertificateKeyFile="/usr/local/tomcat/conf/ssl/key.pem"
SSLPassword="passphrase"/>
/>
您可能会注意到这些端口是非标准的。这是因为我在这个系统上有两个独立的 tomcat 应用程序,它们都使用 SSL。我认为这不是问题,因为即使我关闭了另一个 tomcat 并且只运行有问题的 tomcat 实例,我也会得到同样的错误。
因此,一个实例使用 8080/8443,而问题一个使用 8081/8444。
好的 tomcat 实例总是可以完美运行。没有ssl,问题安装工作正常。我试过只运行问题实例,但我仍然遇到同样的问题,所以我认为问题与此无关,但我认为我应该披露。我还尝试在坏的那个上使用功能正常的 tomcat 的 ssl 密钥和证书,但仍然遇到相同的错误,所以我认为也不是这样。
因此,我很困惑。
以下是我不断收到的错误:
SEVERE: Error initializing endpoint java.lang.Exception: Invalid Server SSL Protocol
at org.apache.tomcat.jni.SSLContext.make(Native Method)
at org.apache.tomcat.util.net.AprEndpoint.init(AprEndpoint.java:680)
at org.apache.coyote.http11.Http11AprProtocol.init(Http11AprProtocol.java:107)
LifecycleException: Protocol handler initialization failed: java.lang.Exception: Invalid Server SSL Protocol
at org.apache.catalina.connector.Connector.initialize(Connector.java:1060)
at org.apache.catalina.core.StandardService.initialize(StandardService.java:677)
at org.apache.catalina.core.StandardServer.initialize(StandardServer.java:795)
at org.apache.catalina.startup.Catalina.load(Catalina.java:530)
SEVERE: Error starting endpoint
java.lang.Exception: Socket bind failed: [98] Address already in use
at org.apache.tomcat.util.net.AprEndpoint.init(AprEndpoint.java:612)
at org.apache.tomcat.util.net.AprEndpoint.start(AprEndpoint.java:717)
at org.apache.coyote.http11.Http11AprProtocol.start(Http11AprProtocol.java:137)
at org.apache.catalina.connector.Connector.start(Connector.java:1131)
at org.apache.catalina.core.StandardService.start(StandardService.java:531)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
LifecycleException: service.getName(): "Catalina"; Protocol handler start failed: java.lang.Exception: Socket bind failed: [98] Address already in use
at org.apache.catalina.connector.Connector.start(Connector.java:1138)
at org.apache.catalina.core.StandardService.start(StandardService.java:531)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
帮助表示赞赏。