Tomcat version: 8.5.34 Hello, I’m wondering if anyone has any theories about an SSL config related exception that we hit periodically on Tomcat startup that prevents the system from initializing properly. I’ll emphasize “periodically” here, because we only trigger this rarely and have no reliable way of triggering the problem. The exception seems to indicate that the certificateFile is missing, which is strange given that the certificateKeystoreFile is provided and available on the filesystem. My understanding is that a certificateFile would is not required when using a certificateKeystoreFile. Any idea why there could be a certifificateFile related exception when the certificateKeystoreFile is configured?
The stack trace is: 2021.02.28 21:19:48 890 +0000 SEVERE org.apache.catalina.core.StandardService Failed to initialize connector [Connector[HTTP/1.1-8544]] org.apache.catalina.LifecycleException: Failed to initialize component [Connector[HTTP/1.1-8544]] at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:112) at org.apache.catalina.core.StandardService.initInternal(StandardService.java:552) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107) at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:875) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107) at org.apache.catalina.startup.Catalina.load(Catalina.java:632) at org.apache.catalina.startup.Catalina.load(Catalina.java:655) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at 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) Caused by: org.apache.catalina.LifecycleException: Protocol handler initialization failed at org.apache.catalina.connector.Connector.initInternal(Connector.java:995) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107) ... 12 more Caused by: java.lang.IllegalArgumentException: SSLHostConfig attribute certificateFile must be defined when using an SSL connector at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:115) at org.apache.tomcat.util.net.AbstractJsseEndpoint.initialiseSsl(AbstractJsseEndpoint.java:86) at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:244) at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:1087) at org.apache.tomcat.util.net.AbstractJsseEndpoint.init(AbstractJsseEndpoint.java:265) at 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 more Caused by: java.io.IOException: SSLHostConfig attribute certificateFile must be defined when using an SSL connector at org.apache.tomcat.util.net.jsse.JSSEUtil.getKeyManagers(JSSEUtil.java:203) at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:113) ... 20 more Our connector is defined as follows: <Connector port="8544" protocol="HTTP/1.1" compression="on" compressibleMimeType="text/html,text/xml,text/plain,text/css,application/javascript,application/json" compressionMinSize="2048" connectionTimeout="60000" maxHttpHeaderSize="65536" scheme="https" secure="true" relaxedQueryChars="[]" SSLEnabled="true"> <SSLHostConfig sslProtocol="TLS" protocols=" TLSv1.2" certificateVerification="optional" honorCipherOrder="true" ciphers="${server.cipher.suites.List}"> <Certificate certificateKeystoreFile="/opt/nsp/os/ssl/nsp.keystore" certificateKeystorePassword="secret" type="RSA" certificateKeyPassword="secret" /> </SSLHostConfig> </Connector>