Re: Tomcat 10 MLDSA - failed to start

Rémy Maucherat <[email protected]> Wed, 15 Jul 2026 09:51:49 +0200
Newsgroups gmane.comp.jakarta.tomcat.user
Message-ID <CANwj8ZoygMDJMhz6pAw-Ca_QYftQhkLcb61MQegJxtCufPtKrw@mail.gmail.com>
On Tue, Jul 14, 2026 at 10:03=E2=80=AFPM Chuck Caldarale <[email protected]>=
 wrote:
>
>
> > On Jul 14, 2026, at 06:40:59, John Mok <[email protected]> wrote:
> >
> > Hi all,
> >
> > 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 wit=
h the platform you=E2=80=99re running on.
>
>
> > I hope someone could point me in the right direction.
> >
> > server.xml configuration
> > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> >
> >    <Connector port=3D"8443" protocol=3D"org.apache.coyote.http11.Http11=
NioProtocol"
> >               maxThreads=3D"150" SSLEnabled=3D"true"
> >               maxParameterCount=3D"1000"
> >>
> >        <UpgradeProtocol className=3D"org.apache.coyote.http2.Http2Proto=
col" />
> >        <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 AFA=
ICT, JVM 21 does not support MLDSA certificates; you would need JVM 24 or 2=
5 for that.

And it's not really going to work anyway.

> Current versions of OpenSSL do support MLDSA, but you have to specify tha=
t 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_-_=
Connector_-_NIO_and_NIO2

You can have the OpenSSL listener enabled in server.xml, OpenSSL in
your system, and Java 25, and it works.
<Listener className=3D"org.apache.catalina.core.OpenSSLLifecycleListener"
SSLEngine=3D"on" />
Or use tomcat-native if running on older Java versions.

Also for now it's best to avoid using a keystore.

R=C3=A9my

>   - Chuck
>
>
> > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> >
> > Catalina log reads
> >
> > 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(StandardServic=
e.java:520)
> > at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:122)
> > at org.apache.catalina.core.StandardServer.initInternal(StandardServer.=
java:955)
> > 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(Dir=
ectMethodHandleAccessor.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 SSLContex=
t
> > at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(Abs=
tractJsseEndpoint.java:121)
> > at org.apache.tomcat.util.net.AbstractJsseEndpoint.initialiseSsl(Abstra=
ctJsseEndpoint.java:78)
> > at org.apache.tomcat.util.net.Nio2Endpoint.bind(Nio2Endpoint.java:137)
> > at org.apache.tomcat.util.net.AbstractEndpoint.bindWithCleanup(Abstract=
Endpoint.java:1434)
> > at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.ja=
va:1447)
> > at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:932)
> > at org.apache.coyote.http11.AbstractHttp11Protocol.init(AbstractHttp11P=
rotocol.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(PKCS12Ke=
yStore.java:458)
> > at java.base/sun.security.pkcs12.PKCS12KeyStore.engineGetKey(PKCS12KeyS=
tore.java:300)
> > at java.base/sun.security.util.KeyStoreDelegator.engineGetKey(KeyStoreD=
elegator.java:93)
> > at java.base/java.security.KeyStore.getKey(KeyStore.java:1095)
> > at org.apache.tomcat.util.net.SSLUtilBase.getKeyManagers(SSLUtilBase.ja=
va:384)
> > at org.apache.tomcat.util.net.SSLUtilBase.createSSLContext(SSLUtilBase.=
java:265)
> > at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(Abs=
tractJsseEndpoint.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:8=
61)
> > at java.base/com.sun.crypto.provider.CipherCore.fillOutputBuffer(Cipher=
Core.java:941)
> > at java.base/com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java=
:734)
> > at java.base/com.sun.crypto.provider.PBES2Core.engineDoFinal(PBES2Core.=
java:203)
> > at java.base/javax.crypto.Cipher.doFinal(Cipher.java:2265)
> > at java.base/sun.security.pkcs12.PKCS12KeyStore.lambda$internalGetKey$0=
(PKCS12KeyStore.java:374)
> > at java.base/sun.security.pkcs12.PKCS12KeyStore$RetryWithZero.run(PKCS1=
2KeyStore.java:257)
> > at java.base/sun.security.pkcs12.PKCS12KeyStore.internalGetKey(PKCS12Ke=
yStore.java:365)
> > ... 24 more
> > 14-Jul-2026 18:51:34.648 INFO [main]
> > org.apache.catalina.startup.Catalina.load Server initialization in
> > [6138] milliseconds
> >
> > Thank you,
> > John MOK
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [email protected]
> > For additional commands, e-mail: [email protected]
> >
>