title: SSL handshake failure after ClientHello in Ubuntu 20.04 and Debian 10 (works in Ubuntu 18.04 and Debian 9)
body: <p>I have been trying to use Oracle Cloud Email Delivery Service. Once configured it provides SMTP credentials which you can use to send email from approved senders.</p>
  
  <p>I am stuck with few interesting scenarios.
  It works in Ubuntu 18.04 but fails in docker container(running Debian 10) running on same machine.</p>
  
  <p>I was testing handshake with openssl s_client</p>
  
  <pre><code>echo QUIT | openssl s_client -starttls smtp -crlf -connect smtp.email.ap-mumbai-1.oci.oraclecloud.com:587
  </code></pre>
  
  <p>This command works fine in Ubuntu 18.04 but fails with handshake failure in docker container running Debian 10</p>
  
  <p>Output from Docker Container</p>
  
  <pre><code>root@06369bfe7c16:/var/www/html# echo QUIT | openssl s_client -starttls smtp -crlf -connect smtp.email.ap-mumbai-1.oci.oraclecloud.com:587
  CONNECTED(00000003)
  140491098481792:error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure:../ssl/record/rec_layer_s3.c:1544:SSL alert number 40
  ---
  no peer certificate available
  ---
  No client certificate CA names sent
  ---
  SSL handshake has read 199 bytes and written 367 bytes
  Verification: OK
  ---
  New, (NONE), Cipher is (NONE)
  Secure Renegotiation IS NOT supported
  Compression: NONE
  Expansion: NONE
  No ALPN negotiated
  Early data was not sent
  Verify return code: 0 (ok)
  ---
  root@06369bfe7c16:/var/www/html#
  </code></pre>
  
  <p>I tried to check openssl versions in both.</p>
  
  <p>18.04 is having openssl version <code>OpenSSL 1.1.1  11 Sep 2018</code></p>
  
  <p>Docker container is having openssl version <code>OpenSSL 1.1.1d  10 Sep 2019</code></p>
  
  <p><strong>Can it be something related to versions?</strong></p>
  
  <p>I tried to debug more via Wireshark to see how ClientHello messages are sent -</p>
  
  <p>ClientHello from Ubuntu 18.04 ( which returns in success)</p>
  
  <pre><code>TLSv1.2 Record Layer: Handshake Protocol: Client Hello
      Content Type: Handshake (22)
      Version: TLS 1.0 (0x0301)
      Length: 339
      Handshake Protocol: Client Hello
          Handshake Type: Client Hello (1)
          Length: 335
          Version: TLS 1.2 (0x0303)
          Random: e595f987b8d92387f7114d9dee4df7bc3f00b5b082ba0ec8…
          Session ID Length: 32
          Session ID: 74c873d7894514a047e0763cd14c01fb19a4f238cb9085f2…
          Cipher Suites Length: 62
          Cipher Suites (31 suites)
              Cipher Suite: TLS_AES_256_GCM_SHA384 (0x1302)
              Cipher Suite: TLS_CHACHA20_POLY1305_SHA256 (0x1303)
              Cipher Suite: TLS_AES_128_GCM_SHA256 (0x1301)
              Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (0xc02c)
              Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (0xc030)
              Cipher Suite: TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (0x009f)
              Cipher Suite: TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 (0xcca9)
              Cipher Suite: TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (0xcca8)
              Cipher Suite: TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (0xccaa)
              Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (0xc02b)
              Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f)
              Cipher Suite: TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (0x009e)
              Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 (0xc024)
              Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (0xc028)
              Cipher Suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 (0x006b)
              Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 (0xc023)
              Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (0xc027)
              Cipher Suite: TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 (0x0067)
              Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a)
              Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014)
              Cipher Suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA (0x0039)
              Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (0xc009)
              Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013)
              Cipher Suite: TLS_DHE_RSA_WITH_AES_128_CBC_SHA (0x0033)
              Cipher Suite: TLS_RSA_WITH_AES_256_GCM_SHA384 (0x009d)
              Cipher Suite: TLS_RSA_WITH_AES_128_GCM_SHA256 (0x009c)
              Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA256 (0x003d)
              Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA256 (0x003c)
              Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA (0x0035)
              Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA (0x002f)
              Cipher Suite: TLS_EMPTY_RENEGOTIATION_INFO_SCSV (0x00ff)
          Compression Methods Length: 1
          Compression Methods (1 method)
              Compression Method: null (0)
          Extensions Length: 200
          Extension: server_name (len=47)
              Type: server_name (0)
              Length: 47
              Server Name Indication extension
          Extension: ec_point_formats (len=4)
              Type: ec_point_formats (11)
              Length: 4
              EC point formats Length: 3
              Elliptic curves point formats (3)
                  EC point format: uncompressed (0)
                  EC point format: ansiX962_compressed_prime (1)
                  EC point format: ansiX962_compressed_char2 (2)
          Extension: supported_groups (len=12)
              Type: supported_groups (10)
              Length: 12
              Supported Groups List Length: 10
              Supported Groups (5 groups)
          Extension: session_ticket (len=0)
              Type: session_ticket (35)
              Length: 0
              Data (0 bytes)
          Extension: encrypt_then_mac (len=0)
              Type: encrypt_then_mac (22)
              Length: 0
          Extension: extended_master_secret (len=0)
              Type: extended_master_secret (23)
              Length: 0
          Extension: signature_algorithms (len=48)
              Type: signature_algorithms (13)
              Length: 48
              Signature Hash Algorithms Length: 46
              Signature Hash Algorithms (23 algorithms)
                  Signature Algorithm: ecdsa_secp256r1_sha256 (0x0403)
                  Signature Algorithm: ecdsa_secp384r1_sha384 (0x0503)
                  Signature Algorithm: ecdsa_secp521r1_sha512 (0x0603)
                  Signature Algorithm: ed25519 (0x0807)
                  Signature Algorithm: ed448 (0x0808)
                  Signature Algorithm: rsa_pss_pss_sha256 (0x0809)
                  Signature Algorithm: rsa_pss_pss_sha384 (0x080a)
                  Signature Algorithm: rsa_pss_pss_sha512 (0x080b)
                  Signature Algorithm: rsa_pss_rsae_sha256 (0x0804)
                  Signature Algorithm: rsa_pss_rsae_sha384 (0x0805)
                  Signature Algorithm: rsa_pss_rsae_sha512 (0x0806)
                  Signature Algorithm: rsa_pkcs1_sha256 (0x0401)
                  Signature Algorithm: rsa_pkcs1_sha384 (0x0501)
                  Signature Algorithm: rsa_pkcs1_sha512 (0x0601)
                  Signature Algorithm: SHA224 ECDSA (0x0303)
                  Signature Algorithm: ecdsa_sha1 (0x0203)
                  Signature Algorithm: SHA224 RSA (0x0301)
                  Signature Algorithm: rsa_pkcs1_sha1 (0x0201)
                  Signature Algorithm: SHA224 DSA (0x0302)
                  Signature Algorithm: SHA1 DSA (0x0202)
                  Signature Algorithm: SHA256 DSA (0x0402)
                  Signature Algorithm: SHA384 DSA (0x0502)
                  Signature Algorithm: SHA512 DSA (0x0602)
          Extension: supported_versions (len=9)
              Type: supported_versions (43)
              Length: 9
              Supported Versions length: 8
              Supported Version: TLS 1.3 (0x0304)
              Supported Version: TLS 1.2 (0x0303)
              Supported Version: TLS 1.1 (0x0302)
              Supported Version: TLS 1.0 (0x0301)
          Extension: psk_key_exchange_modes (len=2)
              Type: psk_key_exchange_modes (45)
              Length: 2
              PSK Key Exchange Modes Length: 1
              PSK Key Exchange Mode: PSK with (EC)DHE key establishment (psk_dhe_ke) (1)
          Extension: key_share (len=38)
              Type: key_share (51)
              Length: 38
              Key Share extension
  </code></pre>
  
  <p>ClientHello message from Docker Container (which results in handshake failure SSL alert number 40)</p>
  
  <pre><code>TLSv1.2 Record Layer: Handshake Protocol: Client Hello
      Content Type: Handshake (22)
      Version: TLS 1.0 (0x0301)
      Length: 234
      Handshake Protocol: Client Hello
          Handshake Type: Client Hello (1)
          Length: 230
          Version: TLS 1.2 (0x0303)
          Random: 20375888f578157f3989533cc8d2c6e5b1db2795dba56ff2…
          Session ID Length: 0
          Cipher Suites Length: 56
          Cipher Suites (28 suites)
              Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (0xc02c)
              Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (0xc030)
              Cipher Suite: TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (0x009f)
              Cipher Suite: TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 (0xcca9)
              Cipher Suite: TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (0xcca8)
              Cipher Suite: TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (0xccaa)
              Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (0xc02b)
              Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f)
              Cipher Suite: TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (0x009e)
              Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 (0xc024)
              Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (0xc028)
              Cipher Suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 (0x006b)
              Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 (0xc023)
              Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (0xc027)
              Cipher Suite: TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 (0x0067)
              Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a)
              Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014)
              Cipher Suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA (0x0039)
              Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (0xc009)
              Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013)
              Cipher Suite: TLS_DHE_RSA_WITH_AES_128_CBC_SHA (0x0033)
              Cipher Suite: TLS_RSA_WITH_AES_256_GCM_SHA384 (0x009d)
              Cipher Suite: TLS_RSA_WITH_AES_128_GCM_SHA256 (0x009c)
              Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA256 (0x003d)
              Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA256 (0x003c)
              Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA (0x0035)
              Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA (0x002f)
              Cipher Suite: TLS_EMPTY_RENEGOTIATION_INFO_SCSV (0x00ff)
          Compression Methods Length: 1
          Compression Methods (1 method)
              Compression Method: null (0)
          Extensions Length: 133
          Extension: server_name (len=47)
              Type: server_name (0)
              Length: 47
              Server Name Indication extension
          Extension: ec_point_formats (len=4)
              Type: ec_point_formats (11)
              Length: 4
              EC point formats Length: 3
              Elliptic curves point formats (3)
                  EC point format: uncompressed (0)
                  EC point format: ansiX962_compressed_prime (1)
                  EC point format: ansiX962_compressed_char2 (2)
          Extension: supported_groups (len=12)
              Type: supported_groups (10)
              Length: 12
              Supported Groups List Length: 10
              Supported Groups (5 groups)
          Extension: session_ticket (len=0)
              Type: session_ticket (35)
              Length: 0
              Data (0 bytes)
          Extension: encrypt_then_mac (len=0)
              Type: encrypt_then_mac (22)
              Length: 0
          Extension: extended_master_secret (len=0)
              Type: extended_master_secret (23)
              Length: 0
          Extension: signature_algorithms (len=42)
              Type: signature_algorithms (13)
              Length: 42
              Signature Hash Algorithms Length: 40
              Signature Hash Algorithms (20 algorithms)
                  Signature Algorithm: ecdsa_secp256r1_sha256 (0x0403)
                  Signature Algorithm: ecdsa_secp384r1_sha384 (0x0503)
                  Signature Algorithm: ecdsa_secp521r1_sha512 (0x0603)
                  Signature Algorithm: ed25519 (0x0807)
                  Signature Algorithm: ed448 (0x0808)
                  Signature Algorithm: rsa_pss_pss_sha256 (0x0809)
                  Signature Algorithm: rsa_pss_pss_sha384 (0x080a)
                  Signature Algorithm: rsa_pss_pss_sha512 (0x080b)
                  Signature Algorithm: rsa_pss_rsae_sha256 (0x0804)
                  Signature Algorithm: rsa_pss_rsae_sha384 (0x0805)
                  Signature Algorithm: rsa_pss_rsae_sha512 (0x0806)
                  Signature Algorithm: rsa_pkcs1_sha256 (0x0401)
                  Signature Algorithm: rsa_pkcs1_sha384 (0x0501)
                  Signature Algorithm: rsa_pkcs1_sha512 (0x0601)
                  Signature Algorithm: SHA224 ECDSA (0x0303)
                  Signature Algorithm: SHA224 RSA (0x0301)
                  Signature Algorithm: SHA224 DSA (0x0302)
                  Signature Algorithm: SHA256 DSA (0x0402)
                  Signature Algorithm: SHA384 DSA (0x0502)
                  Signature Algorithm: SHA512 DSA (0x0602)
  
  </code></pre>
  
  <p>This is ServerHello message from Ubuntu 18.04</p>
  
  <pre><code>TLSv1.2 Record Layer: Handshake Protocol: Multiple Handshake Messages
      Content Type: Handshake (22)
      Version: TLS 1.2 (0x0303)
      Length: 4345
      Handshake Protocol: Server Hello
          Handshake Type: Server Hello (2)
          Length: 81
          Version: TLS 1.2 (0x0303)
          Random: 5ecea16938ffb32685dee0d46241ab4533820a178f3766e6…
          Session ID Length: 32
          Session ID: 5ecea169972b4c49269218eb6d64fbdeedb76539703d48e5…
          Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f)
          Compression Method: null (0)
          Extensions Length: 9
          Extension: renegotiation_info (len=1)
          Extension: extended_master_secret (len=0)
      Handshake Protocol: Certificate
      Handshake Protocol: Server Key Exchange
          Handshake Type: Server Key Exchange (12)
          Length: 329
          EC Diffie-Hellman Server Params
              Curve Type: named_curve (0x03)
              Named Curve: secp256r1 (0x0017)
              Pubkey Length: 65
              Pubkey: 048f81fb0fcd06c8f1d50620af144965cae3dd3804df3454…
              Signature Algorithm: rsa_pkcs1_sha256 (0x0401)
              Signature Length: 256
              Signature: 76bf06d1a887440d01be65938a92094510ae52e031463d58…
      Handshake Protocol: Server Hello Done
  </code></pre>
  
  <p>Server seems to use CipherSuite <strong>TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256</strong> which happens to be present in Docker Container ClientHello as well.</p>
  
  <p>So What I am missing in this case. I am new to SSL debugging. </p>
  
  <p>If Ciphersuites are matching what could be different so that servers returns handshake failure? </p>
  
  <p>Please provide me directions what can I investigate next.</p>
  
  <p>I have uploaded wireshark captures at <a href="https://gofile.io/d/ERJXNe" rel="nofollow noreferrer">https://gofile.io/d/ERJXNe</a></p>
  
  <p>There is one capture from docker container running Debian-9,(openssl 1.1.0l) which results in handshake success.</p>
  
  <p>Update: 
  I tried to use openssl s_client in latest Ubuntu 20.04 VM, it fails with handshake failure.</p>