Skip to content

TLS handshake fails with BC internal error, works fine with TLS implementation shipped with OpenJDK 15.0.2+7  #916

Description

@toby1984

Hi,

We're in the process of upgrading our application to run on CentOS8 and noticed that our Java server (currently running BC 1.68 but I also did test 1.69 beta which shows the same error) can no longer connect to our C++ webservices running on another machine.


wireshark

The same connection still works fine if we switch to using the JDK built-in TLS implementation that comes with OpenJDK 15.0.2+7.

I've attached a PCAP file of the handshake to this ticket, feel free to contact me if you need further data/information.

The exception we're getting on the Java side is

Caused by: org.bouncycastle.tls.TlsFatalAlert: internal_error(80) at org.bouncycastle.tls.TlsProtocol.safeReadRecord(TlsProtocol.java:811) ~[bctls-jdk15on-169b04.jar:1.68.99.0] at org.bouncycastle.tls.TlsProtocol.blockForHandshake(TlsProtocol.java:370) ~[bctls-jdk15on-169b04.jar:1.68.99.0] at org.bouncycastle.tls.TlsClientProtocol.connect(TlsClientProtocol.java:86) ~[bctls-jdk15on-169b04.jar:1.68.99.0] at org.bouncycastle.jsse.provider.ProvSSLSocketDirect.startHandshake(ProvSSLSocketDirect.java:445) ~[bctls-jdk15on-169b04.jar:1.68.99.0] at org.bouncycastle.jsse.provider.ProvSSLSocketDirect.startHandshake(ProvSSLSocketDirect.java:426) ~[bctls-jdk15on-169b04.jar:1.68.99.0] at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:567) ~[?:?] at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:183) ~[?:?] at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1375) ~[?:?] at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1350) ~[?:?] at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:220) ~[?:?] at com.sun.xml.ws.transport.http.client.HttpClientTransport.getOutput(HttpClientTransport.java:119) ~[jaxws-rt-2.3.1.jar:2.3.1] ... 20 more

Caused by: java.lang.IllegalStateException: Invalid algorithm: {sha256(4),ecdsa(3)} at org.bouncycastle.tls.crypto.impl.jcajce.JcaTlsRSASigner.generateRawSignature(JcaTlsRSASigner.java:59) ~[bctls-jdk15on-169b04.jar:1.68.99.0] at org.bouncycastle.tls.DefaultTlsCredentialedSigner.generateRawSignature(DefaultTlsCredentialedSigner.java:53) ~[bctls-jdk15on-169b04.jar:1.68.99.0] at org.bouncycastle.tls.TlsUtils.generateCertificateVerifyClient(TlsUtils.java:2176) ~[bctls-jdk15on-169b04.jar:1.68.99.0] at org.bouncycastle.tls.TlsClientProtocol.handleHandshakeMessage(TlsClientProtocol.java:638) ~[bctls-jdk15on-169b04.jar:1.68.99.0] at org.bouncycastle.tls.TlsProtocol.processHandshakeQueue(TlsProtocol.java:629) ~[bctls-jdk15on-169b04.jar:1.68.99.0] at org.bouncycastle.tls.TlsProtocol.processRecord(TlsProtocol.java:519) ~[bctls-jdk15on-169b04.jar:1.68.99.0] at org.bouncycastle.tls.RecordStream.readRecord(RecordStream.java:245) ~[bctls-jdk15on-169b04.jar:1.68.99.0] at org.bouncycastle.tls.TlsProtocol.safeReadRecord(TlsProtocol.java:777) ~[bctls-jdk15on-169b04.jar:1.68.99.0] at org.bouncycastle.tls.TlsProtocol.blockForHandshake(TlsProtocol.java:370) ~[bctls-jdk15on-169b04.jar:1.68.99.0] at org.bouncycastle.tls.TlsClientProtocol.connect(TlsClientProtocol.java:86) ~[bctls-jdk15on-169b04.jar:1.68.99.0] at org.bouncycastle.jsse.provider.ProvSSLSocketDirect.startHandshake(ProvSSLSocketDirect.java:445) ~[bctls-jdk15on-169b04.jar:1.68.99.0] at org.bouncycastle.jsse.provider.ProvSSLSocketDirect.startHandshake(ProvSSLSocketDirect.java:426) ~[bctls-jdk15on-169b04.jar:1.68.99.0] at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:567) ~[?:?] at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:183) ~[?:?] at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1375) ~[?:?] at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1350) ~[?:?] at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:220) ~[?:?] at com.sun.xml.ws.transport.http.client.HttpClientTransport.getOutput(HttpClientTransport.java:119) ~[jaxws-rt-2.3.1.jar:2.3.1] ... 20 more

broken_handshake.pcap.gz

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions