[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-security-dev
Subject:    Re: Not possible to disable new TLS extensions for TLS 1.2 connections
From:       Amir Khassaia <amir.khassaia () gmail ! com>
Date:       2019-02-13 22:35:48
Message-ID: CAJ3+AwcDvJgzjybKd-fOs1fh1aKyCSAXE5fC5hu8LxEQiFjTyg () mail ! gmail ! com
[Download RAW message or body]

While this is somewhat similar its still a little different to what I was
asking because you can control named groups right now with the system
property, eg. jdk.tls.namedGroups (yes its global not ideal) and also at
the socket level but at least you dont have to drop TLS level.
For the other extensions I mentioned, you cannot control them at all you
have to drop TLS level, even a system property is better but of course
something per connection eg, SSLParameters is ideal.



On Thu, Feb 14, 2019 at 9:22 AM Thomas Lußnig <openjdk@suche.org> wrote:

> Hi,
>
> i check the old mails. In your case the problem was about the EC-Group
> extensions. If the server receive an unknown group he break the handshake
> with an alert. What was interesting is the fact it did not break after
> client hello but after Client-RSA-Key with alert illgegalParameter. I
> managed to establish the connection by disable all cipher suites using ec
> (only for this destination) not an good but an working solution.
> Maybe you can provide an ssl debug log or pcap so that is is possible to
> see if the same type of error happen.
>
> Gruß Thomas
>
> Sequence was:
>
> Client-Hello (SSLv3 - TLSv1.2)
> Server-Hello(SSLv3)
> Server-Certificates(SSLv3)
> Client-RSA-Key(TLSv1.2)
> Server-Alert(SSLv3 , FATAL , IllegalParameter)
>
>
> p.s. for the Problem with exception about unsupported group in jdk10
> (fixed in 11) i found an workaround by only offering RSA and no EC suites
>  to the server that send 65535 as EC group that was causing the trouble.
> Am 13.02.2019 um 23:08:22 schrieb Amir Khassaia:
>
> Hi Thomas,
> Can you confirm its tied to new extensions to TLS 1.2 client hello and
> whether you diagnosed which one was the problem in Lotus Notes case ?
>
> On Thu, Feb 14, 2019 at 9:05 AM Thomas Lußnig <openjdk@suche.org> wrote:
>
>> Hi,
>>
>> maybe two points.
>>
>> 1) Older lotus notes server have the problem.
>> 2) The problem can be solved if you disable TLSv1.3 or even TLSv1.2
>> 3) Maybe it would be an good idea to build an set of client hello's with
>> different options.
>>       Or even an generator. Than you send if and check the result since
>> the servers with problem
>>       only reply with an ssl alert. So you can check it without an ssl
>> engine or jdk build
>>
>>
>> Gruß Thomas
>>
>> Am 13.02.2019 um 22:44:31 schrieb Xuelei Fan:
>> > Hi Amir,
>> >
>> > Could you build OpenJDK by yourself?  If it is doable, I could send
>> > your a patch to disable the extension so that you can confirm if and
>> > which extension is the underlying problem.
>> >
>> > Thanks,
>> > Xuelei
>> >
>> >
>> > On 2/13/2019 1:16 PM, Amir Khassaia wrote:
>> >> Hi Xuelei,
>> >> There were 2 distinct cases of change of behaviour.
>> >>
>> >>   * The "CN=invalid2.invalid, OU="No SNI provided" reliably works
>> >>     without SNI in Java 8 but is indeed fixed by having an SNI included
>> >>     which perhaps was needed all along. This one is reported by
>> XMPP/TLS
>> >>     connection from talk.google.com:5222 <http://talk.google.com:5222>
>> >>   * The aborted handshake case (client_hello traces that I've provided)
>> >>     this happened with a hardware device which was replicable with an
>> >>     SSL socket handshake program that I referenced in the gist.
>> >>     Unfortunately replication requires a specific device model so it
>> >>     wont be possible to see it for yourself. The workaround there was
>> to
>> >>     either downgrade JRE to < 11 or to switch JRE globally to use TLS
>> >>     1.0 or TLS 1.1 via the system property. This is where your proposed
>> >>     enhancement will be of great help as it will allow a per connection
>> >>     type decision.
>> >>
>> >>
>> >> On Wed, Feb 13, 2019 at 3:01 PM Xuelei Fan <xuelei.fan@oracle.com
>> >> <mailto:xuelei.fan@oracle.com>> wrote:
>> >>
>> >>     Hi Amir,
>> >>
>> >>     It should be rare now the a TLS vendor cannot ignore unknown
>> >> extensions.
>> >>
>> >>       > "issuer": "CN=invalid2.invalid, OU="No SNI provided;
>> >>       > please fix your client."",
>> >>     The error message encapsulated in the certificate does not sound
>> >> right
>> >>     to me.  Is it caused by the absence of SNI extension?
>> >>
>> >>     Did you have a test case that I can reproduce the problem?
>> >>
>> >>     Thanks & Regards,
>> >>     Xuelei
>> >>
>> >>
>> >>     On 1/7/2019 9:27 PM, Amir Khassaia wrote:
>> >>      > Xuelei,
>> >>      > The certificate in the connection is a red herring and not
>> >>     important.
>> >>      > It's actually a very unusual behaviour by talk.google.com
>> >>     <http://talk.google.com>
>> >>      > <http://talk.google.com> endpoint to encapsulate an error
>> message
>> >>     inside
>> >>      > a certificate.
>> >>      >
>> >>      > As per the output I included:
>> >>      >
>> >>      > /"certificate" : { />/    "version"            : "v3", />/
>> >>     "serial number"      : "00 90 76 89 18 E9 33 93 A0", />/
>> >> "signature algorithm": "SHA256withRSA", />/    "issuer"
>> >>       : "CN=invalid2.invalid, OU="No SNI provided; />/please fix your
>> >>     client."", />/    "not before"         : "2015-01-01 11:00:00.000
>> >>     AEDT", />/    "not  after"         : "2030-01-01 11:00:00.000
>> AEDT",
>> >>     />/    "subject"            : "CN=invalid2.invalid, OU="No SNI
>> >>     provided; />/please fix your client."",/
>> >>      >
>> >>      > /
>> >>      > /
>> >>      >
>> >>      > This certificate simply masks the TLS interoperability issue
>> >> as an
>> >>      > untrusted certificate issue.
>> >>      >
>> >>      > The fact is, some of the extensions sent by JSSE are changes to
>> >>     TLS 1.2
>> >>      > to support TLS 1.3, this however affects some clients
>> >> adversely in
>> >>      > practice and usually JDK provides properties to turn new
>> >>     enhancements
>> >>      > off and work around such behaviour, for the extensions I
>> >>     mentioned this
>> >>      > is not provided and hence they are always sent for client
>> sockets
>> >>     unless
>> >>      > TLSv1.2 is not in use.
>> >>      >
>> >>      > The impact to us is that upgrading to JDK11 means for some
>> >>     endpoints or
>> >>      > devices that are not 100% compliant to the spec the security is
>> >>     reduced
>> >>      > as we have to now work around to drop connections to these to
>> >>     TLSv1.1 or
>> >>      > TLS1.0 or not to move to Java 11 at all.
>> >>      >
>> >>      > My request is simply to have all of the new extensions
>> >>     configurable on
>> >>      > individual basis so that they can be turned off if needed for
>> >>      > compatibility just like most other security enhancements that
>> >> were
>> >>      > delivered in the past.
>> >>      >
>> >>      > It appears some of the issues can come from
>> >>      >
>> >>      > - inclusion of RSASSA-PSS alg in TLS 1.2 handshakes but these
>> can
>> >>      > disabled at least
>> >>      >
>> >>      > -signature_algorithms_cert and supported_versions extensions
>> >>     which seem
>> >>      > to be hardcoded for TLS 1.2 (I was not able to conclusively
>> >> identify
>> >>      > which of these caused my troubles)
>> >>      >
>> >>      > https://tools.ietf.org/html/rfc8446#section-1.3 does say that
>> TLS
>> >>     1.2
>> >>      > clients are affected but in an optional manner.Just today I've
>> >>      > encountered another Java 11 interop issue with TLS but this time
>> >>     with a
>> >>      > physical device which can have a long shelf life yet running a
>> >>     simple
>> >>      > client socket handshake abruptly terminates the connection upon
>> >>     client
>> >>      > hello (no server_hello at all), and downgrading the JRE below 11
>> >>     works
>> >>      > fine. I'm including a trace for that as well:
>> >>      >
>> >>      >
>> >>      > javax.net.ssl|DEBUG|01|main|2019-01-0813:40:14.395
>> >> AEDT|SSLCipher.java:437|jdk.tls.keyLimits:   entry =
>> >>     AES/GCM/NoPadding KeyUpdate2^37. AES/GCM/NOPADDING:KEYUPDATE
>> >>     =137438953472
>> >>      >
>> >>      > javax.net.ssl|WARNING|01|main|2019-01-08 13:40:14.433
>> >>      > AEDT|ServerNameExtension.java:255|Unable to indicate server name
>> >>      >
>> >>      > javax.net.ssl|DEBUG|01|main|2019-01-08 13:40:14.433
>> >>      > AEDT|SSLExtensions.java:235|Ignore, context unavailable
>> >> extension:
>> >>      > server_name
>> >>      >
>> >>      > javax.net.ssl|DEBUG|01|main|2019-01-08 13:40:14.433
>> >>      > AEDT|SSLExtensions.java:235|Ignore, context unavailable
>> >> extension:
>> >>      > status_request
>> >>      >
>> >>      > javax.net.ssl|WARNING|01|main|2019-01-08 13:40:14.443
>> >>      > AEDT|SignatureScheme.java:282|Signature algorithm, ed25519, is
>> >> not
>> >>      > supported by the underlying providers
>> >>      >
>> >>      > javax.net.ssl|WARNING|01|main|2019-01-08 13:40:14.444
>> >>      > AEDT|SignatureScheme.java:282|Signature algorithm, ed448, is not
>> >>      > supported by the underlying providers
>> >>      >
>> >>      > javax.net.ssl|INFO|01|main|2019-01-08 13:40:14.449
>> >>      > AEDT|AlpnExtension.java:161|No available application protocols
>> >>      >
>> >>      > javax.net.ssl|DEBUG|01|main|2019-01-08 13:40:14.449
>> >>      > AEDT|SSLExtensions.java:235|Ignore, context unavailable
>> >> extension:
>> >>      > application_layer_protocol_negotiation
>> >>      >
>> >>      > javax.net.ssl|DEBUG|01|main|2019-01-08 13:40:14.450
>> >>      > AEDT|SSLExtensions.java:235|Ignore, context unavailable
>> >> extension:
>> >>      > status_request_v2
>> >>      >
>> >>      > javax.net.ssl|DEBUG|01|main|2019-01-08 13:40:14.453
>> >>      > AEDT|ClientHello.java:651|Produced ClientHello handshake
>> >> message (
>> >>      >
>> >>      > "ClientHello": {
>> >>      >
>> >>      > "client version"      : "TLSv1.2",
>> >>      >
>> >>      > "random"              : "1A BA E8 FC 59 00 AB DF 9A 1A 07 94 24
>> >>     7F 34 3D
>> >>      > 0B D2 7D 10 72 52 54 CD 44 43 62 E8 8B 42 C6 68",
>> >>      >
>> >>      > "session id"          : "",
>> >>      >
>> >>      > "cipher suites"       :
>> >>      > "[TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256(0xC023),
>> >>      > TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256(0xC027),
>> >>      > TLS_RSA_WITH_AES_128_CBC_SHA256(0x003C),
>> >>      > TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256(0xC029),
>> >>      > TLS_RSA_WITH_AES_128_CBC_SHA(0x002F)]",
>> >>      >
>> >>      > "compression methods" : "00",
>> >>      >
>> >>      > "extensions"          : [
>> >>      >
>> >>      > "supported_groups (10)": {
>> >>      >
>> >>      > "versions": [secp256r1, secp384r1, secp521r1, secp160k1]
>> >>      >
>> >>      >      },
>> >>      >
>> >>      > "ec_point_formats (11)": {
>> >>      >
>> >>      > "formats": [uncompressed]
>> >>      >
>> >>      >      },
>> >>      >
>> >>      > "signature_algorithms (13)": {
>> >>      >
>> >>      > "signature schemes": [ecdsa_secp256r1_sha256,
>> >>     ecdsa_secp384r1_sha384,
>> >>      > ecdsa_secp512r1_sha512, rsa_pss_rsae_sha256,
>> rsa_pss_rsae_sha384,
>> >>      > rsa_pss_rsae_sha512, rsa_pss_pss_sha256, rsa_pss_pss_sha384,
>> >>      > rsa_pss_pss_sha512, rsa_pkcs1_sha256, rsa_pkcs1_sha384,
>> >>      > rsa_pkcs1_sha512, dsa_sha256, ecdsa_sha224, rsa_sha224,
>> >> dsa_sha224,
>> >>      > ecdsa_sha1, rsa_pkcs1_sha1, dsa_sha1, rsa_md5]
>> >>      >
>> >>      >      },
>> >>      >
>> >>      > "signature_algorithms_cert (50)": {
>> >>      >
>> >>      > "signature schemes": [ecdsa_secp256r1_sha256,
>> >>     ecdsa_secp384r1_sha384,
>> >>      > ecdsa_secp512r1_sha512, rsa_pss_rsae_sha256,
>> rsa_pss_rsae_sha384,
>> >>      > rsa_pss_rsae_sha512, rsa_pss_pss_sha256, rsa_pss_pss_sha384,
>> >>      > rsa_pss_pss_sha512, rsa_pkcs1_sha256, rsa_pkcs1_sha384,
>> >>      > rsa_pkcs1_sha512, dsa_sha256, ecdsa_sha224, rsa_sha224,
>> >> dsa_sha224,
>> >>      > ecdsa_sha1, rsa_pkcs1_sha1, dsa_sha1, rsa_md5]
>> >>      >
>> >>      >      },
>> >>      >
>> >>      > "extended_master_secret (23)": {
>> >>      >
>> >>      >        <empty>
>> >>      >
>> >>      >      },
>> >>      >
>> >>      > "supported_versions (43)": {
>> >>      >
>> >>      > "versions": [TLSv1.2, TLSv1.1]
>> >>      >
>> >>      >      },
>> >>      >
>> >>      > "renegotiation_info (65,281)": {
>> >>      >
>> >>      > "renegotiated connection": [<no renegotiated connection>]
>> >>      >
>> >>      >      }
>> >>      >
>> >>      >    ]
>> >>      >
>> >>      > }
>> >>      >
>> >>      > )
>> >>      >
>> >>      > javax.net.ssl|DEBUG|01|main|2019-01-08 13:40:14.455
>> >>      > AEDT|Alert.java:232|Received alert message (
>> >>      >
>> >>      > "Alert": {
>> >>      >
>> >>      > "level"      : "fatal",
>> >>      >
>> >>      > "description": "handshake_failure"
>> >>      >
>> >>      > }
>> >>      >
>> >>      > )
>> >>      >
>> >>      > javax.net.ssl|ERROR|01|main|2019-01-08 13:40:14.456
>> >>      > AEDT|TransportContext.java:313|Fatal (HANDSHAKE_FAILURE):
>> >>     Received fatal
>> >>      > alert: handshake_failure (
>> >>      >
>> >>      > "throwable" : {
>> >>      >
>> >>      >    javax.net.ssl.SSLHandshakeException: Received fatal alert:
>> >>      > handshake_failure
>> >>      >
>> >>      >      at
>> >> java.base/sun.security.ssl.Alert.createSSLException(Alert.java:128)
>> >>      >
>> >>      >      at
>> >> java.base/sun.security.ssl.Alert.createSSLException(Alert.java:117)
>> >>      >
>> >>      >      at
>> >>      >
>> >>
>> java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:308)
>> >>      >
>> >>      >      at
>> >>      >
>> >> java.base/sun.security.ssl.Alert$AlertConsumer.consume(Alert.java:279)
>> >>      >
>> >>      >      at
>> >>      >
>> >>
>> java.base/sun.security.ssl.TransportContext.dispatch(TransportContext.java:181)
>> >>      >
>> >>      >      at
>> >>      >
>> >> java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:164)
>> >>      >
>> >>      >      at
>> >>      >
>> >>
>> java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1152)
>> >>      >
>> >>      >      at
>> >>      >
>> >>
>> java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1063)
>> >>      >
>> >>      >      at
>> >>      >
>> >>
>> java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:402)
>> >>      >
>> >>      >      at SslSocketClient.main(SslSocketClient.kt:47)}
>> >>      >
>> >>      >
>> >>      > )
>> >>      >
>> >>      > javax.net.ssl|DEBUG|01|main|2019-01-08 13:40:14.457
>> >>      > AEDT|SSLSocketImpl.java:1361|close the underlying socket
>> >>      >
>> >>      > javax.net.ssl|DEBUG|01|main|2019-01-08 13:40:14.457
>> >>      > AEDT|SSLSocketImpl.java:1380|close the SSL connection
>> >> (initiative)
>> >>      >
>> >>      > Exception in thread "main" javax.net.ssl.SSLHandshakeException:
>> >>     Received
>> >>      > fatal alert: handshake_failure
>> >>      >
>> >>      >    at
>> >> java.base/sun.security.ssl.Alert.createSSLException(Alert.java:128)
>> >>      >
>> >>      >    at
>> >> java.base/sun.security.ssl.Alert.createSSLException(Alert.java:117)
>> >>      >
>> >>      >    at
>> >>      >
>> >>
>> java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:308)
>> >>      >
>> >>      >    at
>> >> java.base/sun.security.ssl.Alert$AlertConsumer.consume(Alert.java:279)
>> >>      >
>> >>      >    at
>> >>      >
>> >>
>> java.base/sun.security.ssl.TransportContext.dispatch(TransportContext.java:181)
>> >>      >
>> >>      >    at
>> >> java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:164)
>> >>      >
>> >>      >    at
>> >>      >
>> >>
>> java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1152)
>> >>      >
>> >>      >    at
>> >>      >
>> >>
>> java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1063)
>> >>      >
>> >>      >    at
>> >>      >
>> >>
>> java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:402)
>> >>      >
>> >>      >    at SslSocketClient.main(SslSocketClient.kt:47)
>> >>      >
>> >>      >
>> >>      >
>> >>      >
>> >>
>>
>

