The only solution at the time of this writing is to use the NIO JSSE implementation for the HTTPS Connector by following these steps:
- Open the <PASOE instance>\conf\server.xml file.
- Search for the HTTPS Connector, for example:
<Connector executor="tomcatThreadPool"
port="${psc.as.https.port}"
protocol="HTTP/1.1"
- Update the protocol property and add the sslImplementationName property as follows:
<Connector executor="tomcatThreadPool"
port="${psc.as.https.port}"
protocol="org.apache.coyote.http11.Http11NioProtocol"
sslImplementationName="org.apache.tomcat.util.net.jsse.JSSEImplementation"
- Add the -Djdk.tls.server.enableStatusRequestExtension=true JVM system property in the <PASOE_instance>\conf\jvm.properties file to enable OCSP Stapling support for the JVM.
- It is also recommended to add the -Djdk.tls.ephemeralDHKeySize=2048 JVM parameter to the <PASOE_instance>\conf\jvm.properties file to the prevent the use of weak Diffie-Hellman (DH) keys. For more information, please refer to the following Oracle documentation: https://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html#customizing_dh_keys .
Note: When using the
certificateKeystoreFile property within the HTTPS Connector, also make sure that the PEM file which has the signed certificate contains the complete certificate chain before it is imported into the keystore (e.g. tomcat-keystore-chain.p12), otherwise OCSP Stapling will not work. For example, the signed certificate PEM file would contain something similar to the following:
-----BEGIN RSA PRIVATE KEY-----
<content of private key>
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
<content of signed server certificate>
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
<content of intermediate certificate>
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
<content of root certificate>
-----END CERTIFICATE-----
If the
certificateFile,
certificateChainFile,
certificateKeyFile and
certificateKeyPassword properties are being used for the HTTPS Connector instead of the
certificateKeyAlias,
certificateKeystoreFile,
certificateKeystorePassword and
certificateKeystoreType properties, then make sure that the whole certificate chain is defined in the PEM file that is specified for the
certificateChainFile property.