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.

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
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.
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 moreCaused 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 morebroken_handshake.pcap.gz