[Attachment #3 (text/html)]

<div dir="ltr">While this is somewhat similar its still a little different to what I \
was asking because you can control named groups right now with the system property, \
eg. jdk.tls.namedGroups (yes its global not ideal) and also at the socket level but \
at least you dont have to drop TLS level.<div>For the other extensions I mentioned, \
you cannot control them at all you have to drop TLS level, even a system property is \
better but of course something per connection eg, SSLParameters is \
ideal.</div><div><br></div><div><br></div></div><br><div class="gmail_quote"><div \
dir="ltr" class="gmail_attr">On Thu, Feb 14, 2019 at 9:22 AM Thomas Lußnig &lt;<a \
href="mailto:openjdk@suche.org">openjdk@suche.org</a>&gt; wrote:<br></div><blockquote \
class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid \
rgb(204,204,204);padding-left:1ex">  
    
  
  <div>
    <p>Hi,</p>
    <p>i check the old mails. In your case the problem was about the
      EC-Group extensions. If the server receive an unknown group he
      break the handshake with an alert. What was interesting is the
      fact it did not break after client hello but after Client-RSA-Key
      with alert illgegalParameter. I managed to establish the
      connection by disable all cipher suites using ec (only for this
      destination) not an good but an working solution.<br>
      Maybe you can provide an ssl debug log or pcap so that is is
      possible to see if the same type of error happen.<br>
    </p>
    <p>Gruß Thomas<br>
    </p>
    <p>Sequence was:</p>
    <p>Client-Hello (SSLv3 - TLSv1.2)<br>
      Server-Hello(SSLv3)<br>
      Server-Certificates(SSLv3)<br>
      Client-RSA-Key(TLSv1.2)<br>
      Server-Alert(SSLv3 , FATAL , IllegalParameter)</p>
    <p><br>
    </p>
    <p>p.s. for the Problem with exception about unsupported group in
      jdk10 (fixed in 11) i found an workaround by only offering RSA and
      no EC suites<br>
        to the server that send 65535 as EC group that was causing the
      trouble.</p>
    <div class="gmail-m_-4351653415133600136moz-cite-prefix">Am 13.02.2019 um \
23:08:22 schrieb Amir  Khassaia:<br>
    </div>
    <blockquote type="cite">
      
      <div dir="ltr">Hi Thomas,
        <div>Can you confirm its tied to new extensions to TLS 1.2
          client hello and whether you diagnosed which one was the
          problem in Lotus Notes case ?</div>
      </div>
      <br>
      <div class="gmail_quote">
        <div dir="ltr" class="gmail_attr">On Thu, Feb 14, 2019 at 9:05
          AM Thomas Lußnig &lt;<a href="mailto:openjdk@suche.org" \
target="_blank">openjdk@suche.org</a>&gt; wrote:<br>  </div>
        <blockquote class="gmail_quote" style="margin:0px 0px 0px \
0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi,<br>  <br>
          maybe two points.<br>
          <br>
          1) Older lotus notes server have the problem.<br>
          2) The problem can be solved if you disable TLSv1.3 or even
          TLSv1.2<br>
          3) Maybe it would be an good idea to build an set of client
          hello&#39;s with <br>
          different options.<br>
                     Or even an generator. Than you send if and check the
          result since <br>
          the servers with problem<br>
                     only reply with an ssl alert. So you can check it
          without an ssl <br>
          engine or jdk build<br>
          <br>
          <br>
          Gruß Thomas<br>
          <br>
          Am 13.02.2019 um 22:44:31 schrieb Xuelei Fan:<br>
          &gt; Hi Amir,<br>
          &gt;<br>
          &gt; Could you build OpenJDK by yourself?   If it is doable, I
          could send <br>
          &gt; your a patch to disable the extension so that you can
          confirm if and <br>
          &gt; which extension is the underlying problem.<br>
          &gt;<br>
          &gt; Thanks,<br>
          &gt; Xuelei<br>
          &gt;<br>
          &gt;<br>
          &gt; On 2/13/2019 1:16 PM, Amir Khassaia wrote:<br>
          &gt;&gt; Hi Xuelei,<br>
          &gt;&gt; There were 2 distinct cases of change of behaviour.<br>
          &gt;&gt;<br>
          &gt;&gt;    * The &quot;CN=invalid2.invalid, OU=&quot;No SNI provided&quot;
          reliably works<br>
          &gt;&gt;        without SNI in Java 8 but is indeed fixed by
          having an SNI included<br>
          &gt;&gt;        which perhaps was needed all along. This one is
          reported by XMPP/TLS<br>
          &gt;&gt;        connection from <a href="http://talk.google.com:5222" \
                rel="noreferrer" target="_blank">talk.google.com:5222</a>
          &lt;<a href="http://talk.google.com:5222" rel="noreferrer" \
