Welcome to Centmin Mod Community
Register Now

OpenSSL OpenSSL 1.1.1 pre release 9 out

Discussion in 'CentOS, Redhat & Oracle Linux News' started by eva2000, Aug 22, 2018.

  1. eva2000

    eva2000 Administrator Staff Member

    54,605
    12,225
    113
    May 24, 2014
    Brisbane, Australia
    Ratings:
    +18,794
    Local Time:
    10:18 AM
    Nginx 1.27.x
    MariaDB 10.x/11.4+
    Yup hopefully this is final OpenSSL 1.1.1 beta (pre release 9) before final OpenSSL 1.1.1 version is out which will support TLS 1.3 [openssl-announce] OpenSSL version 1.1.1 pre release 9 published


     
  2. eva2000

    eva2000 Administrator Staff Member

    54,605
    12,225
    113
    May 24, 2014
    Brisbane, Australia
    Ratings:
    +18,794
    Local Time:
    10:18 AM
    Nginx 1.27.x
    MariaDB 10.x/11.4+
    For Centmin Mod 123.09beta01 or newer users who want to try it out, you just need to set in persistent config file /etc/centminmod/custom_config.inc an override variable for
    Code (Text):
    OPENSSL_VERSION='1.1.1-pre9'
    

    Then optionally use new tools/nginx-binary-backup.sh script to backup existing Nginx binary/modules and run centmin.sh menu option 4 to recompile latest Nginx 1.15 build i.e. latest is 1.15.2 right now. Once compiled, you can leverage new tools/nginx-binary-backup.sh script to backup and restore you Nginx binary/module state to switch between compiled versions :)

    example of using tools/nginx-binary-backup.sh to backup Nginx + OpenSSL 1.1.1-pre9 beta binary/modules
    Code (Text):
    tools/nginx-binary-backup.sh backup
    --------------------------------------------------------
    backup current Nginx binary and dynamic modules
    --------------------------------------------------------
    backup started...
    --------------------------------------------------------
    /home/backup-nginxbin/1.15.3-gcc-8.2.1-20180817-openssl-1.1.1-pre9-210818-183053
    +-- bin
    |   +-- nginx
    +-- dynamic-modules.conf
    +-- dynamic-modules-includes.conf
    +-- modules
        +-- ndk_http_module.so
        +-- ngx_http_brotli_filter_module.so
        +-- ngx_http_brotli_static_module.so
        +-- ngx_http_echo_module.so
        +-- ngx_http_fancyindex_module.so
        +-- ngx_http_headers_more_filter_module.so
        +-- ngx_http_image_filter_module.so
        +-- ngx_http_set_misc_module.so
        +-- ngx_http_vhost_traffic_status_module.so
        +-- ngx_stream_module.so
    
    2 directories, 13 files
    backup finished...
    --------------------------------------------------------
    backup created at /home/backup-nginxbin/1.15.3-gcc-8.2.1-20180817-openssl-1.1.1-pre9-210818-183053
    --------------------------------------------------------
    


    Once OpenSSL 1.1.1 final is released Centmin Mod 123.09beta01 will update centmin.sh itself with OPENSSL_VERSION='1.1.1' so you can remove the override from persistent config file and re-run centmin.sh menu option 4 to recompile Nginx again.

    Centmin Mod 123.09beta01 and newer will auto detect if Nginx is using an TLS 1.3 supported crypto library like OpenSSL 1.1.1 and auto append to newly created nginx HTTPS vhost's ssl_ciphers list the following TLS 1.3 ciphers at front of ssl_ciphers list
    Code (Text):
    TLS13-AES-128-GCM-SHA256:TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:
    

    However, for BoringSSL right now (will update soon) and existing Nginx HTTPS vhosts which are already in use, you will need to update ssl_ciphers list to the following which has the appended TLS 1.3 ciphers on the below single line
    Code (Text):
    ssl_ciphers TLS13-AES-128-GCM-SHA256:TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS;
    

    Then restart Nginx
    Code (Text):
    service nginx restart
    

    or command shortcut
    Code (Text):
    ngxrestart
    


    Though I am not seeing TLS 1.3 connection with 1.1.1-pre9 on Chrome Canary

    cmm-nginx-1513-openssl-111-pre9-01-canary-no-tls13.png

    Even specifically setting TLS 1.3 draft 28 doesn't help. I think OpenSSL 1.1.1-pre9 removed all drafts including draft 28 for final version ? @bassie

    cmm-nginx-1513-openssl-111-pre9-01-canary-no-tls13-enabledraft28.png
     
    Last edited: Aug 22, 2018
  3. eva2000

    eva2000 Administrator Staff Member

    54,605
    12,225
    113
    May 24, 2014
    Brisbane, Australia
    Ratings:
    +18,794
    Local Time:
    10:18 AM
    Nginx 1.27.x
    MariaDB 10.x/11.4+
    If i restore back to Nginx with OpenSSL 1.1.1 master dev branched 1.1.1-pre9-dev

    i.e. /home/backup-nginxbin/1.15.3-gcc-8.2.1-20180817-openssl-1.1.1-pre9-dev-190818-230737
    Code (Text):
    tools/nginx-binary-backup.sh list
    --------------------------------------------------------
    Listing of available Nginx binary/module backups
    --------------------------------------------------------
    /home/backup-nginxbin/1.15.3-gcc-8.2.1-20180810-openssl-1.1.0i-170818-184702
    /home/backup-nginxbin/1.15.3-gcc-8.2.1-20180817-boringssl-190818-020957
    /home/backup-nginxbin/1.15.3-gcc-8.2.1-20180817-openssl-1.1.1-pre9-dev-190818-022340
    /home/backup-nginxbin/1.15.3-gcc-8.2.1-20180817-openssl-1.1.1-pre9-dev-190818-201836
    /home/backup-nginxbin/1.15.3-gcc-8.2.1-20180817-openssl-1.1.1-pre9-dev-190818-202833
    /home/backup-nginxbin/1.15.3-gcc-8.2.1-20180817-openssl-1.1.1-pre9-dev-190818-203100
    /home/backup-nginxbin/1.15.3-gcc-8.2.1-20180817-openssl-1.1.1-pre9-dev-190818-203303
    /home/backup-nginxbin/1.15.3-gcc-8.2.1-20180817-openssl-1.1.1-pre9-dev-190818-203420
    /home/backup-nginxbin/1.15.3-gcc-8.2.1-20180817-openssl-1.1.1-pre9-dev-190818-203512
    /home/backup-nginxbin/1.15.3-gcc-8.2.1-20180817-openssl-1.1.1-pre9-dev-190818-230737
    /home/backup-nginxbin/1.15.3-gcc-8.2.1-20180817-libressl-2.7.4-200818-045705
    /home/backup-nginxbin/1.15.3-gcc-8.2.1-20180817-libressl-2.7.4-200818-045747
    /home/backup-nginxbin/1.15.3-gcc-8.2.1-20180817-openssl-1.1.0i-200818-062309
    /home/backup-nginxbin/1.15.3-gcc-8.2.1-20180817-boringssl-210818-171332
    /home/backup-nginxbin/1.15.3-gcc-8.2.1-20180817-openssl-1.1.0i-210818-173357
    /home/backup-nginxbin/1.15.3-gcc-8.2.1-20180817-openssl-1.1.1-pre9-210818-183053
    --------------------------------------------------------
    

    restore
    Code (Text):
    tools/nginx-binary-backup.sh restore /home/backup-nginxbin/1.15.3-gcc-8.2.1-20180817-openssl-1.1.1-pre9-dev-190818-230737
    

    seems still shows TLS 1.2 in Chrome Canary - guess Chrome Canary needs to update TLS 1.3 final ? but BoringSSL built Nginx works for TLS 1.3 ?
     
  4. eva2000

    eva2000 Administrator Staff Member

    54,605
    12,225
    113
    May 24, 2014
    Brisbane, Australia
    Ratings:
    +18,794
    Local Time:
    10:18 AM
    Nginx 1.27.x
    MariaDB 10.x/11.4+
    Let's try recompile Nginx master with earlier OpenSSL 1.1.1-pre2 which is TLS 1.3 draft 23 which was a working TLS 1.3 version in Chrome Canary

    set Chrome Canary to TLS 1.3 draft 23

    cmm-nginx-1513-openssl-111-pre2-01-canary-no-tls13-enabledraft23.png
    and yup OpenSSL 1.1.1-pre2 works. So looks like OpenSSL 1.1.1-pre9 removed all TLS 1.3 drafts including TLS 1.3 draft 28 and Chrome Canary 70.0.3529.3 doesn't support latest TLS 1.3 final drafy that OpenSSL 1.1.1-pre9 has in place.

    cmm-nginx-1513-openssl-111-pre2-01-canary-no-tls13-enabledraft23-working.png

    I believe BoringSSL supports TLS 1.3 draft 23, 28 and final so that's why it works.
     
  5. buik

    buik “The best traveler is one without a camera.”

    2,026
    524
    113
    Apr 29, 2016
    Flanders
    Ratings:
    +1,674
    Local Time:
    1:18 AM
    Latest BoringSSL with my own patch to enable TLS 1.3 works fine on Google Chrome final.

    Although version 28 is the same as the RFC final, it could be possible that the browser specifically searches for version 28.

    And then can not find any reference to TLS 1.3, because all references in OpenSSL to draft have been changed to RFC final. BoringSSL is like Chrome, it could link to draft 23, 28 or final which one is is 28.
     
  6. eva2000

    eva2000 Administrator Staff Member

    54,605
    12,225
    113
    May 24, 2014
    Brisbane, Australia
    Ratings:
    +18,794
    Local Time:
    10:18 AM
    Nginx 1.27.x
    MariaDB 10.x/11.4+
    Yeah could be Chrome Canary + OpenSSL 1.1.1-pre9 combination as OpenSSL 1.1.1-pre2 TLS 1.3 draft 23 works OpenSSL - OpenSSL 1.1.1 pre release 9 out.

    Will test all Nginx combos with my new tools/nginx-binary-backup.sh script :D

    Code (Text):
    tools/nginx-binary-backup.sh list
    --------------------------------------------------------
    Listing of available Nginx binary/module backups
    --------------------------------------------------------
    /home/backup-nginxbin/1.15.3-gcc-8.2.1-20180810-openssl-1.1.0i-170818-184702
    /home/backup-nginxbin/1.15.3-gcc-8.2.1-20180817-boringssl-190818-020957
    /home/backup-nginxbin/1.15.3-gcc-8.2.1-20180817-openssl-1.1.1-pre9-dev-190818-230737
    /home/backup-nginxbin/1.15.3-gcc-8.2.1-20180817-libressl-2.7.4-200818-045705
    /home/backup-nginxbin/1.15.3-gcc-8.2.1-20180817-libressl-2.7.4-200818-045747
    /home/backup-nginxbin/1.15.3-gcc-8.2.1-20180817-openssl-1.1.0i-200818-062309
    /home/backup-nginxbin/1.15.3-gcc-8.2.1-20180817-boringssl-210818-171332
    /home/backup-nginxbin/1.15.3-gcc-8.2.1-20180817-openssl-1.1.0i-210818-173357
    /home/backup-nginxbin/1.15.3-gcc-8.2.1-20180817-openssl-1.1.1-pre9-210818-183053
    /home/backup-nginxbin/1.15.3-gcc-8.2.1-20180817-openssl-1.1.1-pre9-210818-190418
    /home/backup-nginxbin/1.15.3-gcc-8.2.1-20180817-openssl-1.1.1-pre2-210818-192008
    --------------------------------------------------------
    


    edit: tried Chrome stable Version 68.0.3440.106 (Official Build) (64-bit) and TLS 1.3 not showing up for OpenSSL 1.1.1-pre9 release built Nginx
     
    Last edited: Aug 22, 2018
  7. buik

    buik “The best traveler is one without a camera.”

    2,026
    524
    113
    Apr 29, 2016
    Flanders
    Ratings:
    +1,674
    Local Time:
    1:18 AM
    OK yes we responded at the same time so could not see this reaction yet.
    But coming back to OpenSSL, you could patch the OpenSSL code te restore the draft selection.
    Should work after that. Question is whether it makes sense. Kind of useless if you ask me.
     
  8. eva2000

    eva2000 Administrator Staff Member

    54,605
    12,225
    113
    May 24, 2014
    Brisbane, Australia
    Ratings:
    +18,794
    Local Time:
    10:18 AM
    Nginx 1.27.x
    MariaDB 10.x/11.4+
    tried Chrome stable Version 68.0.3440.106 (Official Build) (64-bit) and TLS 1.3 not showing up for OpenSSL 1.1.1-pre9 release built Nginx

    Yeah useless, just need for Chrome to update to latest TLS 1.3 to work with OpenSSL 1.1.1-pre9's version of TLS 1.3 I guess.
     
  9. eva2000

    eva2000 Administrator Staff Member

    54,605
    12,225
    113
    May 24, 2014
    Brisbane, Australia
    Ratings:
    +18,794
    Local Time:
    10:18 AM
    Nginx 1.27.x
    MariaDB 10.x/11.4+
    hmm OpenSSL 1.1.1-pre9 isn't final beta before release, it seems there's OpenSSL 1.1.1-pre10 coming Prepare for 1.1.1-pre10-dev · openssl/openssl@d41a831 :)

    OpenSSL 1.1.1-pre9 removed all TLS 1.3 drafts Update code for the final RFC version of TLSv1.3 (RFC8446) · openssl/openssl@35e742e

    upload_2018-8-22_5-33-4.png

    But if you use BoringSSL bssl client to test connection to Nginx + OpenSSL 1.1.1-pre9 it connects over TLS 1.3 as bssl has final TLS 1.3 version unlike current Chrome/Canary
    Code (Text):
    echo -n | bssl client -connect domain.com:443
    Connecting to IPADR:443
    Connected.
      Version: TLSv1.3
      Resumed session: no
      Cipher: TLS_AES_256_GCM_SHA384
      ECDHE curve: X25519
      Signature algorithm: ecdsa_secp256r1_sha256
      Secure renegotiation: yes
      Extended master secret: yes
      Next protocol negotiated: 
      ALPN protocol: 
      OCSP staple: no
      SCT list: no
      Early data: no
      Cert subject: CN = domain.com
      Cert issuer: C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
    
     
    Last edited: Aug 22, 2018
  10. buik

    buik “The best traveler is one without a camera.”

    2,026
    524
    113
    Apr 29, 2016
    Flanders
    Ratings:
    +1,674
    Local Time:
    1:18 AM
    It will therefore take quite some time before OpenSSL 1.1.1 is interesting with TLS 1.3.
    Since it takes a while before the gross of the visitors has a browser with TLS 1.3 RFC support.

    At the moment literally no final browser supports TLS 1.3 RFC only.
     
  11. eva2000

    eva2000 Administrator Staff Member

    54,605
    12,225
    113
    May 24, 2014
    Brisbane, Australia
    Ratings:
    +18,794
    Local Time:
    10:18 AM
    Nginx 1.27.x
    MariaDB 10.x/11.4+
    Yup .. the waiting game continues for OpenSSL 1.1.1 TLS 1.3 usability heh. Guess it makes BoringSSL + Nginx interesting. Though if you are using Cloudflare in front of your server it doesn't matter as Cloudflare brings TLS 1.3 to the table already :)
     
  12. buik

    buik “The best traveler is one without a camera.”

    2,026
    524
    113
    Apr 29, 2016
    Flanders
    Ratings:
    +1,674
    Local Time:
    1:18 AM
    Yup the internet web-server world changed:)
     
  13. eva2000

    eva2000 Administrator Staff Member

    54,605
    12,225
    113
    May 24, 2014
    Brisbane, Australia
    Ratings:
    +18,794
    Local Time:
    10:18 AM
    Nginx 1.27.x
    MariaDB 10.x/11.4+
    Well that is until we get Cloudflare to Origin server's communication supporting TLS 1.3 :D
     
  14. eva2000

    eva2000 Administrator Staff Member

    54,605
    12,225
    113
    May 24, 2014
    Brisbane, Australia
    Ratings:
    +18,794
    Local Time:
    10:18 AM
    Nginx 1.27.x
    MariaDB 10.x/11.4+
    Further confirmation OpenSSL 1.1.1-pre9 removed TLS 1.3 drafts via testssl command line testing

    Nginx + OpenSSL 1.1.1-pre9 = TLS 1.3 final only
    Code (Text):
     Testing protocols via sockets except NPN+ALPN
    
     SSLv2      not offered (OK)
     SSLv3      not offered (OK)
     TLS 1      offered
     TLS 1.1    offered
     TLS 1.2    offered (OK)
     TLS 1.3    offered (OK): final
     NPN/SPDY   not offered
     ALPN/HTTP2 h2, http/1.1 (offered)
    

    Client simulation
    Code (Text):
     Running client simulations via sockets 
    
     Android 4.2.2                TLSv1.0 ECDHE-ECDSA-AES128-SHA, 256 bit ECDH (P-256)
     Android 4.4.2                TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256, 256 bit ECDH (P-256)
     Android 5.0.0                TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256, 256 bit ECDH (P-256)
     Android 6.0                  TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256, 256 bit ECDH (P-256)
     Android 7.0                  TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256, 253 bit ECDH (X25519)
     Chrome 57 Win 7              TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256, 253 bit ECDH (X25519)
     Chrome 65 Win 7              TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256, 253 bit ECDH (X25519)
     Firefox 53 Win 7             TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256, 253 bit ECDH (X25519)
     Firefox 59 Win 7             TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256, 253 bit ECDH (X25519)
     IE 6 XP                      No connection
     IE 7 Vista                   TLSv1.0 ECDHE-ECDSA-AES128-SHA, 256 bit ECDH (P-256)
     IE 8 Win 7                   TLSv1.0 ECDHE-ECDSA-AES128-SHA, 256 bit ECDH (P-256)
     IE 8 XP                      No connection
     IE 11 Win 7                  TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256, 256 bit ECDH (P-256)
     IE 11 Win 8.1                TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256, 256 bit ECDH (P-256)
     IE 11 Win Phone 8.1          TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256, 256 bit ECDH (P-256)
     IE 11 Win 10                 TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256, 256 bit ECDH (P-256)
     Edge 13 Win 10               TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256, 256 bit ECDH (P-256)
     Edge 13 Win Phone 10         TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256, 256 bit ECDH (P-256)
     Edge 15 Win 10               TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256, 253 bit ECDH (X25519)
     Opera 17 Win 7               TLSv1.2 ECDHE-ECDSA-AES128-SHA256, 256 bit ECDH (P-256)
     Safari 9 iOS 9               TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256, 256 bit ECDH (P-256)
     Safari 9 OS X 10.11          TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256, 256 bit ECDH (P-256)
     Safari 10 OS X 10.12         TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256, 256 bit ECDH (P-256)
     Apple ATS 9 iOS 9            TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256, 256 bit ECDH (P-256)
     Tor 17.0.9 Win 7             TLSv1.0 ECDHE-ECDSA-AES128-SHA, 256 bit ECDH (P-256)
     Java 6u45                    No connection
     Java 7u25                    TLSv1.0 ECDHE-ECDSA-AES128-SHA, 256 bit ECDH (P-256)
     Java 8u161                   TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256, 256 bit ECDH (P-256)
     Java 9.0.4                   TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256, 256 bit ECDH (P-256)
     OpenSSL 1.0.1l               TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256, 256 bit ECDH (P-256)
     OpenSSL 1.0.2e               TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256, 256 bit ECDH (P-256)
    

    Nginx + BoringSSL = TLS 1.3 draft 28, draft 23 and final
    Code (Text):
    
     Testing protocols via sockets except NPN+ALPN
    
     SSLv2      not offered (OK)
     SSLv3      not offered (OK)
     TLS 1      offered
     TLS 1.1    offered
     TLS 1.2    offered (OK)
     TLS 1.3    offered (OK): draft 28, draft 23, final
     NPN/SPDY   not offered
     ALPN/HTTP2 h2, http/1.1 (offered)
    

    Client simulation
    Code (Text):
     Running client simulations via sockets 
    
     Android 4.2.2                TLSv1.0 ECDHE-ECDSA-AES128-SHA, 256 bit ECDH (P-256)
     Android 4.4.2                TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256, 256 bit ECDH (P-256)
     Android 5.0.0                TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256, 256 bit ECDH (P-256)
     Android 6.0                  TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256, 256 bit ECDH (P-256)
     Android 7.0                  TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256, 253 bit ECDH (X25519)
     Chrome 57 Win 7              TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256, 253 bit ECDH (X25519)
     Chrome 65 Win 7              TLSv1.3 TLS_AES_128_GCM_SHA256, 253 bit ECDH (X25519)
     Firefox 53 Win 7             TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256, 253 bit ECDH (X25519)
     Firefox 59 Win 7             TLSv1.3 TLS_AES_128_GCM_SHA256, 253 bit ECDH (X25519)
     IE 6 XP                      No connection
     IE 7 Vista                   TLSv1.0 ECDHE-ECDSA-AES128-SHA, 256 bit ECDH (P-256)
     IE 8 Win 7                   TLSv1.0 ECDHE-ECDSA-AES128-SHA, 256 bit ECDH (P-256)
     IE 8 XP                      No connection
     IE 11 Win 7                  TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256, 256 bit ECDH (P-256)
     IE 11 Win 8.1                TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256, 256 bit ECDH (P-256)
     IE 11 Win Phone 8.1          TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256, 256 bit ECDH (P-256)
     IE 11 Win 10                 TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256, 256 bit ECDH (P-256)
     Edge 13 Win 10               TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256, 256 bit ECDH (P-256)
     Edge 13 Win Phone 10         TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256, 256 bit ECDH (P-256)
     Edge 15 Win 10               TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256, 253 bit ECDH (X25519)
     Opera 17 Win 7               TLSv1.2 ECDHE-ECDSA-AES128-SHA, 256 bit ECDH (P-256)
     Safari 9 iOS 9               TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256, 256 bit ECDH (P-256)
     Safari 9 OS X 10.11          TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256, 256 bit ECDH (P-256)
     Safari 10 OS X 10.12         TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256, 256 bit ECDH (P-256)
     Apple ATS 9 iOS 9            TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256, 256 bit ECDH (P-256)
     Tor 17.0.9 Win 7             TLSv1.0 ECDHE-ECDSA-AES128-SHA, 256 bit ECDH (P-256)
     Java 6u45                    No connection
     Java 7u25                    TLSv1.0 ECDHE-ECDSA-AES128-SHA, 256 bit ECDH (P-256)
     Java 8u161                   TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256, 256 bit ECDH (P-256)
     Java 9.0.4                   TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256, 256 bit ECDH (P-256)
     OpenSSL 1.0.1l               TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256, 256 bit ECDH (P-256)
     OpenSSL 1.0.2e               TLSv1.2 ECDHE-ECDSA-AES128-GCM-SHA256, 256 bit ECDH (P-256)