HTTPs/TLS Attacks - TLS-Breaker issue

Hello Forum!

I’m encountering an error with TLS-Breaker: “CertificateUtils - Could not extract public key from Certificate!” This issue occurs with both the bleichenbacher jar and the heartbleed-1.0.1.jar.

How can I fix this error? I’m stuck and cannot move forward!

I have already tried:

  • Using both a pwd box and my own Kali VM
  • Applying different flags such as -connect, -pcap, etc.

I suspect the issue might be related to Java or Maven. How can I resolve it?

java -jar apps/heartbleed-1.0.1.jar 
08:32:07 [main] WARN : CertificateUtils - Could not extract public key from Certificate!
Exception in thread "main" java.lang.ExceptionInInitializerError
	at de.rub.nds.tlsattacker.core.config.TLSDelegateConfig.createConfig(TLSDelegateConfig.java:82)
	at de.rub.nds.tlsbreaker.heartbleed.config.HeartbleedCommandConfig.createConfig(HeartbleedCommandConfig.java:111)
	at de.rub.nds.tlsbreaker.heartbleed.Main.main(Main.java:34)
Caused by: java.lang.RuntimeException: jakarta.xml.bind.UnmarshalException
 - with linked exception:
[com.sun.istack.SAXParseException2; lineNumber: 2; columnNumber: 9; Unable to create an instance of de.rub.nds.tlsattacker.core.config.Config]
	at de.rub.nds.tlsattacker.core.config.ConfigIO.read(ConfigIO.java:138)
	at de.rub.nds.tlsattacker.core.config.ConfigIO.read(ConfigIO.java:105)
	at de.rub.nds.tlsattacker.core.config.Config.createConfig(Config.java:127)
	at de.rub.nds.tlsattacker.core.config.Config.<clinit>(Config.java:119)
	... 3 more
Caused by: jakarta.xml.bind.UnmarshalException
 - with linked exception:
[com.sun.istack.SAXParseException2; lineNumber: 2; columnNumber: 9; Unable to create an instance of de.rub.nds.tlsattacker.core.config.Config]
	at org.glassfish.jaxb.runtime.v2.runtime.unmarshaller.UnmarshallerImpl.handleStreamException(UnmarshallerImpl.java:444)
	at org.glassfish.jaxb.runtime.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:378)
	at org.glassfish.jaxb.runtime.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:347)
	at de.rub.nds.tlsattacker.core.config.ConfigIO.read(ConfigIO.java:136)
	... 6 more
Caused by: com.sun.istack.SAXParseException2; lineNumber: 2; columnNumber: 9; Unable to create an instance of de.rub.nds.tlsattacker.core.config.Config
	at org.glassfish.jaxb.runtime.v2.runtime.unmarshaller.UnmarshallingContext.handleEvent(UnmarshallingContext.java:693)
	at org.glassfish.jaxb.runtime.v2.runtime.unmarshaller.Loader.reportError(Loader.java:230)
	at org.glassfish.jaxb.runtime.v2.runtime.unmarshaller.UnmarshallingContext.createInstance(UnmarshallingContext.java:657)
	at org.glassfish.jaxb.runtime.v2.runtime.unmarshaller.StructureLoader.startElement(StructureLoader.java:156)
	at org.glassfish.jaxb.runtime.v2.runtime.unmarshaller.UnmarshallingContext._startElement(UnmarshallingContext.java:530)
	at org.glassfish.jaxb.runtime.v2.runtime.unmarshaller.UnmarshallingContext.startElement(UnmarshallingContext.java:509)
	at org.glassfish.jaxb.runtime.v2.runtime.unmarshaller.ValidatingUnmarshaller.startElement(ValidatingUnmarshaller.java:75)
	at org.glassfish.jaxb.runtime.v2.runtime.unmarshaller.InterningXmlVisitor.startElement(InterningXmlVisitor.java:49)
	at org.glassfish.jaxb.runtime.v2.runtime.unmarshaller.StAXStreamConnector.handleStartElement(StAXStreamConnector.java:217)
	at org.glassfish.jaxb.runtime.v2.runtime.unmarshaller.StAXStreamConnector.bridge(StAXStreamConnector.java:149)
	at org.glassfish.jaxb.runtime.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:376)
	... 8 more
Caused by: jakarta.xml.bind.UnmarshalException: Unable to create an instance of de.rub.nds.tlsattacker.core.config.Config
 - with linked exception:
[java.lang.reflect.InvocationTargetException]
	... 19 more
Caused by: java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
	at org.glassfish.jaxb.core.v2.ClassFactory.create0(ClassFactory.java:104)
	at org.glassfish.jaxb.runtime.v2.runtime.ClassBeanInfoImpl.createInstance(ClassBeanInfoImpl.java:255)
	at org.glassfish.jaxb.runtime.v2.runtime.unmarshaller.UnmarshallingContext.createInstance(UnmarshallingContext.java:655)
	... 16 more
Caused by: java.lang.UnsupportedOperationException: This public key is not supported:null
	at de.rub.nds.tlsattacker.core.util.CertificateUtils.parseCustomPublicKey(CertificateUtils.java:112)
	at de.rub.nds.tlsattacker.core.certificate.CertificateKeyPair.<init>(CertificateKeyPair.java:117)
	at de.rub.nds.tlsattacker.core.config.Config.<init>(Config.java:1414)
	... 24 more

Hi,
same problem. I am stuck as well. Any progress so far?

Nope, I just wait here. If no one has information, we need to ask the owner of this module to verify if the TLS-Breaker works as expected as a tool for exercises.

I can see that this tool is outdated, so we cannot use the oldest version. To me, it means that another component is broken, such as the newest Java packages, which might be breaking this combination. We can try using an older version of Java or a different Java component, like Maven or CertificateUtils… T.T

To resolve issues you need to downgrade your JDK to version 11. Currently, the JDK on the pwn box is version 17.