target="_blank">http://talk.google.com:5222</a>&gt;<br>  &gt;&gt;    * The aborted \
handshake case (client_hello traces  that I&#39;ve provided)<br>
          &gt;&gt;        this happened with a hardware device which was
          replicable with an<br>
          &gt;&gt;        SSL socket handshake program that I referenced in
          the gist.<br>
          &gt;&gt;        Unfortunately replication requires a specific
          device model so it<br>
          &gt;&gt;        wont be possible to see it for yourself. The
          workaround there was to<br>
          &gt;&gt;        either downgrade JRE to &lt; 11 or to switch JRE
          globally to use TLS<br>
          &gt;&gt;        1.0 or TLS 1.1 via the system property. This is
          where your proposed<br>
          &gt;&gt;        enhancement will be of great help as it will
          allow a per connection<br>
          &gt;&gt;        type decision.<br>
          &gt;&gt;<br>
          &gt;&gt;<br>
          &gt;&gt; On Wed, Feb 13, 2019 at 3:01 PM Xuelei Fan &lt;<a \
                href="mailto:xuelei.fan@oracle.com" \
                target="_blank">xuelei.fan@oracle.com</a> <br>
          &gt;&gt; &lt;mailto:<a href="mailto:xuelei.fan@oracle.com" \
target="_blank">xuelei.fan@oracle.com</a>&gt;&gt;  wrote:<br>
          &gt;&gt;<br>
          &gt;&gt;        Hi Amir,<br>
          &gt;&gt;<br>
          &gt;&gt;        It should be rare now the a TLS vendor cannot
          ignore unknown <br>
          &gt;&gt; extensions.<br>
          &gt;&gt;<br>
          &gt;&gt;            &gt; &quot;issuer&quot;: &quot;CN=invalid2.invalid, \
OU=&quot;No SNI  provided;<br>
          &gt;&gt;            &gt; please fix your client.&quot;&quot;,<br>
          &gt;&gt;        The error message encapsulated in the certificate
          does not sound <br>
          &gt;&gt; right<br>
          &gt;&gt;        to me.   Is it caused by the absence of SNI
          extension?<br>
          &gt;&gt;<br>
          &gt;&gt;        Did you have a test case that I can reproduce the
          problem?<br>
          &gt;&gt;<br>
          &gt;&gt;        Thanks &amp; Regards,<br>
          &gt;&gt;        Xuelei<br>
          &gt;&gt;<br>
          &gt;&gt;<br>
          &gt;&gt;        On 1/7/2019 9:27 PM, Amir Khassaia wrote:<br>
          &gt;&gt;          &gt; Xuelei,<br>
          &gt;&gt;          &gt; The certificate in the connection is a red
          herring and not<br>
          &gt;&gt;        important.<br>
          &gt;&gt;          &gt; It&#39;s actually a very unusual behaviour by <a \
href="http://talk.google.com" rel="noreferrer" \
                target="_blank">talk.google.com</a><br>
          &gt;&gt;        &lt;<a href="http://talk.google.com" rel="noreferrer" \
                target="_blank">http://talk.google.com</a>&gt;<br>
          &gt;&gt;          &gt; &lt;<a href="http://talk.google.com" \
rel="noreferrer" target="_blank">http://talk.google.com</a>&gt;  endpoint to \
encapsulate an error message<br>  &gt;&gt;        inside<br>
          &gt;&gt;          &gt; a certificate.<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; As per the output I included:<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; /&quot;certificate&quot; : { /&gt;/      \
&quot;version&quot;          : &quot;v3&quot;, /&gt;/     <br>
          &gt;&gt;        &quot;serial number&quot;         : &quot;00 90 76 89 18 E9 \
33 93  A0&quot;, /&gt;/            <br>
          &gt;&gt; &quot;signature algorithm&quot;: &quot;SHA256withRSA&quot;, /&gt;/ \
  &quot;issuer&quot;                     <br>
          &gt;&gt;            : &quot;CN=invalid2.invalid, OU=&quot;No SNI provided;
          /&gt;/please fix your<br>
          &gt;&gt;        client.&quot;&quot;, /&gt;/      &quot;not before&quot;     \
:  &quot;2015-01-01 11:00:00.000<br>
          &gt;&gt;        AEDT&quot;, /&gt;/      &quot;not   after&quot;             \
:  &quot;2030-01-01 11:00:00.000 AEDT&quot;,<br>
          &gt;&gt;        /&gt;/      &quot;subject&quot;                  :
          &quot;CN=invalid2.invalid, OU=&quot;No SNI<br>
          &gt;&gt;        provided; /&gt;/please fix your client.&quot;&quot;,/<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; /<br>
          &gt;&gt;          &gt; /<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; This certificate simply masks the TLS
          interoperability issue <br>
          &gt;&gt; as an<br>
          &gt;&gt;          &gt; untrusted certificate issue.<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; The fact is, some of the extensions sent by
          JSSE are changes to<br>
          &gt;&gt;        TLS 1.2<br>
          &gt;&gt;          &gt; to support TLS 1.3, this however affects
          some clients <br>
          &gt;&gt; adversely in<br>
          &gt;&gt;          &gt; practice and usually JDK provides
          properties to turn new<br>
          &gt;&gt;        enhancements<br>
          &gt;&gt;          &gt; off and work around such behaviour, for the
          extensions I<br>
          &gt;&gt;        mentioned this<br>
          &gt;&gt;          &gt; is not provided and hence they are always
          sent for client sockets<br>
          &gt;&gt;        unless<br>
          &gt;&gt;          &gt; TLSv1.2 is not in use.<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; The impact to us is that upgrading to JDK11
          means for some<br>
          &gt;&gt;        endpoints or<br>
          &gt;&gt;          &gt; devices that are not 100% compliant to the
          spec the security is<br>
          &gt;&gt;        reduced<br>
          &gt;&gt;          &gt; as we have to now work around to drop
          connections to these to<br>
          &gt;&gt;        TLSv1.1 or<br>
          &gt;&gt;          &gt; TLS1.0 or not to move to Java 11 at all.<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; My request is simply to have all of the new
          extensions<br>
          &gt;&gt;        configurable on<br>
          &gt;&gt;          &gt; individual basis so that they can be turned
          off if needed for<br>
          &gt;&gt;          &gt; compatibility just like most other security
          enhancements that <br>
          &gt;&gt; were<br>
          &gt;&gt;          &gt; delivered in the past.<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; It appears some of the issues can come from<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; - inclusion of RSASSA-PSS alg in TLS 1.2
          handshakes but these can<br>
          &gt;&gt;          &gt; disabled at least<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; -signature_algorithms_cert and
          supported_versions extensions<br>
          &gt;&gt;        which seem<br>
          &gt;&gt;          &gt; to be hardcoded for TLS 1.2 (I was not able
          to conclusively <br>
          &gt;&gt; identify<br>
          &gt;&gt;          &gt; which of these caused my troubles)<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; <a \
href="https://tools.ietf.org/html/rfc8446#section-1.3" rel="noreferrer" \
target="_blank">https://tools.ietf.org/html/rfc8446#section-1.3</a>  does say that \
TLS<br>  &gt;&gt;        1.2<br>
          &gt;&gt;          &gt; clients are affected but in an optional
          manner.Just today I&#39;ve<br>
          &gt;&gt;          &gt; encountered another Java 11 interop issue
          with TLS but this time<br>
          &gt;&gt;        with a<br>
          &gt;&gt;          &gt; physical device which can have a long shelf
          life yet running a<br>
          &gt;&gt;        simple<br>
          &gt;&gt;          &gt; client socket handshake abruptly terminates
          the connection upon<br>
          &gt;&gt;        client<br>
          &gt;&gt;          &gt; hello (no server_hello at all), and
          downgrading the JRE below 11<br>
          &gt;&gt;        works<br>
          &gt;&gt;          &gt; fine. I&#39;m including a trace for that as
          well:<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt;
          javax.net.ssl|DEBUG|01|main|2019-01-0813:40:14.395 <br>
          &gt;&gt; AEDT|SSLCipher.java:437|jdk.tls.keyLimits:    entry =<br>
          &gt;&gt;        AES/GCM/NoPadding KeyUpdate2^37.
          AES/GCM/NOPADDING:KEYUPDATE<br>
          &gt;&gt;        =137438953472<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; javax.net.ssl|WARNING|01|main|2019-01-08
          13:40:14.433<br>
          &gt;&gt;          &gt; AEDT|ServerNameExtension.java:255|Unable to
          indicate server name<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; javax.net.ssl|DEBUG|01|main|2019-01-08
          13:40:14.433<br>
          &gt;&gt;          &gt; AEDT|SSLExtensions.java:235|Ignore, context
          unavailable <br>
          &gt;&gt; extension:<br>
          &gt;&gt;          &gt; server_name<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; javax.net.ssl|DEBUG|01|main|2019-01-08
          13:40:14.433<br>
          &gt;&gt;          &gt; AEDT|SSLExtensions.java:235|Ignore, context
          unavailable <br>
          &gt;&gt; extension:<br>
          &gt;&gt;          &gt; status_request<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; javax.net.ssl|WARNING|01|main|2019-01-08
          13:40:14.443<br>
          &gt;&gt;          &gt; AEDT|SignatureScheme.java:282|Signature
          algorithm, ed25519, is <br>
          &gt;&gt; not<br>
          &gt;&gt;          &gt; supported by the underlying providers<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; javax.net.ssl|WARNING|01|main|2019-01-08
          13:40:14.444<br>
          &gt;&gt;          &gt; AEDT|SignatureScheme.java:282|Signature
          algorithm, ed448, is not<br>
          &gt;&gt;          &gt; supported by the underlying providers<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; javax.net.ssl|INFO|01|main|2019-01-08
          13:40:14.449<br>
          &gt;&gt;          &gt; AEDT|AlpnExtension.java:161|No available
          application protocols<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; javax.net.ssl|DEBUG|01|main|2019-01-08
          13:40:14.449<br>
          &gt;&gt;          &gt; AEDT|SSLExtensions.java:235|Ignore, context
          unavailable <br>
          &gt;&gt; extension:<br>
          &gt;&gt;          &gt; application_layer_protocol_negotiation<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; javax.net.ssl|DEBUG|01|main|2019-01-08
          13:40:14.450<br>
          &gt;&gt;          &gt; AEDT|SSLExtensions.java:235|Ignore, context
          unavailable <br>
          &gt;&gt; extension:<br>
          &gt;&gt;          &gt; status_request_v2<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; javax.net.ssl|DEBUG|01|main|2019-01-08
          13:40:14.453<br>
          &gt;&gt;          &gt; AEDT|ClientHello.java:651|Produced
          ClientHello handshake <br>
          &gt;&gt; message (<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; &quot;ClientHello&quot;: {<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; &quot;client version&quot;         : \
&quot;TLSv1.2&quot;,<br>  &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; &quot;random&quot;                     : &quot;1A BA \
E8 FC 59 00  AB DF 9A 1A 07 94 24<br>
          &gt;&gt;        7F 34 3D<br>
          &gt;&gt;          &gt; 0B D2 7D 10 72 52 54 CD 44 43 62 E8 8B 42
          C6 68&quot;,<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; &quot;session id&quot;               : \
&quot;&quot;,<br>  &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; &quot;cipher suites&quot;           :<br>
          &gt;&gt;          &gt;
          &quot;[TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256(0xC023),<br>
          &gt;&gt;          &gt;
          TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256(0xC027),<br>
          &gt;&gt;          &gt; TLS_RSA_WITH_AES_128_CBC_SHA256(0x003C),<br>
          &gt;&gt;          &gt;
          TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256(0xC029),<br>
          &gt;&gt;          &gt; TLS_RSA_WITH_AES_128_CBC_SHA(0x002F)]&quot;,<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; &quot;compression methods&quot; : \
&quot;00&quot;,<br>  &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; &quot;extensions&quot;               : [<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; &quot;supported_groups (10)&quot;: {<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; &quot;versions&quot;: [secp256r1, secp384r1,
          secp521r1, secp160k1]<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt;         },<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; &quot;ec_point_formats (11)&quot;: {<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; &quot;formats&quot;: [uncompressed]<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt;         },<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; &quot;signature_algorithms (13)&quot;: {<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; &quot;signature schemes&quot;:
          [ecdsa_secp256r1_sha256,<br>
          &gt;&gt;        ecdsa_secp384r1_sha384,<br>
          &gt;&gt;          &gt; ecdsa_secp512r1_sha512,
          rsa_pss_rsae_sha256, rsa_pss_rsae_sha384,<br>
          &gt;&gt;          &gt; rsa_pss_rsae_sha512, rsa_pss_pss_sha256,
          rsa_pss_pss_sha384,<br>
          &gt;&gt;          &gt; rsa_pss_pss_sha512, rsa_pkcs1_sha256,
          rsa_pkcs1_sha384,<br>
          &gt;&gt;          &gt; rsa_pkcs1_sha512, dsa_sha256, ecdsa_sha224,
          rsa_sha224, <br>
          &gt;&gt; dsa_sha224,<br>
          &gt;&gt;          &gt; ecdsa_sha1, rsa_pkcs1_sha1, dsa_sha1,
          rsa_md5]<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt;         },<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; &quot;signature_algorithms_cert (50)&quot;: {<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; &quot;signature schemes&quot;:
          [ecdsa_secp256r1_sha256,<br>
          &gt;&gt;        ecdsa_secp384r1_sha384,<br>
          &gt;&gt;          &gt; ecdsa_secp512r1_sha512,
          rsa_pss_rsae_sha256, rsa_pss_rsae_sha384,<br>
          &gt;&gt;          &gt; rsa_pss_rsae_sha512, rsa_pss_pss_sha256,
          rsa_pss_pss_sha384,<br>
          &gt;&gt;          &gt; rsa_pss_pss_sha512, rsa_pkcs1_sha256,
          rsa_pkcs1_sha384,<br>
          &gt;&gt;          &gt; rsa_pkcs1_sha512, dsa_sha256, ecdsa_sha224,
          rsa_sha224, <br>
          &gt;&gt; dsa_sha224,<br>
          &gt;&gt;          &gt; ecdsa_sha1, rsa_pkcs1_sha1, dsa_sha1,
          rsa_md5]<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt;         },<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; &quot;extended_master_secret (23)&quot;: {<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt;            &lt;empty&gt;<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt;         },<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; &quot;supported_versions (43)&quot;: {<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; &quot;versions&quot;: [TLSv1.2, TLSv1.1]<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt;         },<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; &quot;renegotiation_info (65,281)&quot;: {<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; &quot;renegotiated connection&quot;: [&lt;no
          renegotiated connection&gt;]<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt;         }<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt;      ]<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; }<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; )<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; javax.net.ssl|DEBUG|01|main|2019-01-08
          13:40:14.455<br>
          &gt;&gt;          &gt; AEDT|Alert.java:232|Received alert message
          (<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; &quot;Alert&quot;: {<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; &quot;level&quot;         : &quot;fatal&quot;,<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; &quot;description&quot;: \
&quot;handshake_failure&quot;<br>  &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; }<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; )<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; javax.net.ssl|ERROR|01|main|2019-01-08
          13:40:14.456<br>
          &gt;&gt;          &gt; AEDT|TransportContext.java:313|Fatal
          (HANDSHAKE_FAILURE):<br>
          &gt;&gt;        Received fatal<br>
          &gt;&gt;          &gt; alert: handshake_failure (<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; &quot;throwable&quot; : {<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt;      javax.net.ssl.SSLHandshakeException:
          Received fatal alert:<br>
          &gt;&gt;          &gt; handshake_failure<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt;         at<br>
          &gt;&gt;
          java.base/sun.security.ssl.Alert.createSSLException(Alert.java:128)<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt;         at<br>
          &gt;&gt;
          java.base/sun.security.ssl.Alert.createSSLException(Alert.java:117)<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt;         at<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;
java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:308)<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt;         at<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;
          java.base/sun.security.ssl.Alert$AlertConsumer.consume(Alert.java:279)<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt;         at<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;
java.base/sun.security.ssl.TransportContext.dispatch(TransportContext.java:181)<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt;         at<br>
          &gt;&gt;          &gt; <br>
          &gt;&gt;
          java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:164)<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt;         at<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;
          java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1152)<br>
  &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt;         at<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;
java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1063)<br>
  &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt;         at<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;
