Hello Jerry,

> -----Ursprüngliche Nachricht-----
> Von: Jerry Malcolm <techst...@malcolms.com>
> Gesendet: Dienstag, 13. Juni 2023 17:35
> An: users@tomcat.apache.org
> Betreff: Re: AW: Crypto Randomly Not Getting Initialized
> 
> Hi Thomas,
> 
> On 6/13/2023 2:08 AM, Thomas Hoffmann (Speed4Trade GmbH) wrote:
> > Hello Jerry,
> >
> >> -----Ursprüngliche Nachricht-----
> >> Von: Jerry Malcolm <techst...@malcolms.com>
> >> Gesendet: Dienstag, 13. Juni 2023 08:50
> >> An: users@tomcat.apache.org
> >> Betreff: Crypto Randomly Not Getting Initialized
> >>
> >> I am running Tomcat 9.0.56 in multiple AWS EC2 instances with Amazon
> >> Linux2 in a production environment.  A couple of years ago, we
> >> started getting weird errors that the "Crypto Mechanism" failed to
> >> initialize. Through a lot of trial and error, and reasons I don't
> >> quite remember, we put a 2-min delay in rc.local before starting
> >> Tomcat, and the problem went away.  I'm not a Linux nor a crypto
> >> guru.  But we traced it to some crypto file that we assumed was not
> >> available until later in the Linux boot sequence.  Anyway, the 2
> >> minute delay made it go away, for over two years.  Then all of a
> >> sudden in the last day or so, it's back with a vengeance.  It fails
> >> with the same crypto error from 2 years ago in about 50% of the EC2 boot
> ups.  I tried bumping the wait to 3 min, and no change.
> >>
> >> I need help.  Our whole production environment is unstable now since
> >> every time an ASG brings a new instance online, I've got a 50-50
> >> chance that tomcat is going to die (and the health check doesn't
> >> catch it, but that's a different issue).
> >>
> >> There are no errors in the Tomcat boot sequence logs.  But the first
> >> time and every subsequent time I try to get a connection from the
> >> DataSource pool, I get the stack dump shown below.
> >>
> >> I figure it has to be a timing/race condition.  But I have no clue
> >> what to do to fix it.  I'm baffled that it worked for two years, and
> >> now fails every other time I start an instance.  And every instance
> >> is running copies of the exact same Amazon Machine Image.  The same
> >> EC2 will come up clean 50% of the time the next time it boots.
> >>
> >> Can somebody with Tomcat/Crypto/Linux knowledge unravel what's
> going
> >> on here?  Thx
> >>
> >> java.lang.ExceptionInInitializerError
> >>           at java.base/javax.crypto.Cipher.getInstance(Cipher.java:540)
> >>           at java.base/sun.security.ssl.JsseJce.getCipher(JsseJce.java:190)
> >>           at
> >> java.base/sun.security.ssl.SSLCipher.isTransformationAvailable(SSLCip
> >> her.jav
> >> a:509)
> >>           at 
> >> java.base/sun.security.ssl.SSLCipher.<init>(SSLCipher.java:498)
> >>           at 
> >> java.base/sun.security.ssl.SSLCipher.<clinit>(SSLCipher.java:81)
> >>           at
> >> java.base/sun.security.ssl.CipherSuite.<clinit>(CipherSuite.java:65)
> >>           at
> >> java.base/sun.security.ssl.SSLContextImpl.getApplicableSupportedCiphe
> >> rSuit
> >> es(SSLContextImpl.java:348)
> >>           at
> >> java.base/sun.security.ssl.SSLContextImpl$AbstractTLSContext.<clinit>
> >> (SSLC
> >> ontextImpl.java:580)
> >>           at java.base/java.lang.Class.forName0(Native Method)
> >>           at java.base/java.lang.Class.forName(Class.java:315)
> >> ...
> >>
> >>           at
> >>
> com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:
> >> 948)
> >>           at
> >>
> com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:818)
> >>           at
> com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:448)
> >>           at
> >> com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:241)
> >>           at
> >>
> com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:
> >> 198)
> >>           at
> >>
> org.apache.tomcat.dbcp.dbcp2.DriverConnectionFactory.createConnection
> >> (
> >> DriverConnectionFactory.java:52)
> >>           at
> >>
> org.apache.tomcat.dbcp.dbcp2.PoolableConnectionFactory.makeObject(Po
> >> olableConnectionFactory.java:415)
> >>           at
> >>
> org.apache.tomcat.dbcp.dbcp2.BasicDataSource.validateConnectionFactor
> >> y
> >> (BasicDataSource.java:111)
> >>           at
> >>
> org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createPoolableConnection
> >> Factory(BasicDataSource.java:649)
> >>           at
> >>
> org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createDataSource(BasicDa
> >> taSource.java:532)
> >>           at
> >>
> org.apache.tomcat.dbcp.dbcp2.BasicDataSource.getConnection(BasicDataS
> >> ource.java:731)
> >>           at jwm.db.DBData.getConnection(DBData.java:506)   //// my
> >> call to get a db connection from connection pool ////
> >>
> >> ...
> >>
> >> Caused by: java.lang.SecurityException: Can not initialize
> >> cryptographic mechanism
> >>           at
> >> java.base/javax.crypto.JceSecurity.<clinit>(JceSecurity.java:120) ...
> >> 86 mo Caused by: java.lang.SecurityException: Can't read
> >> cryptographic policy
> >> directory: unlimited
> >>           at
> >>
> java.base/javax.crypto.JceSecurity.setupJurisdictionPolicies(JceSecurity.java:
> >> 326)
> >>           at java.base/javax.crypto.JceSecurity$1.run(JceSecurity.java:111)
> >>           at java.base/javax.crypto.JceSecurity$1.run(JceSecurity.java:108)
> >>           at
> >> java.base/java.security.AccessController.doPrivileged(Native
> >> Method)
> >>           at
> >> java.base/javax.crypto.JceSecurity.<clinit>(JceSecurity.java:107)
> >>           ... 86 more
> >>
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
> >> For additional commands, e-mail: users-h...@tomcat.apache.org
> > Could it be this issue?
> > https://github.com/docker-library/openjdk/issues/101
> >
> > Maybe you can add information about the used jdk and whether you are
> using containers.
> >
> > Greetings,
> > Thomas
> I'm running Java 11.0.16.  No Docker or other containers.  Just straight
> Tomcat running standalone.  The github link refers to a Java 9 / Docker
> issue.  I guess it could be related.  But I'm not sure due to different
> environments, and my situation only fails half the time.  Thx
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org

Maybe you can compare the available ciphers during runtime:
https://stackoverflow.com/questions/9333504/how-can-i-list-the-available-cipher-algorithms
 
Print all ciphers in both environments and check if there are differences.

System properties are also worth comparing:
https://mkyong.com/java/how-to-list-all-system-properties-key-and-value-in-java/
 

Greetings! Thomas

Reply via email to