Strange JRE Update problem
Hello Coldfusion Community! It's nice to meet you all. I'm seeking out some help performing a JRE update on our CF Server. I am troubleshooting an high-priority incident with our software and hope I can some guideance toward a solution.
Problem:
- Yesterday morning, we noticed that emails were not being sent from the site, getting stuck in the "Undelivered Mail" list.
- Upon reviewing mail.log, I found this message each time CF attempted to send an email.
javax.mail.MessagingException: Could not connect to SMTP host: secure.emailsrvr.com, port: 465; nested exception is: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target - Researching this error led me to believe that it's possible our email provider or their CA had a security configuration change that doesn't work with this old server. (Coldfusion 11, Update 19 -- JRE 1.7.0_55) -- They are refusing to confirm or deny whether there's been a change.
- Since the JRE we're running on connects over deprecated SSL/TLS protocols, we decided to proceed with a JRE Upgrade. I downloaded JRE 8U401 from Adobe's download section, installed this on our server, and then updated JVM.config to point to the new file. The "Coldfusion 11 Application Server" service refused to restart so we rolled back to the older JRE until more troubleshooting could be done.
Here's the lines I updated in JVM.config:
#java.home=C:\\ColdFusion11\\jre
java.home=C:\\Program Files\\Java\\jre-1.8 - I performed some troubleshooting and learned that the vcruntime140.dll file was missing from the CF directory, so I dropped that in and got Coldfusion to start, but it continued showing the 503 under maintenance page and CF Admin would not load.. We recieved the following error message.
Feb 22, 2024 4:26:55 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\ColdFusion11\cfusion\lib;C:\ColdFusion11\cfusion\jintegra\bin;C:\ColdFusion11\cfusion\jintegra\bin\international;C:\ColdFusion11\cfusion\lib\oosdk\classes\win
java.lang.reflect.InvocationTargetException
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 com.adobe.coldfusion.bootstrap.Bootstrap.init(Bootstrap.java:90)
at com.adobe.coldfusion.bootstrap.Bootstrap.main(Bootstrap.java:165)
Caused by: org.apache.catalina.LifecycleException: Failed to initialize component [StandardServer[8009]]
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107)
at com.adobe.coldfusion.launcher.Launcher.run(Launcher.java:987)
... 6 more
Caused by: java.lang.UnsatisfiedLinkError: C:\ColdFusion11\jdk1.8.0_391\jre\bin\sunmscapi.dll: Can't find dependent libraries
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1937)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1841)
at java.lang.Runtime.loadLibrary0(Runtime.java:843)
at java.lang.System.loadLibrary(System.java:1134)
at sun.security.mscapi.SunMSCAPI$1.run(SunMSCAPI.java:52)
at sun.security.mscapi.SunMSCAPI$1.run(SunMSCAPI.java:50)
at java.security.AccessController.doPrivileged(Native Method)
at sun.security.mscapi.SunMSCAPI.<clinit>(SunMSCAPI.java:50)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at java.lang.Class.newInstance(Class.java:442)
at sun.security.jca.ProviderConfig$2.run(ProviderConfig.java:221)
at sun.security.jca.ProviderConfig$2.run(ProviderConfig.java:206)
at java.security.AccessController.doPrivileged(Native Method)
at sun.security.jca.ProviderConfig.doLoadProvider(ProviderConfig.java:206)
at sun.security.jca.ProviderConfig.getProvider(ProviderConfig.java:187)
at sun.security.jca.ProviderList.loadAll(ProviderList.java:282)
at sun.security.jca.ProviderList.removeInvalid(ProviderList.java:299)
at sun.security.jca.Providers.getFullProviderList(Providers.java:174)
at java.security.Security.getProviders(Security.java:410)
at org.apache.catalina.core.JreMemoryLeakPreventionListener.lifecycleEvent(JreMemoryLeakPreventionListener.java:413)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:388)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:101)
... 7 more - Then, I attempted using the JDK of the same version and also tried version 8U391 -- still the same error. We rolled back as we couldn't keep the system down any longer.
- Finally, as a sanity check, I have a newer version of CF running in a dev environment - I copied the email generating code and it's settings / credentials from the old one to the newer one and they worked as expected.
I know we're long overdue for a full CF Update / Server rebuild, but I'm looking for a way to get these emails sending again until we are to that point. Any help would be appreciated.
Thanks!
PL