java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:402)<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt;         at
          SslSocketClient.main(SslSocketClient.kt:47)}<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; )<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; javax.net.ssl|DEBUG|01|main|2019-01-08
          13:40:14.457<br>
          &gt;&gt;          &gt; AEDT|SSLSocketImpl.java:1361|close the
          underlying socket<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; javax.net.ssl|DEBUG|01|main|2019-01-08
          13:40:14.457<br>
          &gt;&gt;          &gt; AEDT|SSLSocketImpl.java:1380|close the SSL
          connection <br>
          &gt;&gt; (initiative)<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt; Exception in thread &quot;main&quot;
          javax.net.ssl.SSLHandshakeException:<br>
          &gt;&gt;        Received<br>
          &gt;&gt;          &gt; fatal alert: handshake_failure<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt;      at<br>
          &gt;&gt;
          java.base/sun.security.ssl.Alert.createSSLException(Alert.java:128)<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt;      at<br>
          &gt;&gt;
          java.base/sun.security.ssl.Alert.createSSLException(Alert.java:117)<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt;      at<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;
java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:308)<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt;      at<br>
          &gt;&gt;
          java.base/sun.security.ssl.Alert$AlertConsumer.consume(Alert.java:279)<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt;      at<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;
java.base/sun.security.ssl.TransportContext.dispatch(TransportContext.java:181)<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt;      at<br>
          &gt;&gt;
          java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:164)<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt;      at<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;
          java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1152)<br>
  &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt;      at<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;
java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1063)<br>
  &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt;      at<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;
java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:402)<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt;      at
          SslSocketClient.main(SslSocketClient.kt:47)<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;          &gt;<br>
          &gt;&gt;<br>
        </blockquote>
      </div>
    </blockquote>
  </div>

</blockquote></div>



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic