I maintain an old Java app that deploys to Tomcat and which uses SSL (and hence a keystore). It is important to note that this app will not even start up if the SSL cert is bad/expired/invalid!
Every year the SSL cert expires, and so someone has to replace the old/expiring cert stored in the JKS with a new one (provided to us by IT). I am now starting that process/fun for this year.
I started by running the keytool
command that prints the contents of the JKS:
keytool -list -v -keystore myapp.jks
Unless I'm reading its output wrong, I only see a cert that expired in 2015! If that's the case, how in the heck has this app been running for the last year?!? The one thing I do see is a cert in the "chain" that expires in 2034. I guess I don't understand SSL chains as well as I should, but my theory is that (somehow) the cert that expires in 2034 is somehow keeping my main cert alive/valid - is that possible? Here's a censored/summary of the output of that list command from above:
Keystore type: JKS
Keystore provider: SUN
Your keystore contains 1 entry
Alias name: blah
Creation date: May 1, 2014
Entry type: PrivateKeyEntry
Certificate chain length: 3
Certificate[1]:
Owner: blah
Issuer: blah
Serial number: blah
Valid from: Thu Feb 16 15:49:19 EST 2012 until: Mon Feb 16 15:49:19 EST 2015
Certificate fingerprints:
MD5: blah
SHA1: blah
SHA256: blah
Signature algorithm name: SHA1withRSA
Version: 3
Extensions:
#1: ObjectId: blah Criticality=false
AuthorityInfoAccess [
...a lot of stuff omitted for brevity
Certificate[3]:
Owner: OU=Go Daddy Class 2 Certification Authority, O="The Go Daddy Group, Inc.", C=US
Issuer: OU=Go Daddy Class 2 Certification Authority, O="The Go Daddy Group, Inc.", C=US
Serial number: 0
Valid from: Tue Jun 29 13:06:20 EDT 2004 until: Thu Jun 29 13:06:20 EDT 2034
Certificate fingerprints:
MD5: blah
SHA1: blah
SHA256: blah
Signature algorithm name: SHA1withRSA
Version: 3
...a lot more stuff, again omitted for brevity
Can anybody see any reason why this cert would still be valid?!?