Re: Tomcat 10 MLDSA - failed to start
Chuck Caldarale <[email protected]> Tue, 14 Jul 2026 15:02:51 -0500
| Newsgroups | gmane.comp.jakarta.tomcat.user |
|---|---|
| Message-ID | <[email protected]> |
--Apple-Mail=_CC287D82-F470-4955-A30C-5D4F2CB9CD85 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 > On Jul 14, 2026, at 06:40:59, John Mok <[email protected]> wrote: >=20 > Hi all, >=20 > Trying to use MLDSA certificate on Tomcat 10 + OpenJDK 21, but failed > (see error messages below). Exact Tomcat and JVM versions? You should always specify those, along = with the platform you=E2=80=99re running on. > I hope someone could point me in the right direction. >=20 > server.xml configuration > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >=20 > <Connector port=3D"8443" = protocol=3D"org.apache.coyote.http11.Http11NioProtocol" > maxThreads=3D"150" SSLEnabled=3D"true" > maxParameterCount=3D"1000" >>=20 > <UpgradeProtocol = className=3D"org.apache.coyote.http2.Http2Protocol" /> > <SSLHostConfig> > <Certificate certificateKeystoreFile=3D"conf/tomcat10-1.jks" > certificateKeystorePassword=3D"changeit" = type=3D"MLDSA" /> > </SSLHostConfig> > </Connector> It looks like you=E2=80=99re trying to use the JVM JSSE provider, but = AFAICT, JVM 21 does not support MLDSA certificates; you would need JVM = 24 or 25 for that. Current versions of OpenSSL do support MLDSA, but you have to specify = that in your <Connector> configuration. Take a look at: https://tomcat.apache.org/tomcat-10.1-doc/ssl-howto.html#SSL_and_Tomcat = https://tomcat.apache.org/tomcat-10.1-doc/config/http.html#SSL_Support_-_C= onnector_-_NIO_and_NIO2 - Chuck > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >=20 > Catalina log reads >=20 > 14-Jul-2026 18:51:34.645 SEVERE [main] > org.apache.catalina.util.LifecycleBase.handleSubClassException Failed > to initialize component [Connector["https-jsse-nio2-8443"]] > org.apache.catalina.LifecycleException: Protocol handler = initialization failed > at = org.apache.catalina.connector.Connector.initInternal(Connector.java:1084) > at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:122) > at = org.apache.catalina.core.StandardService.initInternal(StandardService.java= :520) > at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:122) > at = org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:9= 55) > at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:122) > at org.apache.catalina.startup.Catalina.load(Catalina.java:709) > at org.apache.catalina.startup.Catalina.load(Catalina.java:732) > at = java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMet= hodHandleAccessor.java:103) > at java.base/java.lang.reflect.Method.invoke(Method.java:580) > at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:299) > at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:472) > Caused by: java.lang.IllegalArgumentException: Error creating = SSLContext > at = org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJ= sseEndpoint.java:121) > at = org.apache.tomcat.util.net.AbstractJsseEndpoint.initialiseSsl(AbstractJsse= Endpoint.java:78) > at org.apache.tomcat.util.net.Nio2Endpoint.bind(Nio2Endpoint.java:137) > at = org.apache.tomcat.util.net.AbstractEndpoint.bindWithCleanup(AbstractEndpoi= nt.java:1434) > at = org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:144= 7) > at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:932) > at = org.apache.coyote.http11.AbstractHttp11Protocol.init(AbstractHttp11Protoco= l.java:82) > at = org.apache.catalina.connector.Connector.initInternal(Connector.java:1082) > ... 11 more > Caused by: java.security.UnrecoverableKeyException: Get Key failed: > Given final block not properly padded. Such issues can arise if a bad > key is used during decryption. > at = java.base/sun.security.pkcs12.PKCS12KeyStore.internalGetKey(PKCS12KeyStore= .java:458) > at = java.base/sun.security.pkcs12.PKCS12KeyStore.engineGetKey(PKCS12KeyStore.j= ava:300) > at = java.base/sun.security.util.KeyStoreDelegator.engineGetKey(KeyStoreDelegat= or.java:93) > at java.base/java.security.KeyStore.getKey(KeyStore.java:1095) > at = org.apache.tomcat.util.net.SSLUtilBase.getKeyManagers(SSLUtilBase.java:384= ) > at = org.apache.tomcat.util.net.SSLUtilBase.createSSLContext(SSLUtilBase.java:2= 65) > at = org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJ= sseEndpoint.java:119) > ... 18 more > Caused by: javax.crypto.BadPaddingException: Given final block not > properly padded. Such issues can arise if a bad key is used during > decryption. > at = java.base/com.sun.crypto.provider.CipherCore.unpad(CipherCore.java:861) > at = java.base/com.sun.crypto.provider.CipherCore.fillOutputBuffer(CipherCore.j= ava:941) > at = java.base/com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:734) > at = java.base/com.sun.crypto.provider.PBES2Core.engineDoFinal(PBES2Core.java:2= 03) > at java.base/javax.crypto.Cipher.doFinal(Cipher.java:2265) > at = java.base/sun.security.pkcs12.PKCS12KeyStore.lambda$internalGetKey$0(PKCS1= 2KeyStore.java:374) > at = java.base/sun.security.pkcs12.PKCS12KeyStore$RetryWithZero.run(PKCS12KeySt= ore.java:257) > at = java.base/sun.security.pkcs12.PKCS12KeyStore.internalGetKey(PKCS12KeyStore= .java:365) > ... 24 more > 14-Jul-2026 18:51:34.648 INFO [main] > org.apache.catalina.startup.Catalina.load Server initialization in > [6138] milliseconds >=20 > Thank you, > John MOK >=20 > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] >=20 --Apple-Mail=_CC287D82-F470-4955-A30C-5D4F2CB9CD85--