CF2016 Update 17
CF2021 Update 2
We always run a different version of JAVA (usually the latest that is supported) in a folder next to the initial JRE of CF. So for CF2021 we point to the jdk-11.0.11.
CF2016 we are currently pointing to jre8u172
By @stephenb15902562
You said that you want to have a comparable environment on ColdFusion 2016 Update 17 and ColdFu2021 Update 2. To this end, Java 8 Update 172 is out of place. Its TLS capabilities are much weaker than those of JDK 11.0.11.
For example, Java 11 supports TLS 1.3, whereas support for TLS 1.3 on Java 8 only began from Update 261 b12 onwards.
To cut a long story short, I would suggest you run CF2016 on Java 11.0.11 as well or, at least, to the most recent version of Java 8.
The JVM configs were likely brought over by the migration process from our cf2016. The only additions we made to the configs after were to add some ssl debugging lines.
-server --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/sun.util.cldr=ALL-UNNAMED --add-opens=java.base/sun.util.locale.provider=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED -XX:+UseParallelGC -Djdk.attach.allowAttachSelf=true -Dcoldfusion.home={application.home} -Duser.language=en -Dcoldfusion.rootDir={application.home} -Dcoldfusion.libPath={application.home}/lib -Dorg.apache.coyote.USE_CUSTOM_STATUS_MSG_IN_HEADER=true -Dcoldfusion.jsafe.defaultalgo=FIPS186Random -Dorg.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.JavaUtilLog -Djava.util.logging.config.file={application.home}/lib/logging.properties -Dtika.config=tika-config.xml -Djava.locale.providers=COMPAT,SPI -Dsun.font.layoutengine=icu -Dcom.sun.media.jai.disableMediaLib=true -Djavax.net.debug=ssl🤝verbose:keymanager:trustmanager -Djava.security.debug=access:stack
Your Java arguments seem OK. However, the forum's display seems to have mangled one of the switches. I was expecting to see something like:
-Djavax.net.debug=ssl:handshake:verbose:keymanager:trustmanager
So this is the current line.
<Connector SSLEnabled="true"
ciphers="TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
TLS_RSA_WITH_AES_256_GCM_SHA384,
TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384,
TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384,
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,
TLS_DHE_DSS_WITH_AES_256_GCM_SHA384" clientAuth="false" keystoreFile="ourkeystorefilehere" keystorePass="changeit" maxThreads="150" port="8453" protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https" secure="true"/>
Is it really necessary to specify a list of ciphers. Where or how did you get the list anyway?
In my experience the default list of ciphers - the one automatically used when you omit the ciphers attribute - is usually sufficient. In other words, it might be sufficient to use:
<Connector SSLEnabled="true"
sslProtocol="TLS"
clientAuth="false"
keystoreFile="ourkeystorefilehere"
keystorePass="changeit"
maxThreads="150"
port="8453"
protocol="org.apache.coyote.http11.Http11NioProtocol"
scheme="https"
secure="true"/>
Note that I have added sslProtocol="TLS"
Thank you all for your continued support in trying to help me troubleshoot the issue. We believe we have solved our problem. Ultimately it seemed like a two part puzzle. The first issue seemed to pertain to the local user account we created for coldfusion service to run under. We had two different versions of coldfusion running on the same service account, some files that were being created by coldfusion, for that local account, seemed to be getting confused in the same directory by the servers. The second piece of the puzzle seemed to be that Java 11.0.11 defaulted the keystore type to pkcs12 and we needed to manually change that to JKS in the java config file. Changing the local service account and some clean up on the configs seems to be our solution. So thanks again to all your help.