public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/python-distributed] rawhide: Update to latest version
@ 2026-07-08  5:35 Elliott Sales de Andrade
  0 siblings, 0 replies; only message in thread
From: Elliott Sales de Andrade @ 2026-07-08  5:35 UTC (permalink / raw)
  To: git-commits

A new commit has been pushed.

Repo   : rpms/python-distributed
Branch : rawhide
Commit : dfd34f20f7518688049b5b2128af3d3b48d5719f
Author : Elliott Sales de Andrade <quantum.analyst@gmail.com>
Date   : 2026-07-08T00:23:32-04:00
Stats  : +1716/-1817 in 14 file(s)
URL    : https://src.fedoraproject.org/rpms/python-distributed/c/dfd34f20f7518688049b5b2128af3d3b48d5719f?branch=rawhide

Log:
Update to latest version

---
diff --git a/.gitignore b/.gitignore
index 109a2d2..597eabb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,3 +14,4 @@
 /distributed-2025.12.0.tar.gz
 /distributed-2026.1.2.tar.gz
 /distributed-2026.3.0.tar.gz
+/distributed-2026.7.0.tar.gz

diff --git a/0001-Increase-test-timeout-for-slower-architectures.patch b/0001-Increase-test-timeout-for-slower-architectures.patch
index 0f1e239..879a739 100644
--- a/0001-Increase-test-timeout-for-slower-architectures.patch
+++ b/0001-Increase-test-timeout-for-slower-architectures.patch
@@ -1,56 +1,15 @@
-From 826c154c423e158f0f80b6a1e7fc6cd128870b88 Mon Sep 17 00:00:00 2001
+From 0c23288647eab629ed99f1c4bba499208932a872 Mon Sep 17 00:00:00 2001
 From: Elliott Sales de Andrade <quantum.analyst@gmail.com>
 Date: Sun, 26 Sep 2021 22:40:49 -0400
-Subject: [PATCH 1/7] Increase test timeout for slower architectures
+Subject: [PATCH 1/6] Increase test timeout for slower architectures
 
 Signed-off-by: Elliott Sales de Andrade <quantum.analyst@gmail.com>
 ---
- distributed/tests/test_worker_memory.py | 10 +++++-----
- distributed/utils_test.py               |  2 +-
- 2 files changed, 6 insertions(+), 6 deletions(-)
+ distributed/utils_test.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
-diff --git a/distributed/tests/test_worker_memory.py b/distributed/tests/test_worker_memory.py
-index 96589a16..4bc6ade6 100644
---- a/distributed/tests/test_worker_memory.py
-+++ b/distributed/tests/test_worker_memory.py
-@@ -1098,12 +1098,12 @@ async def test_pause_while_idle(s, a, b):
-     assert sa in s.running
- 
-     a.monitor.get_process_memory = lambda: 2**40
--    await async_poll_for(lambda: sa.status == Status.paused, timeout=5)
-+    await async_poll_for(lambda: sa.status == Status.paused, timeout=20)
-     assert a.address not in s.idle
-     assert sa not in s.running
- 
-     a.monitor.get_process_memory = lambda: 0
--    await async_poll_for(lambda: sa.status == Status.running, timeout=5)
-+    await async_poll_for(lambda: sa.status == Status.running, timeout=20)
-     assert a.address in s.idle
-     assert sa in s.running
- 
-@@ -1113,17 +1113,17 @@ async def test_pause_while_saturated(c, s, a, b):
-     sa = s.workers[a.address]
-     ev = Event()
-     futs = c.map(lambda i, ev: ev.wait(), range(3), ev=ev, workers=[a.address])
--    await async_poll_for(lambda: len(a.state.tasks) == 3, timeout=5)
-+    await async_poll_for(lambda: len(a.state.tasks) == 3, timeout=20)
-     assert sa in s.saturated
-     assert sa in s.running
- 
-     a.monitor.get_process_memory = lambda: 2**40
--    await async_poll_for(lambda: sa.status == Status.paused, timeout=5)
-+    await async_poll_for(lambda: sa.status == Status.paused, timeout=20)
-     assert sa not in s.saturated
-     assert sa not in s.running
- 
-     a.monitor.get_process_memory = lambda: 0
--    await async_poll_for(lambda: sa.status == Status.running, timeout=5)
-+    await async_poll_for(lambda: sa.status == Status.running, timeout=20)
-     assert sa in s.saturated
-     assert sa in s.running
- 
 diff --git a/distributed/utils_test.py b/distributed/utils_test.py
-index 99928a4e..0d308a54 100644
+index 60bdbe39..c717b956 100644
 --- a/distributed/utils_test.py
 +++ b/distributed/utils_test.py
 @@ -108,7 +108,7 @@ logging_levels = {
@@ -63,5 +22,5 @@ index 99928a4e..0d308a54 100644
  
  
 -- 
-2.52.0
+2.54.0
 

diff --git a/0002-Install-test-packages.patch b/0002-Install-test-packages.patch
index e4c6f58..7d8eb3d 100644
--- a/0002-Install-test-packages.patch
+++ b/0002-Install-test-packages.patch
@@ -1,7 +1,7 @@
-From 9048a26c6dbf399ddf8dee9b80ee87f6dc0d5df6 Mon Sep 17 00:00:00 2001
+From bc185b122d6089488340aa644d651ed8aada3bfa Mon Sep 17 00:00:00 2001
 From: Elliott Sales de Andrade <quantum.analyst@gmail.com>
 Date: Mon, 25 Jul 2022 19:18:50 -0400
-Subject: [PATCH 2/7] Install test packages
+Subject: [PATCH 2/6] Install test packages
 
 Signed-off-by: Elliott Sales de Andrade <quantum.analyst@gmail.com>
 ---
@@ -25,18 +25,18 @@ index 4ea47d70..d7af3820 100644
  exclude distributed/pytest_resourceleaks.py
  
 diff --git a/pyproject.toml b/pyproject.toml
-index 8179887a..bafc6a0b 100644
+index 8876a833..5f7df355 100644
 --- a/pyproject.toml
 +++ b/pyproject.toml
-@@ -60,7 +60,6 @@ dask-scheduler = "distributed.cli.dask_scheduler:main"
- dask-worker = "distributed.cli.dask_worker:main"
+@@ -55,7 +55,6 @@ ssh = "distributed.cli.dask_ssh:main"
+ spec = "distributed.cli.dask_spec:main"
  
  [tool.setuptools.packages.find]
 -exclude = ["*tests*"]
  namespaces = false
  
  [tool.setuptools.package-data]
-@@ -97,6 +96,7 @@ ignore = [
+@@ -88,6 +87,7 @@ ignore = [
      "RUF043", # Pattern passed to `match=` contains metacharacters but is neither escaped nor raw
      "RUF059", # Unpacked variable is never used
  ]
@@ -45,5 +45,5 @@ index 8179887a..bafc6a0b 100644
  [tool.ruff.lint.extend-per-file-ignores]
  "**__init__.py" = ["F401", "F811"]
 -- 
-2.52.0
+2.54.0
 

diff --git a/0003-Disable-warnings-as-errors-in-tests.patch b/0003-Disable-warnings-as-errors-in-tests.patch
index f9b61ff..163faa4 100644
--- a/0003-Disable-warnings-as-errors-in-tests.patch
+++ b/0003-Disable-warnings-as-errors-in-tests.patch
@@ -1,7 +1,7 @@
-From a367c2691bf39bc4509c441b6f634538508d8de8 Mon Sep 17 00:00:00 2001
+From 69a0653f79f920a02476717aee009707722739c0 Mon Sep 17 00:00:00 2001
 From: Elliott Sales de Andrade <quantum.analyst@gmail.com>
 Date: Tue, 26 Jul 2022 01:32:46 -0400
-Subject: [PATCH 3/7] Disable warnings-as-errors in tests
+Subject: [PATCH 3/6] Disable warnings-as-errors in tests
 
 Signed-off-by: Elliott Sales de Andrade <quantum.analyst@gmail.com>
 ---
@@ -9,10 +9,10 @@ Signed-off-by: Elliott Sales de Andrade <quantum.analyst@gmail.com>
  1 file changed, 1 deletion(-)
 
 diff --git a/pyproject.toml b/pyproject.toml
-index bafc6a0b..9d313003 100644
+index 5f7df355..f9c87a95 100644
 --- a/pyproject.toml
 +++ b/pyproject.toml
-@@ -134,7 +134,6 @@ addopts = '''
+@@ -125,7 +125,6 @@ addopts = '''
  -p no:asyncio
  -p no:legacypath'''
  filterwarnings = [
@@ -21,5 +21,5 @@ index bafc6a0b..9d313003 100644
      # xref: https://github.com/jupyter/jupyter_core/issues/309
      '''ignore:Jupyter is migrating its paths to use standard platformdirs''',
 -- 
-2.52.0
+2.54.0
 

diff --git a/0004-Loosen-up-some-dependencies.patch b/0004-Loosen-up-some-dependencies.patch
deleted file mode 100644
index 45eaed7..0000000
--- a/0004-Loosen-up-some-dependencies.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From de92217b2068d8eb22afb24ac7f50ebe3214519a Mon Sep 17 00:00:00 2001
-From: Elliott Sales de Andrade <quantum.analyst@gmail.com>
-Date: Tue, 18 Jun 2024 18:51:01 -0400
-Subject: [PATCH 4/7] Loosen up some dependencies
-
-Remove code coverage for testing.
-
-Signed-off-by: Elliott Sales de Andrade <quantum.analyst@gmail.com>
----
- pyproject.toml | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/pyproject.toml b/pyproject.toml
-index 9d313003..fc53753b 100644
---- a/pyproject.toml
-+++ b/pyproject.toml
-@@ -130,7 +130,6 @@ addopts = '''
- --ignore=.github
- --strict-markers
- --strict-config
----cov-config=pyproject.toml
- -p no:asyncio
- -p no:legacypath'''
- filterwarnings = [
--- 
-2.52.0
-

diff --git a/0004-Skip-doc-test-when-not-running-from-a-git-checkout.patch b/0004-Skip-doc-test-when-not-running-from-a-git-checkout.patch
new file mode 100644
index 0000000..a1dbacc
--- /dev/null
+++ b/0004-Skip-doc-test-when-not-running-from-a-git-checkout.patch
@@ -0,0 +1,30 @@
+From e1577fa261de754be4276e1082e1f43b19711707 Mon Sep 17 00:00:00 2001
+From: Elliott Sales de Andrade <quantum.analyst@gmail.com>
+Date: Sat, 8 Apr 2023 21:01:58 -0400
+Subject: [PATCH 4/6] Skip doc test when not running from a git checkout
+
+Signed-off-by: Elliott Sales de Andrade <quantum.analyst@gmail.com>
+---
+ distributed/http/tests/test_core.py | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/distributed/http/tests/test_core.py b/distributed/http/tests/test_core.py
+index 3bccaf11..f6bd13c7 100644
+--- a/distributed/http/tests/test_core.py
++++ b/distributed/http/tests/test_core.py
+@@ -29,8 +29,11 @@ async def test_prometheus_api_doc(c, s, a, _):
+     """
+     pytest.importorskip("prometheus_client")
+ 
+-    documented = set()
+     root_dir = pathlib.Path(__file__).parent.parent.parent.parent
++    if not (root_dir / ".git").exists():
++        pytest.skip("Not running in a git checkout")
++
++    documented = set()
+     with open(root_dir / "docs" / "source" / "prometheus.rst") as fh:
+         for row in fh:
+             row = row.strip()
+-- 
+2.54.0
+

diff --git a/0005-Skip-doc-test-when-not-running-from-a-git-checkout.patch b/0005-Skip-doc-test-when-not-running-from-a-git-checkout.patch
deleted file mode 100644
index dd36ecc..0000000
--- a/0005-Skip-doc-test-when-not-running-from-a-git-checkout.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 9cc062f6522aeac52b24fa1f946fb9804d46195e Mon Sep 17 00:00:00 2001
-From: Elliott Sales de Andrade <quantum.analyst@gmail.com>
-Date: Sat, 8 Apr 2023 21:01:58 -0400
-Subject: [PATCH 5/7] Skip doc test when not running from a git checkout
-
-Signed-off-by: Elliott Sales de Andrade <quantum.analyst@gmail.com>
----
- distributed/http/tests/test_core.py | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/distributed/http/tests/test_core.py b/distributed/http/tests/test_core.py
-index 3bccaf11..f6bd13c7 100644
---- a/distributed/http/tests/test_core.py
-+++ b/distributed/http/tests/test_core.py
-@@ -29,8 +29,11 @@ async def test_prometheus_api_doc(c, s, a, _):
-     """
-     pytest.importorskip("prometheus_client")
- 
--    documented = set()
-     root_dir = pathlib.Path(__file__).parent.parent.parent.parent
-+    if not (root_dir / ".git").exists():
-+        pytest.skip("Not running in a git checkout")
-+
-+    documented = set()
-     with open(root_dir / "docs" / "source" / "prometheus.rst") as fh:
-         for row in fh:
-             row = row.strip()
--- 
-2.52.0
-

diff --git a/0005-Update-make_tls_certs.py-work-with-openssl-3-8701.patch b/0005-Update-make_tls_certs.py-work-with-openssl-3-8701.patch
new file mode 100644
index 0000000..c4d518e
--- /dev/null
+++ b/0005-Update-make_tls_certs.py-work-with-openssl-3-8701.patch
@@ -0,0 +1,1616 @@
+From b9e0a50c347c5aa3aabc2d8674cd0eda8df82fb5 Mon Sep 17 00:00:00 2001
+From: Adam Williamson <awilliam@redhat.com>
+Date: Wed, 19 Jun 2024 14:20:31 -0700
+Subject: [PATCH 5/6] Update make_tls_certs.py, work with openssl 3 (#8701)
+
+make_tls_certs.py has not been updated significantly since 2018,
+and the certs it generates are not good enough for openssl 3:
+
+E           ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: Basic Constraints of CA cert not marked critical (_ssl.c:1020)
+
+This resyncs the generation script with the current version of
+cpython's make_ssl_certs.py, on which it is based. I dropped
+various superficial changes which were made (wrapping, spacing,
+quote style), because they make diffing it against the original
+to see what's *really* different unnecessarily hard.
+
+This also updates all the certificates, of course, which makes
+the tests work against openssl 3.
+
+Signed-off-by: Adam Williamson <awilliam@redhat.com>
+Signed-off-by: Elliott Sales de Andrade <quantum.analyst@gmail.com>
+---
+ .pre-commit-config.yaml                    |   4 +
+ distributed/tests/make_tls_certs.py        | 257 ++++++++++--------
+ distributed/tests/tls-ca-cert.pem          | 141 ++++++----
+ distributed/tests/tls-ca-key.pem           |  64 +++--
+ distributed/tests/tls-cert-chain.pem       | 302 +++++++++++++--------
+ distributed/tests/tls-cert.pem             | 161 +++++++----
+ distributed/tests/tls-key-cert.pem         | 225 +++++++++------
+ distributed/tests/tls-key.pem              |  64 +++--
+ distributed/tests/tls-self-signed-cert.pem |  40 +--
+ distributed/tests/tls-self-signed-key.pem  |  64 +++--
+ 10 files changed, 808 insertions(+), 514 deletions(-)
+
+diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
+index ff45e427..a361733a 100644
+--- a/.pre-commit-config.yaml
++++ b/.pre-commit-config.yaml
+@@ -37,6 +37,10 @@ repos:
+           - pyarrow
+           - git+https://github.com/dask/dask
+           - git+https://github.com/dask/zict
++# This script is heavily based on one from upstream cpython, applying
++# our style to it makes it unnecessarily hard to diff it against
++# the upstream version for future revisions
++exclude: make_tls_certs\.py
+ 
+ # Increase this value to clear the cache on GitHub actions if nothing else in this file
+ # has changed. See also same variable in .github/workflows/test.yaml
+diff --git a/distributed/tests/make_tls_certs.py b/distributed/tests/make_tls_certs.py
+index b848458f..3449c54f 100644
+--- a/distributed/tests/make_tls_certs.py
++++ b/distributed/tests/make_tls_certs.py
+@@ -1,19 +1,28 @@
+ """Make the custom certificate and private key files used by TLS tests.
+ 
+-Code heavily borrowed from Lib/tests/make_ssl_certs.py in CPython.
++Code heavily borrowed from Lib/test/certdata/make_ssl_certs.py in CPython.
++Changes: filenames, dropped the SAN/ECC stuff, create a smaller set of
++certs which is all we need for our tests. Is excluded from pre-commit so
++we can keep the diff against upstream tight for ease of updating.
+ """
+ 
+ from __future__ import annotations
+ 
+ import os
++import pprint
+ import shutil
+-import subprocess
+ import tempfile
++from subprocess import *
++
++startdate = "20180829142316Z"
++enddate = "20371028142316Z"
+ 
+ req_template = """
++    [ default ]
++    base_url               = http://testca.pythontest.net/testca
++
+     [req]
+     distinguished_name     = req_distinguished_name
+-    x509_extensions        = req_x509_extensions
+     prompt                 = no
+ 
+     [req_distinguished_name]
+@@ -22,30 +31,70 @@ req_template = """
+     O                      = Dask
+     CN                     = {hostname}
+ 
+-    [req_x509_extensions]
++    [req_x509_extensions_nosan]
++
++    [req_x509_extensions_simple]
+     subjectAltName         = @san
+ 
++    [req_x509_extensions_full]
++    subjectAltName         = @san
++    keyUsage               = critical,keyEncipherment,digitalSignature
++    extendedKeyUsage       = serverAuth,clientAuth
++    basicConstraints       = critical,CA:false
++    subjectKeyIdentifier   = hash
++    authorityKeyIdentifier = keyid:always,issuer:always
++    authorityInfoAccess    = @issuer_ocsp_info
++    crlDistributionPoints  = @crl_info
++
++    [ issuer_ocsp_info ]
++    caIssuers;URI.0        = $base_url/pycacert.cer
++    OCSP;URI.0             = $base_url/ocsp/
++
++    [ crl_info ]
++    URI.0                  = $base_url/revocation.crl
++
+     [san]
+     DNS.1 = {hostname}
++    {extra_san}
+ 
+-    [ca]
++    [dir_sect]
++    C                      = XY
++    L                      = Castle Anthrax
++    O                      = Python Software Foundation
++    CN                     = dirname example
++
++    [princ_name]
++    realm = EXP:0, GeneralString:KERBEROS.REALM
++    principal_name = EXP:1, SEQUENCE:principal_seq
++
++    [principal_seq]
++    name_type = EXP:0, INTEGER:1
++    name_string = EXP:1, SEQUENCE:principals
++
++    [principals]
++    princ1 = GeneralString:username
++
++    [ ca ]
+     default_ca      = CA_default
+ 
+-    [CA_default]
++    [ CA_default ]
+     dir = cadir
+     database  = $dir/index.txt
+     crlnumber = $dir/crl.txt
+     default_md = sha256
+-    default_days = 360000
+-    default_crl_days = 360000
++    startdate = {startdate}
++    default_startdate = {startdate}
++    enddate = {enddate}
++    default_enddate = {enddate}
++    default_days = 7000
++    default_crl_days = 7000
+     certificate = tls-ca-cert.pem
+     private_key = tls-ca-key.pem
+     serial    = $dir/serial
+     RANDFILE  = $dir/.rand
+-
+     policy          = policy_match
+ 
+-    [policy_match]
++    [ policy_match ]
+     countryName             = match
+     stateOrProvinceName     = optional
+     organizationName        = match
+@@ -53,7 +102,7 @@ req_template = """
+     commonName              = supplied
+     emailAddress            = optional
+ 
+-    [policy_anything]
++    [ policy_anything ]
+     countryName   = optional
+     stateOrProvinceName = optional
+     localityName    = optional
+@@ -62,162 +111,150 @@ req_template = """
+     commonName    = supplied
+     emailAddress    = optional
+ 
+-    [v3_ca]
++
++    [ v3_ca ]
++
+     subjectKeyIdentifier=hash
+     authorityKeyIdentifier=keyid:always,issuer
+-    basicConstraints = CA:true
++    basicConstraints = critical, CA:true
++    keyUsage = critical, digitalSignature, keyCertSign, cRLSign
++
+     """
+ 
+ here = os.path.abspath(os.path.dirname(__file__))
+ 
+ 
+-def make_cert_key(hostname, sign=False):
++def make_cert_key(hostname, sign=False, extra_san='',
++                  ext='req_x509_extensions_full', key='rsa:3072'):
+     print(f"creating cert for {hostname}")
+     tempnames = []
+-    for _ in range(3):
++    for i in range(3):
+         with tempfile.NamedTemporaryFile(delete=False) as f:
+             tempnames.append(f.name)
+     req_file, cert_file, key_file = tempnames
++    if sign:
++        reqext = 'req_x509_extensions_simple'
++    else:
++        reqext = ext
+     try:
+-        req = req_template.format(hostname=hostname)
+-        with open(req_file, "w") as f:
++        req = req_template.format(
++            hostname=hostname,
++            extra_san=extra_san,
++            startdate=startdate,
++            enddate=enddate
++        )
++        with open(req_file, 'w') as f:
+             f.write(req)
+-        args = [
+-            "req",
+-            "-new",
+-            "-days",
+-            "365242",
+-            "-nodes",
+-            "-newkey",
+-            "rsa:2048",
+-            "-keyout",
+-            key_file,
+-            "-config",
+-            req_file,
+-        ]
++        args = ['req', '-new', '-nodes', '-days', '7000',
++                '-newkey', key, '-keyout', key_file,
++                '-extensions', reqext,
++                '-config', req_file]
+         if sign:
+             with tempfile.NamedTemporaryFile(delete=False) as f:
+                 tempnames.append(f.name)
+                 reqfile = f.name
+-            args += ["-out", reqfile]
++            args += ['-out', reqfile ]
+ 
+         else:
+-            args += ["-x509", "-out", cert_file]
+-        subprocess.check_call(["openssl"] + args)
++            args += ['-x509', '-out', cert_file ]
++        check_call(['openssl'] + args)
+ 
+         if sign:
+             args = [
+-                "ca",
+-                "-config",
+-                req_file,
+-                "-out",
+-                cert_file,
+-                "-outdir",
+-                "cadir",
+-                "-policy",
+-                "policy_anything",
+-                "-batch",
+-                "-infiles",
+-                reqfile,
++                'ca',
++                '-config', req_file,
++                '-extensions', ext,
++                '-out', cert_file,
++                '-outdir', 'cadir',
++                '-policy', 'policy_anything',
++                '-batch', '-infiles', reqfile
+             ]
+-            subprocess.check_call(["openssl"] + args)
++            check_call(['openssl'] + args)
++
+ 
+-        with open(cert_file) as f:
++        with open(cert_file, 'r') as f:
+             cert = f.read()
+-        with open(key_file) as f:
++        with open(key_file, 'r') as f:
+             key = f.read()
+         return cert, key
+     finally:
+         for name in tempnames:
+             os.remove(name)
+ 
+-
+-TMP_CADIR = "cadir"
+-
++TMP_CADIR = 'cadir'
+ 
+ def unmake_ca():
+     shutil.rmtree(TMP_CADIR)
+ 
+-
+ def make_ca():
+     os.mkdir(TMP_CADIR)
+-    with open(os.path.join("cadir", "index.txt"), "a+") as f:
+-        pass  # empty file
+-    # with open(os.path.join('cadir','crl.txt'),'a+') as f:
+-    # f.write("00")
+-    with open(os.path.join("cadir", "index.txt.attr"), "w+") as f:
+-        f.write("unique_subject = no")
++    with open(os.path.join('cadir','index.txt'),'a+') as f:
++        pass # empty file
++    with open(os.path.join('cadir','crl.txt'),'a+') as f:
++        f.write("00")
++    with open(os.path.join('cadir','index.txt.attr'),'w+') as f:
++        f.write('unique_subject = no')
++    # random start value for serial numbers
++    with open(os.path.join('cadir','serial'), 'w') as f:
++        f.write('CB2D80995A69525B\n')
+ 
+     with tempfile.NamedTemporaryFile("w") as t:
+-        t.write(req_template.format(hostname="our-ca-server"))
++        req = req_template.format(
++            hostname='our-ca-server',
++            extra_san='',
++            startdate=startdate,
++            enddate=enddate
++        )
++        t.write(req)
+         t.flush()
+         with tempfile.NamedTemporaryFile() as f:
+-            args = [
+-                "req",
+-                "-new",
+-                "-days",
+-                "365242",
+-                "-extensions",
+-                "v3_ca",
+-                "-nodes",
+-                "-newkey",
+-                "rsa:2048",
+-                "-keyout",
+-                "tls-ca-key.pem",
+-                "-out",
+-                f.name,
+-                "-subj",
+-                "/C=XY/L=Dask-distributed/O=Dask CA/CN=our-ca-server",
+-            ]
+-            subprocess.check_call(["openssl"] + args)
+-            args = [
+-                "ca",
+-                "-config",
+-                t.name,
+-                "-create_serial",
+-                "-out",
+-                "tls-ca-cert.pem",
+-                "-batch",
+-                "-outdir",
+-                TMP_CADIR,
+-                "-keyfile",
+-                "tls-ca-key.pem",
+-                "-days",
+-                "365242",
+-                "-selfsign",
+-                "-extensions",
+-                "v3_ca",
+-                "-infiles",
+-                f.name,
+-            ]
+-            subprocess.check_call(["openssl"] + args)
+-            # args = ['ca', '-config', t.name, '-gencrl', '-out', 'revocation.crl']
+-            # subprocess.check_call(['openssl'] + args)
++            args = ['req', '-config', t.name, '-new',
++                    '-nodes',
++                    '-newkey', 'rsa:3072',
++                    '-keyout', 'tls-ca-key.pem',
++                    '-out', f.name,
++                    '-subj', '/C=XY/L=Dask-distributed/O=Dask CA/CN=our-ca-server']
++            check_call(['openssl'] + args)
++            args = ['ca', '-config', t.name,
++                    '-out', 'tls-ca-cert.pem', '-batch', '-outdir', TMP_CADIR,
++                    '-keyfile', 'tls-ca-key.pem',
++                    '-selfsign', '-extensions', 'v3_ca', '-infiles', f.name ]
++            check_call(['openssl'] + args)
++            args = ['ca', '-config', t.name, '-gencrl', '-out', 'revocation.crl']
++            check_call(['openssl'] + args)
++
++def print_cert(path):
++    import _ssl
++    pprint.pprint(_ssl._test_decode_cert(path))
+ 
+ 
+-if __name__ == "__main__":
++if __name__ == '__main__':
+     os.chdir(here)
+-    cert, key = make_cert_key("localhost")
+-    with open("tls-self-signed-cert.pem", "w") as f:
++    cert, key = make_cert_key('localhost', ext='req_x509_extensions_simple')
++    with open('tls-self-signed-cert.pem', 'w') as f:
+         f.write(cert)
+-    with open("tls-self-signed-key.pem", "w") as f:
++    with open('tls-self-signed-key.pem', 'w') as f:
+         f.write(key)
+ 
+     # For certificate matching tests
+     make_ca()
+-    with open("tls-ca-cert.pem") as f:
++    with open('tls-ca-cert.pem') as f:
+         ca_cert = f.read()
+ 
+-    cert, key = make_cert_key("localhost", sign=True)
+-    with open("tls-cert.pem", "w") as f:
++    cert, key = make_cert_key('localhost', sign=True)
++    with open('tls-cert.pem', 'w') as f:
+         f.write(cert)
+-    with open("tls-cert-chain.pem", "w") as f:
++    with open('tls-cert-chain.pem', 'w') as f:
+         f.write(cert)
+         f.write(ca_cert)
+-    with open("tls-key.pem", "w") as f:
++    with open('tls-key.pem', 'w') as f:
+         f.write(key)
+-    with open("tls-key-cert.pem", "w") as f:
++    with open('tls-key-cert.pem', 'w') as f:
+         f.write(key)
+         f.write(cert)
+ 
+     unmake_ca()
++
++    print_cert('tls-self-signed-cert.pem')
++    print_cert('tls-key-cert.pem')
++    print_cert('tls-cert-chain.pem')
+diff --git a/distributed/tests/tls-ca-cert.pem b/distributed/tests/tls-ca-cert.pem
+index 2ba3b04d..12efd1f5 100644
+--- a/distributed/tests/tls-ca-cert.pem
++++ b/distributed/tests/tls-ca-cert.pem
+@@ -2,77 +2,100 @@ Certificate:
+     Data:
+         Version: 3 (0x2)
+         Serial Number:
+-            3d:ba:1c:2e:06:59:1d:b8:7d:f0:67:cd:e2:68:3d:e4:70:ac:81:85
++            cb:2d:80:99:5a:69:52:5b
+         Signature Algorithm: sha256WithRSAEncryption
+         Issuer: C=XY, O=Dask CA, CN=our-ca-server
+         Validity
+-            Not Before: Jan  6 07:46:08 2021 GMT
+-            Not After : Jan  6 07:46:08 3021 GMT
++            Not Before: Aug 29 14:23:16 2018 GMT
++            Not After : Oct 28 14:23:16 2037 GMT
+         Subject: C=XY, O=Dask CA, CN=our-ca-server
+         Subject Public Key Info:
+             Public Key Algorithm: rsaEncryption
+-                RSA Public-Key: (2048 bit)
++                Public-Key: (3072 bit)
+                 Modulus:
+-                    00:98:f6:94:70:e6:f7:65:a9:fd:85:9c:a2:e2:ae:
+-                    08:3b:c4:93:4a:62:95:c3:19:f9:65:dd:f1:df:28:
+-                    ee:0b:e4:a1:a8:7d:68:97:b5:40:45:94:c7:a7:79:
+-                    62:0f:dd:ff:87:ea:12:76:ee:91:f1:3f:0e:0e:4f:
+-                    bd:b6:8f:26:40:63:08:fb:47:71:8a:0b:ae:71:d9:
+-                    86:10:f0:fc:02:e1:37:bb:87:68:3f:cb:67:44:6e:
+-                    60:04:64:38:26:40:96:dc:00:94:e0:2a:e5:8d:c8:
+-                    a2:9b:d1:12:d0:fa:43:ca:29:e7:42:0c:33:3a:f9:
+-                    cf:0a:01:54:3a:bf:02:b2:b4:49:46:6c:3c:d9:b5:
+-                    2c:0a:5c:24:0b:5a:0f:66:6e:31:4b:f5:33:4a:67:
+-                    61:e5:71:02:02:cb:16:1e:00:ad:bd:a5:8a:60:6b:
+-                    ad:09:25:14:8b:d0:ab:60:eb:d5:6b:70:af:9a:b6:
+-                    66:36:44:08:6a:6d:c4:92:72:ce:9b:83:a3:54:04:
+-                    3e:08:13:8d:0a:0b:4e:7a:4c:da:8e:ba:a0:34:76:
+-                    3b:ce:56:9c:d9:6e:19:ac:e9:3a:50:66:90:56:90:
+-                    bc:ff:a9:f2:1e:ac:b2:9f:01:7c:96:50:6f:bf:84:
+-                    df:22:9c:f6:b1:21:94:8a:79:3c:6c:dc:94:c2:e7:
+-                    a7:f7
++                    00:da:5c:62:f4:32:f6:29:c7:8f:24:45:71:3f:ea:
++                    f0:db:b5:33:b4:42:18:3e:06:96:29:e6:d3:00:47:
++                    d6:c7:e4:7d:f6:61:a4:bf:e2:48:3c:cd:24:1a:b4:
++                    42:f2:9c:b3:08:55:53:04:2f:29:2d:48:da:8f:dc:
++                    eb:a7:3e:1a:71:a4:d2:79:91:49:64:12:c3:79:65:
++                    be:0a:4a:11:43:ee:51:6e:8d:dd:9f:28:e5:7d:19:
++                    24:32:52:e0:61:78:e3:72:ef:8c:b7:de:9d:07:4c:
++                    94:86:54:4a:7e:ed:f5:55:f3:14:d0:7a:e4:6b:ca:
++                    de:d9:bd:88:34:fe:30:ea:e7:65:ae:29:d5:cc:1e:
++                    bb:ff:c2:c5:1d:a5:1a:f8:49:7b:0d:b3:71:ce:c4:
++                    9f:d5:cc:bf:e1:83:50:72:49:65:ed:0f:ff:69:e0:
++                    89:5c:14:f1:a0:84:78:a8:ed:46:62:3a:48:08:50:
++                    93:71:71:04:4c:8e:a0:c3:c3:9e:25:f3:19:54:cb:
++                    56:a5:aa:92:14:72:9f:b5:c7:b5:1a:fa:8a:ae:4c:
++                    5f:7b:35:19:71:9e:c6:a9:73:5c:97:38:4d:e6:2c:
++                    cf:66:4e:d1:f2:83:3f:97:4d:ad:34:3f:77:f6:ed:
++                    cd:67:5e:a5:a5:6d:2b:ee:9e:f0:2a:19:a8:3b:ec:
++                    b3:dc:ee:72:b6:64:48:8f:a4:e8:7a:95:52:c0:f4:
++                    f2:72:13:1c:5b:0a:fa:60:7f:18:29:84:d7:4d:34:
++                    75:6c:3d:49:b0:74:6e:7b:18:1f:b5:bb:9d:69:f2:
++                    1d:ff:f8:2a:c4:1e:3a:54:80:19:9b:87:fe:53:86:
++                    de:66:92:8c:fa:72:e0:e9:53:f1:0c:69:9a:b0:98:
++                    46:da:8a:ed:ca:fb:39:3d:37:c7:f8:3c:9b:be:29:
++                    9a:5e:c0:40:8d:1d:0e:a8:c8:e9:f2:a0:c4:1a:66:
++                    ae:a3:ce:ce:92:45:1a:e4:c9:e7:01:59:31:74:4b:
++                    03:8c:a1:06:cc:12:5c:dd:cd:f7
+                 Exponent: 65537 (0x10001)
+         X509v3 extensions:
+             X509v3 Subject Key Identifier: 
+-                EB:0C:96:1D:60:5D:3A:39:00:EA:D8:C3:73:B0:4E:C9:D6:B9:5D:5B
++                09:20:65:2B:61:F0:D0:F8:E7:C9:0C:29:6A:21:73:4C:D3:49:06:F2
+             X509v3 Authority Key Identifier: 
+-                keyid:EB:0C:96:1D:60:5D:3A:39:00:EA:D8:C3:73:B0:4E:C9:D6:B9:5D:5B
+-
+-            X509v3 Basic Constraints: 
++                09:20:65:2B:61:F0:D0:F8:E7:C9:0C:29:6A:21:73:4C:D3:49:06:F2
++            X509v3 Basic Constraints: critical
+                 CA:TRUE
++            X509v3 Key Usage: critical
++                Digital Signature, Certificate Sign, CRL Sign
+     Signature Algorithm: sha256WithRSAEncryption
+-         08:9b:4d:5a:f0:f0:3d:ef:2e:d2:20:fc:9a:91:41:ba:f6:12:
+-         5b:49:7e:2c:84:4d:f7:cf:2b:54:9c:d3:31:d5:54:da:b5:80:
+-         0f:04:e5:ca:79:81:19:d4:89:c6:55:fa:b0:0d:9d:3a:f7:34:
+-         39:00:3b:db:18:66:45:25:9a:1c:11:02:c0:e3:46:b9:72:37:
+-         a8:49:dc:0a:7f:fd:1b:fb:78:6c:e3:ae:2f:ac:99:dc:bd:3e:
+-         14:12:f2:c3:f9:75:97:7d:d3:74:61:2b:fa:07:78:e5:99:ed:
+-         58:31:87:ee:07:d0:d1:31:b3:b6:e0:90:1b:93:ac:e2:f2:71:
+-         ce:c8:81:56:be:9c:2e:22:a7:8e:6c:29:dc:e8:69:4e:26:af:
+-         41:4d:57:b2:f7:62:a5:d5:33:0e:0d:3d:fb:bb:35:a9:bf:e0:
+-         0a:4e:75:85:d5:39:aa:02:29:d7:a7:20:24:97:2a:48:0f:33:
+-         57:24:8d:11:02:88:c7:19:bb:22:95:e7:7b:09:51:ef:79:71:
+-         40:8e:36:f6:40:4a:df:3c:a4:ca:f3:ac:60:ee:a8:8f:58:38:
+-         88:07:06:78:5b:6c:cd:38:e4:1f:aa:69:d4:a1:ba:dc:59:21:
+-         3b:e5:5c:50:ac:0b:5c:3f:c3:c9:5a:6a:fb:c3:46:5f:97:93:
+-         7f:f1:a7:0f
++    Signature Value:
++        09:73:2a:5b:da:89:15:a4:98:59:d7:90:3c:8b:71:c9:ed:6e:
++        32:0a:01:9c:16:a9:6d:90:24:54:8d:58:d1:de:67:5b:d8:e1:
++        16:a5:ef:dc:bf:66:25:73:af:b6:1d:70:fe:39:ab:05:b0:7e:
++        4e:02:7c:04:a7:4b:17:66:1e:a7:f2:9b:22:5d:46:8e:c5:20:
++        e7:83:4d:8e:f6:e0:17:dd:18:3e:bc:83:61:2e:4c:4a:9a:e9:
++        85:67:5c:95:cd:e4:32:51:c0:62:ee:21:11:16:40:52:39:44:
++        16:13:70:0d:aa:77:23:32:82:6b:18:95:51:24:7a:a1:4d:90:
++        08:ac:17:8b:ff:34:17:c4:d5:86:bd:b3:41:d0:d9:b2:f7:67:
++        4b:c5:73:b7:55:f2:da:b0:5c:66:7e:a2:de:29:fd:31:9f:0a:
++        08:ca:70:2e:ab:e0:c6:a5:04:22:5a:7b:a5:0d:10:37:ef:c1:
++        da:59:27:6e:2c:3c:fa:96:1c:97:97:e0:2d:78:ac:b0:79:fb:
++        9c:b9:d0:af:4f:a9:be:fe:d1:f6:ce:f9:57:07:80:1e:3a:aa:
++        c1:8b:22:30:76:f2:3f:e9:0e:77:40:33:c1:40:92:e0:4c:12:
++        ce:15:44:15:16:a9:6d:9c:2a:3f:2c:92:7a:99:8f:a0:76:b1:
++        6e:80:b6:7d:27:bb:75:67:eb:f6:b7:a4:06:bf:3e:ce:2d:29:
++        1e:13:05:16:3b:93:bf:e7:42:33:a5:58:0e:5e:6a:0f:a0:d7:
++        bc:87:8c:d2:bc:fd:96:e6:e0:3c:c5:77:cd:a9:c1:bf:79:42:
++        4b:e5:f3:3a:57:11:ca:40:34:91:36:24:99:a2:16:a2:17:85:
++        21:31:32:92:19:3f:6f:f4:f6:4d:28:d7:ea:af:ab:89:4f:84:
++        7f:5b:3f:a0:12:f7:f7:69:58:93:f3:de:da:7c:cc:dd:55:fd:
++        e1:60:b0:70:e6:a1:f9:fb:55:25:67:12:6b:d3:4b:fc:c8:c5:
++        c5:37:fc:13:ee:32
+ -----BEGIN CERTIFICATE-----
+-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
++yMXFN/wT7jI=
+ -----END CERTIFICATE-----
+diff --git a/distributed/tests/tls-ca-key.pem b/distributed/tests/tls-ca-key.pem
+index d60ef29e..a0298ba0 100644
+--- a/distributed/tests/tls-ca-key.pem
++++ b/distributed/tests/tls-ca-key.pem
+@@ -1,28 +1,40 @@
+ -----BEGIN PRIVATE KEY-----
+-MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCY9pRw5vdlqf2F
+-nKLirgg7xJNKYpXDGfll3fHfKO4L5KGofWiXtUBFlMeneWIP3f+H6hJ27pHxPw4O
+-T722jyZAYwj7R3GKC65x2YYQ8PwC4Te7h2g/y2dEbmAEZDgmQJbcAJTgKuWNyKKb
+-0RLQ+kPKKedCDDM6+c8KAVQ6vwKytElGbDzZtSwKXCQLWg9mbjFL9TNKZ2HlcQIC
+-yxYeAK29pYpga60JJRSL0Ktg69VrcK+atmY2RAhqbcSScs6bg6NUBD4IE40KC056
+-TNqOuqA0djvOVpzZbhms6TpQZpBWkLz/qfIerLKfAXyWUG+/hN8inPaxIZSKeTxs
+-3JTC56f3AgMBAAECggEASZYWQ1pZmib1N9nq4nIms9oVoatbsMhGGqNzQJBINKCA
+-xLXQI2umx9KTWhYi/s8lpxUMXPrYat6SvH/QHIsxM7hxEbGFBYwpF8w1muDT2+7N
+-CQJTPJ11yI3w0ywDdyOLb7s347+/Pz5OO/eQvcgn5JHUFwoXez/CQmXxR3Gsspsa
+-Xt2JSUt7NKyS5L+wvAJa7q02iBTKnFPoJgXHOL2FDr/FCJmQLE7oLlJjagGN6UZs
+-LLikGagJw1TOLz0FbfmD/mxB4x+doC977i0eAgpvdZ/vUS3FMF85thbe6lw37hVa
+-ubRoE4njGEnTgk0XWnLLQjaHWGLej2ixjs2pjeYGgQKBgQDG8yAa/h/g6lKEfCMb
+-RIbN52JIIGbjXopCV8XFr5gotUhJ2zdB8Nv3cH0YciVrPkL0alJJ9Hs3BR/timJn
+-u1e+vlonlZjKvheNPNMR/hEh38UIWpfFgZ5J3f/Qp3a3m5Rs7v9kev3x5tfdATtO
+-8HYhZff1FIiEQCf8PTpf9enxbwKBgQDE05coXPDpr8qurxaPWjKNrBd0s9DsTA+z
+-cLSHVTshvfKwopPFRidMjHZxP6wsHlU/F+19ews+Cxa+P+brsNNWyBHjZSah0bl0
+-OAK/Behs/IyGQ8PbMM0RDErfzwq4fhOw7OGfkXp4/OnNu+ww7BOREeuJxdQN3kxO
+-WdzcTIHd+QKBgQDBYE4DjqDDyF8eoV6qQWhaOR6BhuUa+aifpZr5dJ0MbHBwQWCr
+-eocEMtWU7lZKsED6O2Hyum0NZLDM/eZ6d1FpeLI+qZzS7AQOZ2GtqmtSpqNoZE4D
+-TuLhX6QoVq4A93tEiuW48Adnmn6VNX5FU1svSWLDWAr9qTJ0bbsQzQFwhwKBgCXJ
+-kY2YOlBDBaB/0M74vBfi4CXxl7yl5aXHj4Ej5dRWiU9MBx6ql0Tk+qBHXyChOjCA
+-wYGDq+bfbiBcWFMLgad5haWod8A9aWNclXpjAfpaiggE3ocoWVZai81oDGDbI6Cl
+-+bMO1PqBY8mxuGi0ChWh4Rx0NH/tG603J2XL8mrRAoGARGkODhSZHcu+5zNomQMX
+-kQK+KfwGLMQQDOOuNC99sQPsKtS3FGg3LMKMF27wN7VI2jjCehdycd9NG1JWYVlF
+-e4mMnb+M/Z4i34bxAMUL2ueBFmAm5cTWr4qT/VH/z7/Va/R7H4GfE47ewQBou56p
+-ezqOR6ZwulVgcYQqTJhdv5U=
++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
++T2BEKscboSNCwH9xG2Ce9naJ
+ -----END PRIVATE KEY-----
+diff --git a/distributed/tests/tls-cert-chain.pem b/distributed/tests/tls-cert-chain.pem
+index 7a1ab123..699436d5 100644
+--- a/distributed/tests/tls-cert-chain.pem
++++ b/distributed/tests/tls-cert-chain.pem
+@@ -1,147 +1,221 @@
+ Certificate:
+     Data:
+-        Version: 1 (0x0)
++        Version: 3 (0x2)
+         Serial Number:
+-            3d:ba:1c:2e:06:59:1d:b8:7d:f0:67:cd:e2:68:3d:e4:70:ac:81:86
++            cb:2d:80:99:5a:69:52:5c
+         Signature Algorithm: sha256WithRSAEncryption
+         Issuer: C=XY, O=Dask CA, CN=our-ca-server
+         Validity
+-            Not Before: Jan  6 07:46:08 2021 GMT
+-            Not After : Aug 31 07:46:08 3006 GMT
++            Not Before: Aug 29 14:23:16 2018 GMT
++            Not After : Oct 28 14:23:16 2037 GMT
+         Subject: C=XY, L=Dask-distributed, O=Dask, CN=localhost
+         Subject Public Key Info:
+             Public Key Algorithm: rsaEncryption
+-                RSA Public-Key: (2048 bit)
++                Public-Key: (3072 bit)
+                 Modulus:
+-                    00:ab:2b:90:e9:59:22:80:c4:78:58:c5:fc:27:dd:
+-                    5a:1f:8e:af:db:f4:b6:e6:07:1f:53:90:4a:c8:d6:
+-                    69:43:a5:53:0e:18:7e:8b:23:78:ce:9f:63:d6:cb:
+-                    3b:6d:8a:f0:58:2c:46:b4:02:78:49:37:a0:ab:1d:
+-                    a7:15:7e:e8:06:fa:e1:de:07:d9:7c:86:b5:cf:36:
+-                    a1:22:e2:8d:6a:c7:85:4b:cc:a9:eb:a0:e9:c3:d7:
+-                    ce:45:bc:c6:80:46:9d:d0:7d:f6:bd:94:ec:09:d6:
+-                    ae:5e:94:d2:28:3e:0b:5a:99:0e:10:24:8e:eb:fd:
+-                    50:46:1f:8f:ba:2b:ae:66:4b:57:d6:20:9a:32:98:
+-                    8f:4a:b2:bb:c4:5a:86:b2:fd:46:f5:44:8c:22:f9:
+-                    69:d1:9d:96:06:47:e7:c9:6b:f0:df:59:2a:f0:72:
+-                    ba:31:9a:fd:81:d8:85:27:01:fd:5c:d4:10:a1:5f:
+-                    92:95:ec:45:92:23:d7:b6:78:89:99:f9:b6:15:4a:
+-                    81:53:d2:b2:7f:73:d8:09:9f:2c:f9:34:62:32:e6:
+-                    24:3e:19:3f:bd:c9:7b:07:40:82:7d:b0:26:c1:14:
+-                    2d:31:52:4c:74:cd:59:db:fa:a6:eb:65:5c:79:9b:
+-                    61:ca:76:2c:72:af:c7:ba:ad:3e:8f:86:38:d8:0a:
+-                    45:c5
++                    00:af:dc:2b:4f:d2:30:0e:eb:99:f9:57:fa:e6:b4:
++                    43:ce:c8:58:3b:cd:0a:0e:7f:71:f5:b9:c4:b9:31:
++                    43:4a:a8:1c:ca:4d:e1:63:f1:f1:a8:80:8b:3a:9c:
++                    d2:11:a4:e7:b9:29:75:82:ac:43:54:6a:b9:95:17:
++                    20:77:dc:53:52:04:40:9f:83:2d:aa:e4:cd:ef:88:
++                    f1:0b:75:7b:fd:04:9c:98:dc:62:e3:a0:15:c2:29:
++                    11:1d:e2:8f:71:cb:58:ad:95:62:4b:94:74:ae:ed:
++                    e5:74:60:f1:25:63:e3:0f:d9:8e:db:00:89:71:b4:
++                    7e:d9:9a:80:a8:68:77:0a:85:3c:9d:f6:de:df:d8:
++                    33:45:6c:2a:c5:3f:ca:e0:9f:de:1c:71:f5:2c:a6:
++                    9c:2b:f6:c1:59:00:a1:e9:4a:09:f5:69:06:f2:0e:
++                    68:f1:5b:df:67:6e:15:e9:8c:bb:ef:9e:cd:e2:1c:
++                    d9:4d:0d:f8:0f:7b:e3:e0:17:74:ca:1a:cf:50:8b:
++                    d7:2e:9d:3d:31:fd:36:8a:2c:f2:1b:ff:d3:51:64:
++                    64:01:af:ef:98:84:f3:ac:8e:06:83:5f:fe:5c:51:
++                    d7:a2:8a:90:ed:c2:a5:33:ae:79:b1:33:5d:10:0a:
++                    75:9e:dc:98:b0:c3:d2:86:aa:43:44:ac:7a:e8:0c:
++                    46:c7:0c:76:65:19:08:dd:7d:b0:87:73:44:4e:52:
++                    00:85:69:20:61:ab:42:3b:35:45:b3:f5:f4:87:71:
++                    15:38:dc:7c:64:ff:58:f3:37:85:d3:93:f8:4d:03:
++                    b5:9a:d0:1a:7d:06:e5:07:95:cd:09:5f:89:41:54:
++                    e5:81:ea:9a:68:f6:7b:04:8d:75:a2:b4:65:73:78:
++                    5c:ca:bf:30:b9:50:33:31:16:47:a3:bd:ec:54:9b:
++                    b5:22:20:50:72:2f:c0:4d:5b:cd:73:a5:a8:27:bc:
++                    6a:63:13:76:3c:5d:b0:a6:52:1f:d9:77:33:4b:6e:
++                    1c:9c:1d:73:75:a9:f0:46:85:cf
+                 Exponent: 65537 (0x10001)
++        X509v3 extensions:
++            X509v3 Subject Alternative Name: 
++                DNS:localhost
++            X509v3 Key Usage: critical
++                Digital Signature, Key Encipherment
++            X509v3 Extended Key Usage: 
++                TLS Web Server Authentication, TLS Web Client Authentication
++            X509v3 Basic Constraints: critical
++                CA:FALSE
++            X509v3 Subject Key Identifier: 
++                B2:D5:99:88:CC:E5:68:F0:20:83:05:06:46:59:DF:2F:EA:6F:84:73
++            X509v3 Authority Key Identifier: 
++                keyid:09:20:65:2B:61:F0:D0:F8:E7:C9:0C:29:6A:21:73:4C:D3:49:06:F2
++                DirName:/C=XY/O=Dask CA/CN=our-ca-server
++                serial:CB:2D:80:99:5A:69:52:5B
++            Authority Information Access: 
++                CA Issuers - URI:http://testca.pythontest.net/testca/pycacert.cer
++                OCSP - URI:http://testca.pythontest.net/testca/ocsp/
++            X509v3 CRL Distribution Points: 
++                Full Name:
++                  URI:http://testca.pythontest.net/testca/revocation.crl
+     Signature Algorithm: sha256WithRSAEncryption
+-         59:86:0c:cb:0a:2f:ec:58:91:55:1b:ee:81:15:c3:a0:d7:4c:
+-         74:b3:3f:4e:14:06:16:2c:bf:37:3d:ea:12:92:c2:80:1d:af:
+-         65:ce:00:b0:fe:b4:d7:83:cb:ef:d7:da:78:5b:db:88:6f:ab:
+-         02:de:c1:fe:3d:d7:b1:2f:c7:9d:0f:45:08:18:1e:e8:12:83:
+-         78:e7:3f:67:de:89:fe:70:90:81:fa:66:64:33:c9:e7:41:de:
+-         44:9a:aa:cf:fc:c8:49:93:7d:f4:a9:90:1f:59:ef:ce:72:48:
+-         39:d1:54:46:eb:fe:5b:06:67:d9:44:fd:a2:0a:3a:7f:6b:a9:
+-         ab:6b:1f:ee:6e:ec:1a:cc:63:96:d9:e8:d2:11:d7:5a:68:d6:
+-         42:69:d6:cb:c9:d9:0a:35:81:16:34:70:76:a1:69:8a:88:6c:
+-         57:c7:70:f5:23:1c:3f:6b:12:04:ff:44:5e:a5:f5:94:f8:e9:
+-         f4:20:de:d8:32:33:2f:e3:b4:69:39:5c:e9:9a:5e:44:7d:ae:
+-         94:00:d8:c2:88:15:a4:ed:3f:5c:d6:4f:bc:19:a0:54:ab:97:
+-         15:94:01:93:9e:f8:a5:dc:06:4d:02:75:f4:3a:eb:93:16:24:
+-         03:a1:12:85:e2:96:3b:b6:d7:b8:0b:99:00:f9:f0:f5:bc:7c:
+-         a0:59:0f:06
++    Signature Value:
++        3e:0c:ca:39:35:68:82:f8:52:bd:f1:34:d4:2c:4a:58:f1:7c:
++        63:8f:61:6e:56:ab:49:d6:0b:f3:34:e8:07:f0:9d:1a:df:bc:
++        d4:21:ba:79:ef:0f:40:40:38:70:3a:01:c5:1c:e7:6d:f9:48:
++        0c:58:cd:78:e0:e7:de:b7:6e:6a:28:8c:b4:b2:6b:64:d2:cb:
++        55:d2:05:c5:0f:4f:5d:11:9d:9d:19:a8:41:5d:90:29:64:25:
++        e8:04:1c:e8:83:e0:39:41:ac:4f:64:bf:d9:24:99:bd:9b:23:
++        21:72:6f:1b:38:01:c5:4f:88:79:9e:17:a3:b0:ec:39:a9:4d:
++        27:d9:b4:38:38:74:5f:28:32:d5:66:64:1d:f3:55:ff:6f:ff:
++        b8:e8:39:fc:66:e0:79:11:21:77:e9:6e:0a:90:26:bc:ee:2a:
++        d5:83:93:d0:c3:b1:03:4c:e7:6e:e0:1c:e3:cf:ca:c7:ea:e0:
++        6a:6e:ad:dc:a9:64:13:42:f8:65:11:07:0c:21:5f:d4:a7:82:
++        76:f0:cc:2b:8f:62:e0:f8:0a:12:bc:01:05:23:56:73:a1:7e:
++        82:ba:46:93:a9:6a:90:ce:15:4f:43:27:57:9e:fe:71:48:0c:
++        15:dd:29:0b:c5:1e:f1:a0:1c:92:6e:fd:47:79:4f:2f:8b:b7:
++        14:61:0f:b2:1d:bb:f3:15:58:17:7c:14:d7:12:2e:1f:c3:12:
++        11:67:48:77:27:0b:2b:a4:65:96:22:ed:ac:fb:dc:db:4b:8c:
++        f7:3b:ea:79:84:82:e8:0a:9e:28:a5:14:3c:37:12:e1:22:31:
++        41:f2:68:f4:e7:53:11:43:92:39:6d:9a:c1:be:30:e0:8f:16:
++        78:20:44:be:55:65:21:c3:31:1e:96:0d:5e:2c:e0:5d:31:a2:
++        6c:fc:46:70:76:b1:99:5a:8c:a1:a4:10:ec:08:3e:60:64:15:
++        4a:79:a3:8d:27:55:e4:51:4b:92:19:94:7e:18:95:e5:c8:68:
++        bb:89:b4:d0:65:12
+ -----BEGIN CERTIFICATE-----
+-MIIDCzCCAfMCFD26HC4GWR24ffBnzeJoPeRwrIGGMA0GCSqGSIb3DQEBCwUAMDcx
+-CzAJBgNVBAYTAlhZMRAwDgYDVQQKDAdEYXNrIENBMRYwFAYDVQQDDA1vdXItY2Et
+-c2VydmVyMCAXDTIxMDEwNjA3NDYwOFoYDzMwMDYwODMxMDc0NjA4WjBLMQswCQYD
+-VQQGEwJYWTEZMBcGA1UEBwwQRGFzay1kaXN0cmlidXRlZDENMAsGA1UECgwERGFz
+-azESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
+-CgKCAQEAqyuQ6VkigMR4WMX8J91aH46v2/S25gcfU5BKyNZpQ6VTDhh+iyN4zp9j
+-1ss7bYrwWCxGtAJ4STegqx2nFX7oBvrh3gfZfIa1zzahIuKNaseFS8yp66Dpw9fO
+-RbzGgEad0H32vZTsCdauXpTSKD4LWpkOECSO6/1QRh+PuiuuZktX1iCaMpiPSrK7
+-xFqGsv1G9USMIvlp0Z2WBkfnyWvw31kq8HK6MZr9gdiFJwH9XNQQoV+SlexFkiPX
+-tniJmfm2FUqBU9Kyf3PYCZ8s+TRiMuYkPhk/vcl7B0CCfbAmwRQtMVJMdM1Z2/qm
+-62VceZthynYscq/Huq0+j4Y42ApFxQIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBZ
+-hgzLCi/sWJFVG+6BFcOg10x0sz9OFAYWLL83PeoSksKAHa9lzgCw/rTXg8vv19p4
+-W9uIb6sC3sH+PdexL8edD0UIGB7oEoN45z9n3on+cJCB+mZkM8nnQd5EmqrP/MhJ
+-k330qZAfWe/Ockg50VRG6/5bBmfZRP2iCjp/a6mrax/ubuwazGOW2ejSEddaaNZC
+-adbLydkKNYEWNHB2oWmKiGxXx3D1Ixw/axIE/0RepfWU+On0IN7YMjMv47RpOVzp
+-ml5Efa6UANjCiBWk7T9c1k+8GaBUq5cVlAGTnvil3AZNAnX0OuuTFiQDoRKF4pY7
+-tte4C5kA+fD1vHygWQ8G
++MIIFsTCCBBmgAwIBAgIJAMstgJlaaVJcMA0GCSqGSIb3DQEBCwUAMDcxCzAJBgNV
++BAYTAlhZMRAwDgYDVQQKDAdEYXNrIENBMRYwFAYDVQQDDA1vdXItY2Etc2VydmVy
++MB4XDTE4MDgyOTE0MjMxNloXDTM3MTAyODE0MjMxNlowSzELMAkGA1UEBhMCWFkx
++GTAXBgNVBAcMEERhc2stZGlzdHJpYnV0ZWQxDTALBgNVBAoMBERhc2sxEjAQBgNV
++BAMMCWxvY2FsaG9zdDCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAK/c
++K0/SMA7rmflX+ua0Q87IWDvNCg5/cfW5xLkxQ0qoHMpN4WPx8aiAizqc0hGk57kp
++dYKsQ1RquZUXIHfcU1IEQJ+DLarkze+I8Qt1e/0EnJjcYuOgFcIpER3ij3HLWK2V
++YkuUdK7t5XRg8SVj4w/ZjtsAiXG0ftmagKhodwqFPJ323t/YM0VsKsU/yuCf3hxx
++9SymnCv2wVkAoelKCfVpBvIOaPFb32duFemMu++ezeIc2U0N+A974+AXdMoaz1CL
++1y6dPTH9Noos8hv/01FkZAGv75iE86yOBoNf/lxR16KKkO3CpTOuebEzXRAKdZ7c
++mLDD0oaqQ0SseugMRscMdmUZCN19sIdzRE5SAIVpIGGrQjs1RbP19IdxFTjcfGT/
++WPM3hdOT+E0DtZrQGn0G5QeVzQlfiUFU5YHqmmj2ewSNdaK0ZXN4XMq/MLlQMzEW
++R6O97FSbtSIgUHIvwE1bzXOlqCe8amMTdjxdsKZSH9l3M0tuHJwdc3Wp8EaFzwID
++AQABo4IBqjCCAaYwFAYDVR0RBA0wC4IJbG9jYWxob3N0MA4GA1UdDwEB/wQEAwIF
++oDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAd
++BgNVHQ4EFgQUstWZiMzlaPAggwUGRlnfL+pvhHMwZwYDVR0jBGAwXoAUCSBlK2Hw
++0PjnyQwpaiFzTNNJBvKhO6Q5MDcxCzAJBgNVBAYTAlhZMRAwDgYDVQQKDAdEYXNr
++IENBMRYwFAYDVQQDDA1vdXItY2Etc2VydmVyggkAyy2AmVppUlswgYMGCCsGAQUF
++BwEBBHcwdTA8BggrBgEFBQcwAoYwaHR0cDovL3Rlc3RjYS5weXRob250ZXN0Lm5l
++dC90ZXN0Y2EvcHljYWNlcnQuY2VyMDUGCCsGAQUFBzABhilodHRwOi8vdGVzdGNh
++LnB5dGhvbnRlc3QubmV0L3Rlc3RjYS9vY3NwLzBDBgNVHR8EPDA6MDigNqA0hjJo
++dHRwOi8vdGVzdGNhLnB5dGhvbnRlc3QubmV0L3Rlc3RjYS9yZXZvY2F0aW9uLmNy
++bDANBgkqhkiG9w0BAQsFAAOCAYEAPgzKOTVogvhSvfE01CxKWPF8Y49hblarSdYL
++8zToB/CdGt+81CG6ee8PQEA4cDoBxRznbflIDFjNeODn3rduaiiMtLJrZNLLVdIF
++xQ9PXRGdnRmoQV2QKWQl6AQc6IPgOUGsT2S/2SSZvZsjIXJvGzgBxU+IeZ4Xo7Ds
++OalNJ9m0ODh0Xygy1WZkHfNV/2//uOg5/GbgeREhd+luCpAmvO4q1YOT0MOxA0zn
++buAc48/Kx+rgam6t3KlkE0L4ZREHDCFf1KeCdvDMK49i4PgKErwBBSNWc6F+grpG
++k6lqkM4VT0MnV57+cUgMFd0pC8Ue8aAckm79R3lPL4u3FGEPsh278xVYF3wU1xIu
++H8MSEWdIdycLK6RlliLtrPvc20uM9zvqeYSC6AqeKKUUPDcS4SIxQfJo9OdTEUOS
++OW2awb4w4I8WeCBEvlVlIcMxHpYNXizgXTGibPxGcHaxmVqMoaQQ7Ag+YGQVSnmj
++jSdV5FFLkhmUfhiV5chou4m00GUS
+ -----END CERTIFICATE-----
+ Certificate:
+     Data:
+         Version: 3 (0x2)
+         Serial Number:
+-            3d:ba:1c:2e:06:59:1d:b8:7d:f0:67:cd:e2:68:3d:e4:70:ac:81:85
++            cb:2d:80:99:5a:69:52:5b
+         Signature Algorithm: sha256WithRSAEncryption
+         Issuer: C=XY, O=Dask CA, CN=our-ca-server
+         Validity
+-            Not Before: Jan  6 07:46:08 2021 GMT
+-            Not After : Jan  6 07:46:08 3021 GMT
++            Not Before: Aug 29 14:23:16 2018 GMT
++            Not After : Oct 28 14:23:16 2037 GMT
+         Subject: C=XY, O=Dask CA, CN=our-ca-server
+         Subject Public Key Info:
+             Public Key Algorithm: rsaEncryption
+-                RSA Public-Key: (2048 bit)
++                Public-Key: (3072 bit)
+                 Modulus:
+-                    00:98:f6:94:70:e6:f7:65:a9:fd:85:9c:a2:e2:ae:
+-                    08:3b:c4:93:4a:62:95:c3:19:f9:65:dd:f1:df:28:
+-                    ee:0b:e4:a1:a8:7d:68:97:b5:40:45:94:c7:a7:79:
+-                    62:0f:dd:ff:87:ea:12:76:ee:91:f1:3f:0e:0e:4f:
+-                    bd:b6:8f:26:40:63:08:fb:47:71:8a:0b:ae:71:d9:
+-                    86:10:f0:fc:02:e1:37:bb:87:68:3f:cb:67:44:6e:
+-                    60:04:64:38:26:40:96:dc:00:94:e0:2a:e5:8d:c8:
+-                    a2:9b:d1:12:d0:fa:43:ca:29:e7:42:0c:33:3a:f9:
+-                    cf:0a:01:54:3a:bf:02:b2:b4:49:46:6c:3c:d9:b5:
+-                    2c:0a:5c:24:0b:5a:0f:66:6e:31:4b:f5:33:4a:67:
+-                    61:e5:71:02:02:cb:16:1e:00:ad:bd:a5:8a:60:6b:
+-                    ad:09:25:14:8b:d0:ab:60:eb:d5:6b:70:af:9a:b6:
+-                    66:36:44:08:6a:6d:c4:92:72:ce:9b:83:a3:54:04:
+-                    3e:08:13:8d:0a:0b:4e:7a:4c:da:8e:ba:a0:34:76:
+-                    3b:ce:56:9c:d9:6e:19:ac:e9:3a:50:66:90:56:90:
+-                    bc:ff:a9:f2:1e:ac:b2:9f:01:7c:96:50:6f:bf:84:
+-                    df:22:9c:f6:b1:21:94:8a:79:3c:6c:dc:94:c2:e7:
+-                    a7:f7
++                    00:da:5c:62:f4:32:f6:29:c7:8f:24:45:71:3f:ea:
++                    f0:db:b5:33:b4:42:18:3e:06:96:29:e6:d3:00:47:
++                    d6:c7:e4:7d:f6:61:a4:bf:e2:48:3c:cd:24:1a:b4:
++                    42:f2:9c:b3:08:55:53:04:2f:29:2d:48:da:8f:dc:
++                    eb:a7:3e:1a:71:a4:d2:79:91:49:64:12:c3:79:65:
++                    be:0a:4a:11:43:ee:51:6e:8d:dd:9f:28:e5:7d:19:
++                    24:32:52:e0:61:78:e3:72:ef:8c:b7:de:9d:07:4c:
++                    94:86:54:4a:7e:ed:f5:55:f3:14:d0:7a:e4:6b:ca:
++                    de:d9:bd:88:34:fe:30:ea:e7:65:ae:29:d5:cc:1e:
++                    bb:ff:c2:c5:1d:a5:1a:f8:49:7b:0d:b3:71:ce:c4:
++                    9f:d5:cc:bf:e1:83:50:72:49:65:ed:0f:ff:69:e0:
++                    89:5c:14:f1:a0:84:78:a8:ed:46:62:3a:48:08:50:
++                    93:71:71:04:4c:8e:a0:c3:c3:9e:25:f3:19:54:cb:
++                    56:a5:aa:92:14:72:9f:b5:c7:b5:1a:fa:8a:ae:4c:
++                    5f:7b:35:19:71:9e:c6:a9:73:5c:97:38:4d:e6:2c:
++                    cf:66:4e:d1:f2:83:3f:97:4d:ad:34:3f:77:f6:ed:
++                    cd:67:5e:a5:a5:6d:2b:ee:9e:f0:2a:19:a8:3b:ec:
++                    b3:dc:ee:72:b6:64:48:8f:a4:e8:7a:95:52:c0:f4:
++                    f2:72:13:1c:5b:0a:fa:60:7f:18:29:84:d7:4d:34:
++                    75:6c:3d:49:b0:74:6e:7b:18:1f:b5:bb:9d:69:f2:
++                    1d:ff:f8:2a:c4:1e:3a:54:80:19:9b:87:fe:53:86:
++                    de:66:92:8c:fa:72:e0:e9:53:f1:0c:69:9a:b0:98:
++                    46:da:8a:ed:ca:fb:39:3d:37:c7:f8:3c:9b:be:29:
++                    9a:5e:c0:40:8d:1d:0e:a8:c8:e9:f2:a0:c4:1a:66:
++                    ae:a3:ce:ce:92:45:1a:e4:c9:e7:01:59:31:74:4b:
++                    03:8c:a1:06:cc:12:5c:dd:cd:f7
+                 Exponent: 65537 (0x10001)
+         X509v3 extensions:
+             X509v3 Subject Key Identifier: 
+-                EB:0C:96:1D:60:5D:3A:39:00:EA:D8:C3:73:B0:4E:C9:D6:B9:5D:5B
++                09:20:65:2B:61:F0:D0:F8:E7:C9:0C:29:6A:21:73:4C:D3:49:06:F2
+             X509v3 Authority Key Identifier: 
+-                keyid:EB:0C:96:1D:60:5D:3A:39:00:EA:D8:C3:73:B0:4E:C9:D6:B9:5D:5B
+-
+-            X509v3 Basic Constraints: 
++                09:20:65:2B:61:F0:D0:F8:E7:C9:0C:29:6A:21:73:4C:D3:49:06:F2
++            X509v3 Basic Constraints: critical
+                 CA:TRUE
++            X509v3 Key Usage: critical
++                Digital Signature, Certificate Sign, CRL Sign
+     Signature Algorithm: sha256WithRSAEncryption
+-         08:9b:4d:5a:f0:f0:3d:ef:2e:d2:20:fc:9a:91:41:ba:f6:12:
+-         5b:49:7e:2c:84:4d:f7:cf:2b:54:9c:d3:31:d5:54:da:b5:80:
+-         0f:04:e5:ca:79:81:19:d4:89:c6:55:fa:b0:0d:9d:3a:f7:34:
+-         39:00:3b:db:18:66:45:25:9a:1c:11:02:c0:e3:46:b9:72:37:
+-         a8:49:dc:0a:7f:fd:1b:fb:78:6c:e3:ae:2f:ac:99:dc:bd:3e:
+-         14:12:f2:c3:f9:75:97:7d:d3:74:61:2b:fa:07:78:e5:99:ed:
+-         58:31:87:ee:07:d0:d1:31:b3:b6:e0:90:1b:93:ac:e2:f2:71:
+-         ce:c8:81:56:be:9c:2e:22:a7:8e:6c:29:dc:e8:69:4e:26:af:
+-         41:4d:57:b2:f7:62:a5:d5:33:0e:0d:3d:fb:bb:35:a9:bf:e0:
+-         0a:4e:75:85:d5:39:aa:02:29:d7:a7:20:24:97:2a:48:0f:33:
+-         57:24:8d:11:02:88:c7:19:bb:22:95:e7:7b:09:51:ef:79:71:
+-         40:8e:36:f6:40:4a:df:3c:a4:ca:f3:ac:60:ee:a8:8f:58:38:
+-         88:07:06:78:5b:6c:cd:38:e4:1f:aa:69:d4:a1:ba:dc:59:21:
+-         3b:e5:5c:50:ac:0b:5c:3f:c3:c9:5a:6a:fb:c3:46:5f:97:93:
+-         7f:f1:a7:0f
++    Signature Value:
++        09:73:2a:5b:da:89:15:a4:98:59:d7:90:3c:8b:71:c9:ed:6e:
++        32:0a:01:9c:16:a9:6d:90:24:54:8d:58:d1:de:67:5b:d8:e1:
++        16:a5:ef:dc:bf:66:25:73:af:b6:1d:70:fe:39:ab:05:b0:7e:
++        4e:02:7c:04:a7:4b:17:66:1e:a7:f2:9b:22:5d:46:8e:c5:20:
++        e7:83:4d:8e:f6:e0:17:dd:18:3e:bc:83:61:2e:4c:4a:9a:e9:
++        85:67:5c:95:cd:e4:32:51:c0:62:ee:21:11:16:40:52:39:44:
++        16:13:70:0d:aa:77:23:32:82:6b:18:95:51:24:7a:a1:4d:90:
++        08:ac:17:8b:ff:34:17:c4:d5:86:bd:b3:41:d0:d9:b2:f7:67:
++        4b:c5:73:b7:55:f2:da:b0:5c:66:7e:a2:de:29:fd:31:9f:0a:
++        08:ca:70:2e:ab:e0:c6:a5:04:22:5a:7b:a5:0d:10:37:ef:c1:
++        da:59:27:6e:2c:3c:fa:96:1c:97:97:e0:2d:78:ac:b0:79:fb:
++        9c:b9:d0:af:4f:a9:be:fe:d1:f6:ce:f9:57:07:80:1e:3a:aa:
++        c1:8b:22:30:76:f2:3f:e9:0e:77:40:33:c1:40:92:e0:4c:12:
++        ce:15:44:15:16:a9:6d:9c:2a:3f:2c:92:7a:99:8f:a0:76:b1:
++        6e:80:b6:7d:27:bb:75:67:eb:f6:b7:a4:06:bf:3e:ce:2d:29:
++        1e:13:05:16:3b:93:bf:e7:42:33:a5:58:0e:5e:6a:0f:a0:d7:
++        bc:87:8c:d2:bc:fd:96:e6:e0:3c:c5:77:cd:a9:c1:bf:79:42:
++        4b:e5:f3:3a:57:11:ca:40:34:91:36:24:99:a2:16:a2:17:85:
++        21:31:32:92:19:3f:6f:f4:f6:4d:28:d7:ea:af:ab:89:4f:84:
++        7f:5b:3f:a0:12:f7:f7:69:58:93:f3:de:da:7c:cc:dd:55:fd:
++        e1:60:b0:70:e6:a1:f9:fb:55:25:67:12:6b:d3:4b:fc:c8:c5:
++        c5:37:fc:13:ee:32
+ -----BEGIN CERTIFICATE-----
+-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
++yMXFN/wT7jI=
+ -----END CERTIFICATE-----
+diff --git a/distributed/tests/tls-cert.pem b/distributed/tests/tls-cert.pem
+index 8452e3f1..0ab9d18a 100644
+--- a/distributed/tests/tls-cert.pem
++++ b/distributed/tests/tls-cert.pem
+@@ -1,69 +1,120 @@
+ Certificate:
+     Data:
+-        Version: 1 (0x0)
++        Version: 3 (0x2)
+         Serial Number:
+-            3d:ba:1c:2e:06:59:1d:b8:7d:f0:67:cd:e2:68:3d:e4:70:ac:81:86
++            cb:2d:80:99:5a:69:52:5c
+         Signature Algorithm: sha256WithRSAEncryption
+         Issuer: C=XY, O=Dask CA, CN=our-ca-server
+         Validity
+-            Not Before: Jan  6 07:46:08 2021 GMT
+-            Not After : Aug 31 07:46:08 3006 GMT
++            Not Before: Aug 29 14:23:16 2018 GMT
++            Not After : Oct 28 14:23:16 2037 GMT
+         Subject: C=XY, L=Dask-distributed, O=Dask, CN=localhost
+         Subject Public Key Info:
+             Public Key Algorithm: rsaEncryption
+-                RSA Public-Key: (2048 bit)
++                Public-Key: (3072 bit)
+                 Modulus:
+-                    00:ab:2b:90:e9:59:22:80:c4:78:58:c5:fc:27:dd:
+-                    5a:1f:8e:af:db:f4:b6:e6:07:1f:53:90:4a:c8:d6:
+-                    69:43:a5:53:0e:18:7e:8b:23:78:ce:9f:63:d6:cb:
+-                    3b:6d:8a:f0:58:2c:46:b4:02:78:49:37:a0:ab:1d:
+-                    a7:15:7e:e8:06:fa:e1:de:07:d9:7c:86:b5:cf:36:
+-                    a1:22:e2:8d:6a:c7:85:4b:cc:a9:eb:a0:e9:c3:d7:
+-                    ce:45:bc:c6:80:46:9d:d0:7d:f6:bd:94:ec:09:d6:
+-                    ae:5e:94:d2:28:3e:0b:5a:99:0e:10:24:8e:eb:fd:
+-                    50:46:1f:8f:ba:2b:ae:66:4b:57:d6:20:9a:32:98:
+-                    8f:4a:b2:bb:c4:5a:86:b2:fd:46:f5:44:8c:22:f9:
+-                    69:d1:9d:96:06:47:e7:c9:6b:f0:df:59:2a:f0:72:
+-                    ba:31:9a:fd:81:d8:85:27:01:fd:5c:d4:10:a1:5f:
+-                    92:95:ec:45:92:23:d7:b6:78:89:99:f9:b6:15:4a:
+-                    81:53:d2:b2:7f:73:d8:09:9f:2c:f9:34:62:32:e6:
+-                    24:3e:19:3f:bd:c9:7b:07:40:82:7d:b0:26:c1:14:
+-                    2d:31:52:4c:74:cd:59:db:fa:a6:eb:65:5c:79:9b:
+-                    61:ca:76:2c:72:af:c7:ba:ad:3e:8f:86:38:d8:0a:
+-                    45:c5
++                    00:af:dc:2b:4f:d2:30:0e:eb:99:f9:57:fa:e6:b4:
++                    43:ce:c8:58:3b:cd:0a:0e:7f:71:f5:b9:c4:b9:31:
++                    43:4a:a8:1c:ca:4d:e1:63:f1:f1:a8:80:8b:3a:9c:
++                    d2:11:a4:e7:b9:29:75:82:ac:43:54:6a:b9:95:17:
++                    20:77:dc:53:52:04:40:9f:83:2d:aa:e4:cd:ef:88:
++                    f1:0b:75:7b:fd:04:9c:98:dc:62:e3:a0:15:c2:29:
++                    11:1d:e2:8f:71:cb:58:ad:95:62:4b:94:74:ae:ed:
++                    e5:74:60:f1:25:63:e3:0f:d9:8e:db:00:89:71:b4:
++                    7e:d9:9a:80:a8:68:77:0a:85:3c:9d:f6:de:df:d8:
++                    33:45:6c:2a:c5:3f:ca:e0:9f:de:1c:71:f5:2c:a6:
++                    9c:2b:f6:c1:59:00:a1:e9:4a:09:f5:69:06:f2:0e:
++                    68:f1:5b:df:67:6e:15:e9:8c:bb:ef:9e:cd:e2:1c:
++                    d9:4d:0d:f8:0f:7b:e3:e0:17:74:ca:1a:cf:50:8b:
++                    d7:2e:9d:3d:31:fd:36:8a:2c:f2:1b:ff:d3:51:64:
++                    64:01:af:ef:98:84:f3:ac:8e:06:83:5f:fe:5c:51:
++                    d7:a2:8a:90:ed:c2:a5:33:ae:79:b1:33:5d:10:0a:
++                    75:9e:dc:98:b0:c3:d2:86:aa:43:44:ac:7a:e8:0c:
++                    46:c7:0c:76:65:19:08:dd:7d:b0:87:73:44:4e:52:
++                    00:85:69:20:61:ab:42:3b:35:45:b3:f5:f4:87:71:
++                    15:38:dc:7c:64:ff:58:f3:37:85:d3:93:f8:4d:03:
++                    b5:9a:d0:1a:7d:06:e5:07:95:cd:09:5f:89:41:54:
++                    e5:81:ea:9a:68:f6:7b:04:8d:75:a2:b4:65:73:78:
++                    5c:ca:bf:30:b9:50:33:31:16:47:a3:bd:ec:54:9b:
++                    b5:22:20:50:72:2f:c0:4d:5b:cd:73:a5:a8:27:bc:
++                    6a:63:13:76:3c:5d:b0:a6:52:1f:d9:77:33:4b:6e:
++                    1c:9c:1d:73:75:a9:f0:46:85:cf
+                 Exponent: 65537 (0x10001)
++        X509v3 extensions:
++            X509v3 Subject Alternative Name: 
++                DNS:localhost
++            X509v3 Key Usage: critical
++                Digital Signature, Key Encipherment
++            X509v3 Extended Key Usage: 
++                TLS Web Server Authentication, TLS Web Client Authentication
++            X509v3 Basic Constraints: critical
++                CA:FALSE
++            X509v3 Subject Key Identifier: 
++                B2:D5:99:88:CC:E5:68:F0:20:83:05:06:46:59:DF:2F:EA:6F:84:73
++            X509v3 Authority Key Identifier: 
++                keyid:09:20:65:2B:61:F0:D0:F8:E7:C9:0C:29:6A:21:73:4C:D3:49:06:F2
++                DirName:/C=XY/O=Dask CA/CN=our-ca-server
++                serial:CB:2D:80:99:5A:69:52:5B
++            Authority Information Access: 
++                CA Issuers - URI:http://testca.pythontest.net/testca/pycacert.cer
++                OCSP - URI:http://testca.pythontest.net/testca/ocsp/
++            X509v3 CRL Distribution Points: 
++                Full Name:
++                  URI:http://testca.pythontest.net/testca/revocation.crl
+     Signature Algorithm: sha256WithRSAEncryption
+-         59:86:0c:cb:0a:2f:ec:58:91:55:1b:ee:81:15:c3:a0:d7:4c:
+-         74:b3:3f:4e:14:06:16:2c:bf:37:3d:ea:12:92:c2:80:1d:af:
+-         65:ce:00:b0:fe:b4:d7:83:cb:ef:d7:da:78:5b:db:88:6f:ab:
+-         02:de:c1:fe:3d:d7:b1:2f:c7:9d:0f:45:08:18:1e:e8:12:83:
+-         78:e7:3f:67:de:89:fe:70:90:81:fa:66:64:33:c9:e7:41:de:
+-         44:9a:aa:cf:fc:c8:49:93:7d:f4:a9:90:1f:59:ef:ce:72:48:
+-         39:d1:54:46:eb:fe:5b:06:67:d9:44:fd:a2:0a:3a:7f:6b:a9:
+-         ab:6b:1f:ee:6e:ec:1a:cc:63:96:d9:e8:d2:11:d7:5a:68:d6:
+-         42:69:d6:cb:c9:d9:0a:35:81:16:34:70:76:a1:69:8a:88:6c:
+-         57:c7:70:f5:23:1c:3f:6b:12:04:ff:44:5e:a5:f5:94:f8:e9:
+-         f4:20:de:d8:32:33:2f:e3:b4:69:39:5c:e9:9a:5e:44:7d:ae:
+-         94:00:d8:c2:88:15:a4:ed:3f:5c:d6:4f:bc:19:a0:54:ab:97:
+-         15:94:01:93:9e:f8:a5:dc:06:4d:02:75:f4:3a:eb:93:16:24:
+-         03:a1:12:85:e2:96:3b:b6:d7:b8:0b:99:00:f9:f0:f5:bc:7c:
+-         a0:59:0f:06
++    Signature Value:
++        3e:0c:ca:39:35:68:82:f8:52:bd:f1:34:d4:2c:4a:58:f1:7c:
++        63:8f:61:6e:56:ab:49:d6:0b:f3:34:e8:07:f0:9d:1a:df:bc:
++        d4:21:ba:79:ef:0f:40:40:38:70:3a:01:c5:1c:e7:6d:f9:48:
++        0c:58:cd:78:e0:e7:de:b7:6e:6a:28:8c:b4:b2:6b:64:d2:cb:
++        55:d2:05:c5:0f:4f:5d:11:9d:9d:19:a8:41:5d:90:29:64:25:
++        e8:04:1c:e8:83:e0:39:41:ac:4f:64:bf:d9:24:99:bd:9b:23:
++        21:72:6f:1b:38:01:c5:4f:88:79:9e:17:a3:b0:ec:39:a9:4d:
++        27:d9:b4:38:38:74:5f:28:32:d5:66:64:1d:f3:55:ff:6f:ff:
++        b8:e8:39:fc:66:e0:79:11:21:77:e9:6e:0a:90:26:bc:ee:2a:
++        d5:83:93:d0:c3:b1:03:4c:e7:6e:e0:1c:e3:cf:ca:c7:ea:e0:
++        6a:6e:ad:dc:a9:64:13:42:f8:65:11:07:0c:21:5f:d4:a7:82:
++        76:f0:cc:2b:8f:62:e0:f8:0a:12:bc:01:05:23:56:73:a1:7e:
++        82:ba:46:93:a9:6a:90:ce:15:4f:43:27:57:9e:fe:71:48:0c:
++        15:dd:29:0b:c5:1e:f1:a0:1c:92:6e:fd:47:79:4f:2f:8b:b7:
++        14:61:0f:b2:1d:bb:f3:15:58:17:7c:14:d7:12:2e:1f:c3:12:
++        11:67:48:77:27:0b:2b:a4:65:96:22:ed:ac:fb:dc:db:4b:8c:
++        f7:3b:ea:79:84:82:e8:0a:9e:28:a5:14:3c:37:12:e1:22:31:
++        41:f2:68:f4:e7:53:11:43:92:39:6d:9a:c1:be:30:e0:8f:16:
++        78:20:44:be:55:65:21:c3:31:1e:96:0d:5e:2c:e0:5d:31:a2:
++        6c:fc:46:70:76:b1:99:5a:8c:a1:a4:10:ec:08:3e:60:64:15:
++        4a:79:a3:8d:27:55:e4:51:4b:92:19:94:7e:18:95:e5:c8:68:
++        bb:89:b4:d0:65:12
+ -----BEGIN CERTIFICATE-----
+-MIIDCzCCAfMCFD26HC4GWR24ffBnzeJoPeRwrIGGMA0GCSqGSIb3DQEBCwUAMDcx
+-CzAJBgNVBAYTAlhZMRAwDgYDVQQKDAdEYXNrIENBMRYwFAYDVQQDDA1vdXItY2Et
+-c2VydmVyMCAXDTIxMDEwNjA3NDYwOFoYDzMwMDYwODMxMDc0NjA4WjBLMQswCQYD
+-VQQGEwJYWTEZMBcGA1UEBwwQRGFzay1kaXN0cmlidXRlZDENMAsGA1UECgwERGFz
+-azESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
+-CgKCAQEAqyuQ6VkigMR4WMX8J91aH46v2/S25gcfU5BKyNZpQ6VTDhh+iyN4zp9j
+-1ss7bYrwWCxGtAJ4STegqx2nFX7oBvrh3gfZfIa1zzahIuKNaseFS8yp66Dpw9fO
+-RbzGgEad0H32vZTsCdauXpTSKD4LWpkOECSO6/1QRh+PuiuuZktX1iCaMpiPSrK7
+-xFqGsv1G9USMIvlp0Z2WBkfnyWvw31kq8HK6MZr9gdiFJwH9XNQQoV+SlexFkiPX
+-tniJmfm2FUqBU9Kyf3PYCZ8s+TRiMuYkPhk/vcl7B0CCfbAmwRQtMVJMdM1Z2/qm
+-62VceZthynYscq/Huq0+j4Y42ApFxQIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBZ
+-hgzLCi/sWJFVG+6BFcOg10x0sz9OFAYWLL83PeoSksKAHa9lzgCw/rTXg8vv19p4
+-W9uIb6sC3sH+PdexL8edD0UIGB7oEoN45z9n3on+cJCB+mZkM8nnQd5EmqrP/MhJ
+-k330qZAfWe/Ockg50VRG6/5bBmfZRP2iCjp/a6mrax/ubuwazGOW2ejSEddaaNZC
+-adbLydkKNYEWNHB2oWmKiGxXx3D1Ixw/axIE/0RepfWU+On0IN7YMjMv47RpOVzp
+-ml5Efa6UANjCiBWk7T9c1k+8GaBUq5cVlAGTnvil3AZNAnX0OuuTFiQDoRKF4pY7
+-tte4C5kA+fD1vHygWQ8G
++MIIFsTCCBBmgAwIBAgIJAMstgJlaaVJcMA0GCSqGSIb3DQEBCwUAMDcxCzAJBgNV
++BAYTAlhZMRAwDgYDVQQKDAdEYXNrIENBMRYwFAYDVQQDDA1vdXItY2Etc2VydmVy
++MB4XDTE4MDgyOTE0MjMxNloXDTM3MTAyODE0MjMxNlowSzELMAkGA1UEBhMCWFkx
++GTAXBgNVBAcMEERhc2stZGlzdHJpYnV0ZWQxDTALBgNVBAoMBERhc2sxEjAQBgNV
++BAMMCWxvY2FsaG9zdDCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAK/c
++K0/SMA7rmflX+ua0Q87IWDvNCg5/cfW5xLkxQ0qoHMpN4WPx8aiAizqc0hGk57kp
++dYKsQ1RquZUXIHfcU1IEQJ+DLarkze+I8Qt1e/0EnJjcYuOgFcIpER3ij3HLWK2V
++YkuUdK7t5XRg8SVj4w/ZjtsAiXG0ftmagKhodwqFPJ323t/YM0VsKsU/yuCf3hxx
++9SymnCv2wVkAoelKCfVpBvIOaPFb32duFemMu++ezeIc2U0N+A974+AXdMoaz1CL
++1y6dPTH9Noos8hv/01FkZAGv75iE86yOBoNf/lxR16KKkO3CpTOuebEzXRAKdZ7c
++mLDD0oaqQ0SseugMRscMdmUZCN19sIdzRE5SAIVpIGGrQjs1RbP19IdxFTjcfGT/
++WPM3hdOT+E0DtZrQGn0G5QeVzQlfiUFU5YHqmmj2ewSNdaK0ZXN4XMq/MLlQMzEW
++R6O97FSbtSIgUHIvwE1bzXOlqCe8amMTdjxdsKZSH9l3M0tuHJwdc3Wp8EaFzwID
++AQABo4IBqjCCAaYwFAYDVR0RBA0wC4IJbG9jYWxob3N0MA4GA1UdDwEB/wQEAwIF
++oDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAd
++BgNVHQ4EFgQUstWZiMzlaPAggwUGRlnfL+pvhHMwZwYDVR0jBGAwXoAUCSBlK2Hw
++0PjnyQwpaiFzTNNJBvKhO6Q5MDcxCzAJBgNVBAYTAlhZMRAwDgYDVQQKDAdEYXNr
++IENBMRYwFAYDVQQDDA1vdXItY2Etc2VydmVyggkAyy2AmVppUlswgYMGCCsGAQUF
++BwEBBHcwdTA8BggrBgEFBQcwAoYwaHR0cDovL3Rlc3RjYS5weXRob250ZXN0Lm5l
++dC90ZXN0Y2EvcHljYWNlcnQuY2VyMDUGCCsGAQUFBzABhilodHRwOi8vdGVzdGNh
++LnB5dGhvbnRlc3QubmV0L3Rlc3RjYS9vY3NwLzBDBgNVHR8EPDA6MDigNqA0hjJo
++dHRwOi8vdGVzdGNhLnB5dGhvbnRlc3QubmV0L3Rlc3RjYS9yZXZvY2F0aW9uLmNy
++bDANBgkqhkiG9w0BAQsFAAOCAYEAPgzKOTVogvhSvfE01CxKWPF8Y49hblarSdYL
++8zToB/CdGt+81CG6ee8PQEA4cDoBxRznbflIDFjNeODn3rduaiiMtLJrZNLLVdIF
++xQ9PXRGdnRmoQV2QKWQl6AQc6IPgOUGsT2S/2SSZvZsjIXJvGzgBxU+IeZ4Xo7Ds
++OalNJ9m0ODh0Xygy1WZkHfNV/2//uOg5/GbgeREhd+luCpAmvO4q1YOT0MOxA0zn
++buAc48/Kx+rgam6t3KlkE0L4ZREHDCFf1KeCdvDMK49i4PgKErwBBSNWc6F+grpG
++k6lqkM4VT0MnV57+cUgMFd0pC8Ue8aAckm79R3lPL4u3FGEPsh278xVYF3wU1xIu
++H8MSEWdIdycLK6RlliLtrPvc20uM9zvqeYSC6AqeKKUUPDcS4SIxQfJo9OdTEUOS
++OW2awb4w4I8WeCBEvlVlIcMxHpYNXizgXTGibPxGcHaxmVqMoaQQ7Ag+YGQVSnmj
++jSdV5FFLkhmUfhiV5chou4m00GUS
+ -----END CERTIFICATE-----
+diff --git a/distributed/tests/tls-key-cert.pem b/distributed/tests/tls-key-cert.pem
+index 44e1287c..43edee75 100644
+--- a/distributed/tests/tls-key-cert.pem
++++ b/distributed/tests/tls-key-cert.pem
+@@ -1,97 +1,160 @@
+ -----BEGIN PRIVATE KEY-----
+-MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCrK5DpWSKAxHhY
+-xfwn3Vofjq/b9LbmBx9TkErI1mlDpVMOGH6LI3jOn2PWyzttivBYLEa0AnhJN6Cr
+-HacVfugG+uHeB9l8hrXPNqEi4o1qx4VLzKnroOnD185FvMaARp3Qffa9lOwJ1q5e
+-lNIoPgtamQ4QJI7r/VBGH4+6K65mS1fWIJoymI9KsrvEWoay/Ub1RIwi+WnRnZYG
+-R+fJa/DfWSrwcroxmv2B2IUnAf1c1BChX5KV7EWSI9e2eImZ+bYVSoFT0rJ/c9gJ
+-nyz5NGIy5iQ+GT+9yXsHQIJ9sCbBFC0xUkx0zVnb+qbrZVx5m2HKdixyr8e6rT6P
+-hjjYCkXFAgMBAAECggEAEF7uUSMRRbeEuxjUcQuenv4Km8Lf60grGtbmECdRkgKx
+-2ttE3xHZcAmWhuiRGnz7V7OEX5sM3hPP7g27+TZWArTj/VRK3LoVkWfsKWX5mIjU
+-mtdMORj+wphVRh4z7fjTBynE+4TOvnIl4y3gm7CzbUrOKYUVlkR39Pz3xhp/Z5EN
+-ATFquJ4fCCtTMLiLmtwsIeLfqdzbnYy20W5ILdYmDhRG1OSaC9ioFax9VUHZ4/LB
+-CpWry0fA4J4ulk2oMKo7MNVTh+uubUT8/xyBULx/u9mj9LLPzVLi3FBDsgg4Uglt
+-K/pcAmMXUbwa4pxm5YMX2Rg+cM56/kH7EZnDjMCdgQKBgQDh4W84ClPbrVsk/+yX
+-y2HxnCjMqc3r5OtAR7cFnv5BX+4urVF4pal720QmHGLTzo9Jiib172WvXPWwNc8a
+-x7Knv3hXM1Z40J1E04VqwZx7fg/6DHRDhJ1j/sRb0VNStChKakOeVgvqJriapdUZ
+-L/sCsUEWZqr3qYYj/Lkm3xGzeQKBgQDB/o8+IgaisarFKZDhiF8XWNJ+v7lmTRI3
+-wpryVaBVopxJKVc2F61iWhllA8skvpmGqx+E7E2QeYHU+y3S3z+MASyoCKpc7pOA
+-QaN2Mxu4nzc211n6a7T8b8UtRxO0wTXC3PfPFx0uKcOTGqBf9mPehN02WeiO2jiH
+-uKs0qt+lrQKBgGSohlyN1aLelPBfD/rxCluWAGR8AyTtJZzGmJvrp1hQvJ6WY+kE
+-wgtMwgjNu4ix0w6tfwE3xrOoFGCLChjgBxBT9fe+C/nY1Uy3igvx7Z7mpY4DgMgZ
+-z92gybY1CRGg8ReAVVO4+qREzx0za0xHIm+nt96Yr/Wf2QQuegAFhijZAoGAE4WN
+-XqBH8KlWWP7k0H1LrGrIy+55Nr08vxW7R/Wr69IwTgB2AUCCtyn/8jVehPUVOAMS
+-aerpp0dC9G7OXrEOkQUxPDubAT0U5Mw2Kdfcy0hiYwdqy5N5JAoPWo4TgpYK1fAs
+-k89spU+Ymb4NM3r089iE9ko35+A33hiMSgGD/gUCgYBNgBAUPrRG+si3Hub0xtmj
+-3fbcG423kUEptjr5oouH4KGa3M0o3gY4KX9GfQ+cTd/zO7kju64lGrbQIk8V25fy
+-Dc0C6kQCxAA1cBZrHC3mo/p/bg+oDX2bvDA7SSnxI18awkPL5Rq8BRNyJHVIvE9P
+-1LrREdObq7nOuU18HkRKfA==
++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
++ZwISelsbuYuWlRl7JxBDpA==
+ -----END PRIVATE KEY-----
+ Certificate:
+     Data:
+-        Version: 1 (0x0)
++        Version: 3 (0x2)
+         Serial Number:
+-            3d:ba:1c:2e:06:59:1d:b8:7d:f0:67:cd:e2:68:3d:e4:70:ac:81:86
++            cb:2d:80:99:5a:69:52:5c
+         Signature Algorithm: sha256WithRSAEncryption
+         Issuer: C=XY, O=Dask CA, CN=our-ca-server
+         Validity
+-            Not Before: Jan  6 07:46:08 2021 GMT
+-            Not After : Aug 31 07:46:08 3006 GMT
++            Not Before: Aug 29 14:23:16 2018 GMT
++            Not After : Oct 28 14:23:16 2037 GMT
+         Subject: C=XY, L=Dask-distributed, O=Dask, CN=localhost
+         Subject Public Key Info:
+             Public Key Algorithm: rsaEncryption
+-                RSA Public-Key: (2048 bit)
++                Public-Key: (3072 bit)
+                 Modulus:
+-                    00:ab:2b:90:e9:59:22:80:c4:78:58:c5:fc:27:dd:
+-                    5a:1f:8e:af:db:f4:b6:e6:07:1f:53:90:4a:c8:d6:
+-                    69:43:a5:53:0e:18:7e:8b:23:78:ce:9f:63:d6:cb:
+-                    3b:6d:8a:f0:58:2c:46:b4:02:78:49:37:a0:ab:1d:
+-                    a7:15:7e:e8:06:fa:e1:de:07:d9:7c:86:b5:cf:36:
+-                    a1:22:e2:8d:6a:c7:85:4b:cc:a9:eb:a0:e9:c3:d7:
+-                    ce:45:bc:c6:80:46:9d:d0:7d:f6:bd:94:ec:09:d6:
+-                    ae:5e:94:d2:28:3e:0b:5a:99:0e:10:24:8e:eb:fd:
+-                    50:46:1f:8f:ba:2b:ae:66:4b:57:d6:20:9a:32:98:
+-                    8f:4a:b2:bb:c4:5a:86:b2:fd:46:f5:44:8c:22:f9:
+-                    69:d1:9d:96:06:47:e7:c9:6b:f0:df:59:2a:f0:72:
+-                    ba:31:9a:fd:81:d8:85:27:01:fd:5c:d4:10:a1:5f:
+-                    92:95:ec:45:92:23:d7:b6:78:89:99:f9:b6:15:4a:
+-                    81:53:d2:b2:7f:73:d8:09:9f:2c:f9:34:62:32:e6:
+-                    24:3e:19:3f:bd:c9:7b:07:40:82:7d:b0:26:c1:14:
+-                    2d:31:52:4c:74:cd:59:db:fa:a6:eb:65:5c:79:9b:
+-                    61:ca:76:2c:72:af:c7:ba:ad:3e:8f:86:38:d8:0a:
+-                    45:c5
++                    00:af:dc:2b:4f:d2:30:0e:eb:99:f9:57:fa:e6:b4:
++                    43:ce:c8:58:3b:cd:0a:0e:7f:71:f5:b9:c4:b9:31:
++                    43:4a:a8:1c:ca:4d:e1:63:f1:f1:a8:80:8b:3a:9c:
++                    d2:11:a4:e7:b9:29:75:82:ac:43:54:6a:b9:95:17:
++                    20:77:dc:53:52:04:40:9f:83:2d:aa:e4:cd:ef:88:
++                    f1:0b:75:7b:fd:04:9c:98:dc:62:e3:a0:15:c2:29:
++                    11:1d:e2:8f:71:cb:58:ad:95:62:4b:94:74:ae:ed:
++                    e5:74:60:f1:25:63:e3:0f:d9:8e:db:00:89:71:b4:
++                    7e:d9:9a:80:a8:68:77:0a:85:3c:9d:f6:de:df:d8:
++                    33:45:6c:2a:c5:3f:ca:e0:9f:de:1c:71:f5:2c:a6:
++                    9c:2b:f6:c1:59:00:a1:e9:4a:09:f5:69:06:f2:0e:
++                    68:f1:5b:df:67:6e:15:e9:8c:bb:ef:9e:cd:e2:1c:
++                    d9:4d:0d:f8:0f:7b:e3:e0:17:74:ca:1a:cf:50:8b:
++                    d7:2e:9d:3d:31:fd:36:8a:2c:f2:1b:ff:d3:51:64:
++                    64:01:af:ef:98:84:f3:ac:8e:06:83:5f:fe:5c:51:
++                    d7:a2:8a:90:ed:c2:a5:33:ae:79:b1:33:5d:10:0a:
++                    75:9e:dc:98:b0:c3:d2:86:aa:43:44:ac:7a:e8:0c:
++                    46:c7:0c:76:65:19:08:dd:7d:b0:87:73:44:4e:52:
++                    00:85:69:20:61:ab:42:3b:35:45:b3:f5:f4:87:71:
++                    15:38:dc:7c:64:ff:58:f3:37:85:d3:93:f8:4d:03:
++                    b5:9a:d0:1a:7d:06:e5:07:95:cd:09:5f:89:41:54:
++                    e5:81:ea:9a:68:f6:7b:04:8d:75:a2:b4:65:73:78:
++                    5c:ca:bf:30:b9:50:33:31:16:47:a3:bd:ec:54:9b:
++                    b5:22:20:50:72:2f:c0:4d:5b:cd:73:a5:a8:27:bc:
++                    6a:63:13:76:3c:5d:b0:a6:52:1f:d9:77:33:4b:6e:
++                    1c:9c:1d:73:75:a9:f0:46:85:cf
+                 Exponent: 65537 (0x10001)
++        X509v3 extensions:
++            X509v3 Subject Alternative Name: 
++                DNS:localhost
++            X509v3 Key Usage: critical
++                Digital Signature, Key Encipherment
++            X509v3 Extended Key Usage: 
++                TLS Web Server Authentication, TLS Web Client Authentication
++            X509v3 Basic Constraints: critical
++                CA:FALSE
++            X509v3 Subject Key Identifier: 
++                B2:D5:99:88:CC:E5:68:F0:20:83:05:06:46:59:DF:2F:EA:6F:84:73
++            X509v3 Authority Key Identifier: 
++                keyid:09:20:65:2B:61:F0:D0:F8:E7:C9:0C:29:6A:21:73:4C:D3:49:06:F2
++                DirName:/C=XY/O=Dask CA/CN=our-ca-server
++                serial:CB:2D:80:99:5A:69:52:5B
++            Authority Information Access: 
++                CA Issuers - URI:http://testca.pythontest.net/testca/pycacert.cer
++                OCSP - URI:http://testca.pythontest.net/testca/ocsp/
++            X509v3 CRL Distribution Points: 
++                Full Name:
++                  URI:http://testca.pythontest.net/testca/revocation.crl
+     Signature Algorithm: sha256WithRSAEncryption
+-         59:86:0c:cb:0a:2f:ec:58:91:55:1b:ee:81:15:c3:a0:d7:4c:
+-         74:b3:3f:4e:14:06:16:2c:bf:37:3d:ea:12:92:c2:80:1d:af:
+-         65:ce:00:b0:fe:b4:d7:83:cb:ef:d7:da:78:5b:db:88:6f:ab:
+-         02:de:c1:fe:3d:d7:b1:2f:c7:9d:0f:45:08:18:1e:e8:12:83:
+-         78:e7:3f:67:de:89:fe:70:90:81:fa:66:64:33:c9:e7:41:de:
+-         44:9a:aa:cf:fc:c8:49:93:7d:f4:a9:90:1f:59:ef:ce:72:48:
+-         39:d1:54:46:eb:fe:5b:06:67:d9:44:fd:a2:0a:3a:7f:6b:a9:
+-         ab:6b:1f:ee:6e:ec:1a:cc:63:96:d9:e8:d2:11:d7:5a:68:d6:
+-         42:69:d6:cb:c9:d9:0a:35:81:16:34:70:76:a1:69:8a:88:6c:
+-         57:c7:70:f5:23:1c:3f:6b:12:04:ff:44:5e:a5:f5:94:f8:e9:
+-         f4:20:de:d8:32:33:2f:e3:b4:69:39:5c:e9:9a:5e:44:7d:ae:
+-         94:00:d8:c2:88:15:a4:ed:3f:5c:d6:4f:bc:19:a0:54:ab:97:
+-         15:94:01:93:9e:f8:a5:dc:06:4d:02:75:f4:3a:eb:93:16:24:
+-         03:a1:12:85:e2:96:3b:b6:d7:b8:0b:99:00:f9:f0:f5:bc:7c:
+-         a0:59:0f:06
++    Signature Value:
++        3e:0c:ca:39:35:68:82:f8:52:bd:f1:34:d4:2c:4a:58:f1:7c:
++        63:8f:61:6e:56:ab:49:d6:0b:f3:34:e8:07:f0:9d:1a:df:bc:
++        d4:21:ba:79:ef:0f:40:40:38:70:3a:01:c5:1c:e7:6d:f9:48:
++        0c:58:cd:78:e0:e7:de:b7:6e:6a:28:8c:b4:b2:6b:64:d2:cb:
++        55:d2:05:c5:0f:4f:5d:11:9d:9d:19:a8:41:5d:90:29:64:25:
++        e8:04:1c:e8:83:e0:39:41:ac:4f:64:bf:d9:24:99:bd:9b:23:
++        21:72:6f:1b:38:01:c5:4f:88:79:9e:17:a3:b0:ec:39:a9:4d:
++        27:d9:b4:38:38:74:5f:28:32:d5:66:64:1d:f3:55:ff:6f:ff:
++        b8:e8:39:fc:66:e0:79:11:21:77:e9:6e:0a:90:26:bc:ee:2a:
++        d5:83:93:d0:c3:b1:03:4c:e7:6e:e0:1c:e3:cf:ca:c7:ea:e0:
++        6a:6e:ad:dc:a9:64:13:42:f8:65:11:07:0c:21:5f:d4:a7:82:
++        76:f0:cc:2b:8f:62:e0:f8:0a:12:bc:01:05:23:56:73:a1:7e:
++        82:ba:46:93:a9:6a:90:ce:15:4f:43:27:57:9e:fe:71:48:0c:
++        15:dd:29:0b:c5:1e:f1:a0:1c:92:6e:fd:47:79:4f:2f:8b:b7:
++        14:61:0f:b2:1d:bb:f3:15:58:17:7c:14:d7:12:2e:1f:c3:12:
++        11:67:48:77:27:0b:2b:a4:65:96:22:ed:ac:fb:dc:db:4b:8c:
++        f7:3b:ea:79:84:82:e8:0a:9e:28:a5:14:3c:37:12:e1:22:31:
++        41:f2:68:f4:e7:53:11:43:92:39:6d:9a:c1:be:30:e0:8f:16:
++        78:20:44:be:55:65:21:c3:31:1e:96:0d:5e:2c:e0:5d:31:a2:
++        6c:fc:46:70:76:b1:99:5a:8c:a1:a4:10:ec:08:3e:60:64:15:
++        4a:79:a3:8d:27:55:e4:51:4b:92:19:94:7e:18:95:e5:c8:68:
++        bb:89:b4:d0:65:12
+ -----BEGIN CERTIFICATE-----
+-MIIDCzCCAfMCFD26HC4GWR24ffBnzeJoPeRwrIGGMA0GCSqGSIb3DQEBCwUAMDcx
+-CzAJBgNVBAYTAlhZMRAwDgYDVQQKDAdEYXNrIENBMRYwFAYDVQQDDA1vdXItY2Et
+-c2VydmVyMCAXDTIxMDEwNjA3NDYwOFoYDzMwMDYwODMxMDc0NjA4WjBLMQswCQYD
+-VQQGEwJYWTEZMBcGA1UEBwwQRGFzay1kaXN0cmlidXRlZDENMAsGA1UECgwERGFz
+-azESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
+-CgKCAQEAqyuQ6VkigMR4WMX8J91aH46v2/S25gcfU5BKyNZpQ6VTDhh+iyN4zp9j
+-1ss7bYrwWCxGtAJ4STegqx2nFX7oBvrh3gfZfIa1zzahIuKNaseFS8yp66Dpw9fO
+-RbzGgEad0H32vZTsCdauXpTSKD4LWpkOECSO6/1QRh+PuiuuZktX1iCaMpiPSrK7
+-xFqGsv1G9USMIvlp0Z2WBkfnyWvw31kq8HK6MZr9gdiFJwH9XNQQoV+SlexFkiPX
+-tniJmfm2FUqBU9Kyf3PYCZ8s+TRiMuYkPhk/vcl7B0CCfbAmwRQtMVJMdM1Z2/qm
+-62VceZthynYscq/Huq0+j4Y42ApFxQIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBZ
+-hgzLCi/sWJFVG+6BFcOg10x0sz9OFAYWLL83PeoSksKAHa9lzgCw/rTXg8vv19p4
+-W9uIb6sC3sH+PdexL8edD0UIGB7oEoN45z9n3on+cJCB+mZkM8nnQd5EmqrP/MhJ
+-k330qZAfWe/Ockg50VRG6/5bBmfZRP2iCjp/a6mrax/ubuwazGOW2ejSEddaaNZC
+-adbLydkKNYEWNHB2oWmKiGxXx3D1Ixw/axIE/0RepfWU+On0IN7YMjMv47RpOVzp
+-ml5Efa6UANjCiBWk7T9c1k+8GaBUq5cVlAGTnvil3AZNAnX0OuuTFiQDoRKF4pY7
+-tte4C5kA+fD1vHygWQ8G
++MIIFsTCCBBmgAwIBAgIJAMstgJlaaVJcMA0GCSqGSIb3DQEBCwUAMDcxCzAJBgNV
++BAYTAlhZMRAwDgYDVQQKDAdEYXNrIENBMRYwFAYDVQQDDA1vdXItY2Etc2VydmVy
++MB4XDTE4MDgyOTE0MjMxNloXDTM3MTAyODE0MjMxNlowSzELMAkGA1UEBhMCWFkx
++GTAXBgNVBAcMEERhc2stZGlzdHJpYnV0ZWQxDTALBgNVBAoMBERhc2sxEjAQBgNV
++BAMMCWxvY2FsaG9zdDCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAK/c
++K0/SMA7rmflX+ua0Q87IWDvNCg5/cfW5xLkxQ0qoHMpN4WPx8aiAizqc0hGk57kp
++dYKsQ1RquZUXIHfcU1IEQJ+DLarkze+I8Qt1e/0EnJjcYuOgFcIpER3ij3HLWK2V
++YkuUdK7t5XRg8SVj4w/ZjtsAiXG0ftmagKhodwqFPJ323t/YM0VsKsU/yuCf3hxx
++9SymnCv2wVkAoelKCfVpBvIOaPFb32duFemMu++ezeIc2U0N+A974+AXdMoaz1CL
++1y6dPTH9Noos8hv/01FkZAGv75iE86yOBoNf/lxR16KKkO3CpTOuebEzXRAKdZ7c
++mLDD0oaqQ0SseugMRscMdmUZCN19sIdzRE5SAIVpIGGrQjs1RbP19IdxFTjcfGT/
++WPM3hdOT+E0DtZrQGn0G5QeVzQlfiUFU5YHqmmj2ewSNdaK0ZXN4XMq/MLlQMzEW
++R6O97FSbtSIgUHIvwE1bzXOlqCe8amMTdjxdsKZSH9l3M0tuHJwdc3Wp8EaFzwID
++AQABo4IBqjCCAaYwFAYDVR0RBA0wC4IJbG9jYWxob3N0MA4GA1UdDwEB/wQEAwIF
++oDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAd
++BgNVHQ4EFgQUstWZiMzlaPAggwUGRlnfL+pvhHMwZwYDVR0jBGAwXoAUCSBlK2Hw
++0PjnyQwpaiFzTNNJBvKhO6Q5MDcxCzAJBgNVBAYTAlhZMRAwDgYDVQQKDAdEYXNr
++IENBMRYwFAYDVQQDDA1vdXItY2Etc2VydmVyggkAyy2AmVppUlswgYMGCCsGAQUF
++BwEBBHcwdTA8BggrBgEFBQcwAoYwaHR0cDovL3Rlc3RjYS5weXRob250ZXN0Lm5l
++dC90ZXN0Y2EvcHljYWNlcnQuY2VyMDUGCCsGAQUFBzABhilodHRwOi8vdGVzdGNh
++LnB5dGhvbnRlc3QubmV0L3Rlc3RjYS9vY3NwLzBDBgNVHR8EPDA6MDigNqA0hjJo
++dHRwOi8vdGVzdGNhLnB5dGhvbnRlc3QubmV0L3Rlc3RjYS9yZXZvY2F0aW9uLmNy
++bDANBgkqhkiG9w0BAQsFAAOCAYEAPgzKOTVogvhSvfE01CxKWPF8Y49hblarSdYL
++8zToB/CdGt+81CG6ee8PQEA4cDoBxRznbflIDFjNeODn3rduaiiMtLJrZNLLVdIF
++xQ9PXRGdnRmoQV2QKWQl6AQc6IPgOUGsT2S/2SSZvZsjIXJvGzgBxU+IeZ4Xo7Ds
++OalNJ9m0ODh0Xygy1WZkHfNV/2//uOg5/GbgeREhd+luCpAmvO4q1YOT0MOxA0zn
++buAc48/Kx+rgam6t3KlkE0L4ZREHDCFf1KeCdvDMK49i4PgKErwBBSNWc6F+grpG
++k6lqkM4VT0MnV57+cUgMFd0pC8Ue8aAckm79R3lPL4u3FGEPsh278xVYF3wU1xIu
++H8MSEWdIdycLK6RlliLtrPvc20uM9zvqeYSC6AqeKKUUPDcS4SIxQfJo9OdTEUOS
++OW2awb4w4I8WeCBEvlVlIcMxHpYNXizgXTGibPxGcHaxmVqMoaQQ7Ag+YGQVSnmj
++jSdV5FFLkhmUfhiV5chou4m00GUS
+ -----END CERTIFICATE-----
+diff --git a/distributed/tests/tls-key.pem b/distributed/tests/tls-key.pem
+index 27083dc7..7dfdd47b 100644
+--- a/distributed/tests/tls-key.pem
++++ b/distributed/tests/tls-key.pem
+@@ -1,28 +1,40 @@
+ -----BEGIN PRIVATE KEY-----
+-MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCrK5DpWSKAxHhY
+-xfwn3Vofjq/b9LbmBx9TkErI1mlDpVMOGH6LI3jOn2PWyzttivBYLEa0AnhJN6Cr
+-HacVfugG+uHeB9l8hrXPNqEi4o1qx4VLzKnroOnD185FvMaARp3Qffa9lOwJ1q5e
+-lNIoPgtamQ4QJI7r/VBGH4+6K65mS1fWIJoymI9KsrvEWoay/Ub1RIwi+WnRnZYG
+-R+fJa/DfWSrwcroxmv2B2IUnAf1c1BChX5KV7EWSI9e2eImZ+bYVSoFT0rJ/c9gJ
+-nyz5NGIy5iQ+GT+9yXsHQIJ9sCbBFC0xUkx0zVnb+qbrZVx5m2HKdixyr8e6rT6P
+-hjjYCkXFAgMBAAECggEAEF7uUSMRRbeEuxjUcQuenv4Km8Lf60grGtbmECdRkgKx
+-2ttE3xHZcAmWhuiRGnz7V7OEX5sM3hPP7g27+TZWArTj/VRK3LoVkWfsKWX5mIjU
+-mtdMORj+wphVRh4z7fjTBynE+4TOvnIl4y3gm7CzbUrOKYUVlkR39Pz3xhp/Z5EN
+-ATFquJ4fCCtTMLiLmtwsIeLfqdzbnYy20W5ILdYmDhRG1OSaC9ioFax9VUHZ4/LB
+-CpWry0fA4J4ulk2oMKo7MNVTh+uubUT8/xyBULx/u9mj9LLPzVLi3FBDsgg4Uglt
+-K/pcAmMXUbwa4pxm5YMX2Rg+cM56/kH7EZnDjMCdgQKBgQDh4W84ClPbrVsk/+yX
+-y2HxnCjMqc3r5OtAR7cFnv5BX+4urVF4pal720QmHGLTzo9Jiib172WvXPWwNc8a
+-x7Knv3hXM1Z40J1E04VqwZx7fg/6DHRDhJ1j/sRb0VNStChKakOeVgvqJriapdUZ
+-L/sCsUEWZqr3qYYj/Lkm3xGzeQKBgQDB/o8+IgaisarFKZDhiF8XWNJ+v7lmTRI3
+-wpryVaBVopxJKVc2F61iWhllA8skvpmGqx+E7E2QeYHU+y3S3z+MASyoCKpc7pOA
+-QaN2Mxu4nzc211n6a7T8b8UtRxO0wTXC3PfPFx0uKcOTGqBf9mPehN02WeiO2jiH
+-uKs0qt+lrQKBgGSohlyN1aLelPBfD/rxCluWAGR8AyTtJZzGmJvrp1hQvJ6WY+kE
+-wgtMwgjNu4ix0w6tfwE3xrOoFGCLChjgBxBT9fe+C/nY1Uy3igvx7Z7mpY4DgMgZ
+-z92gybY1CRGg8ReAVVO4+qREzx0za0xHIm+nt96Yr/Wf2QQuegAFhijZAoGAE4WN
+-XqBH8KlWWP7k0H1LrGrIy+55Nr08vxW7R/Wr69IwTgB2AUCCtyn/8jVehPUVOAMS
+-aerpp0dC9G7OXrEOkQUxPDubAT0U5Mw2Kdfcy0hiYwdqy5N5JAoPWo4TgpYK1fAs
+-k89spU+Ymb4NM3r089iE9ko35+A33hiMSgGD/gUCgYBNgBAUPrRG+si3Hub0xtmj
+-3fbcG423kUEptjr5oouH4KGa3M0o3gY4KX9GfQ+cTd/zO7kju64lGrbQIk8V25fy
+-Dc0C6kQCxAA1cBZrHC3mo/p/bg+oDX2bvDA7SSnxI18awkPL5Rq8BRNyJHVIvE9P
+-1LrREdObq7nOuU18HkRKfA==
++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
++ZwISelsbuYuWlRl7JxBDpA==
+ -----END PRIVATE KEY-----
+diff --git a/distributed/tests/tls-self-signed-cert.pem b/distributed/tests/tls-self-signed-cert.pem
+index c77863bd..25fc99a7 100644
+--- a/distributed/tests/tls-self-signed-cert.pem
++++ b/distributed/tests/tls-self-signed-cert.pem
+@@ -1,20 +1,26 @@
+ -----BEGIN CERTIFICATE-----
+-MIIDPjCCAiagAwIBAgIUSd9/JbzkBSXo1da/uhRAok2k2EowDQYJKoZIhvcNAQEL
++MIIEWzCCAsOgAwIBAgIUGzao5ohBt+y53Hty0xyu5FgYcWgwDQYJKoZIhvcNAQEL
+ BQAwSzELMAkGA1UEBhMCWFkxGTAXBgNVBAcMEERhc2stZGlzdHJpYnV0ZWQxDTAL
+-BgNVBAoMBERhc2sxEjAQBgNVBAMMCWxvY2FsaG9zdDAgFw0yMTAxMDYwNzQ2MDha
+-GA8zMDIxMDEwNjA3NDYwOFowSzELMAkGA1UEBhMCWFkxGTAXBgNVBAcMEERhc2st
+-ZGlzdHJpYnV0ZWQxDTALBgNVBAoMBERhc2sxEjAQBgNVBAMMCWxvY2FsaG9zdDCC
+-ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANtynllQbxI0l+nkM8WGezqA
+-R0CKDBwVCaPogBfDlUi6K4DVh1GRFfO93N2I+lsTvPLg8m0JRt3Kt8ERVM66tqyC
+-kL9YsBvlhlA+CzL54ae7hGtvyPlge9nQSRRVDDcn4J998uqh9hBbe9JdtwRrRZ5q
+-/ElKNxNA8d12HPuNF6gOdKd3KenWV2NghyBi55LqlwiubSwPrhoAFmFzSeUohlr1
+-o+kKSlm+RSQhqm8UMV8YFqGRqMrkLcY9y5GOpVKXoNorvwnVfwbKc31yGGGyRvAd
+-+OZ9d0250wt0aZrWV7Xkp7aiwvW1q0Y/D+iljXzmn/TAL6pH9SsY3kSWDwj4VzUC
+-AwEAAaMYMBYwFAYDVR0RBA0wC4IJbG9jYWxob3N0MA0GCSqGSIb3DQEBCwUAA4IB
+-AQCQ7tREbMu6WbBD0QspBNjU6zB5owFrNoAuXp1VAFarCHTFFayy0MFvcWbl6FAY
+-hmyshjDV7ugWKEE1KB2oHRY7OUqz2VEwvnILfeQqN5AFStWgSUgrlfwH15kTGTpg
+-ikzt1wqmYMDqoVf4RJxm9tJx7k0tQEoqXHELwMKSExEY0EXtV2HI+cUjUL86FGi+
+-SbRWGVc5WkNeNG4vY4PcSNnJriOzdIchZlpqTfzYwwsTz9nsOx/jUoTESP/bRsso
+-VrHXW5eZ8HaX/nIgNC8JGtwidrqdmt4PEV5PBvF9zjiYt6v44SIc2Vs5jjzHmC9k
+-p2hyqM6bfq326WpQxgtKABTu
++BgNVBAoMBERhc2sxEjAQBgNVBAMMCWxvY2FsaG9zdDAeFw0yNDA2MTkyMjA5MTRa
++Fw00MzA4MTkyMjA5MTRaMEsxCzAJBgNVBAYTAlhZMRkwFwYDVQQHDBBEYXNrLWRp
++c3RyaWJ1dGVkMQ0wCwYDVQQKDAREYXNrMRIwEAYDVQQDDAlsb2NhbGhvc3QwggGi
++MA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDOt73oN26WbRmm6MGs58CT0Gfq
++6+2ptkR2KrbXmL2gcAvzCg3n4jgtnVL/thUaBwJAX1gCHdVDNxHn3d6qDajE5iaR
++ZR53xl02Cq/qszVPmR8yMzgQXtK2Xz41Kv7K9fHo4jsENpyq941m9rUFcXQcGjl/
++Tl0/F7VXLnnNXZXXWcQjwS2E0D4d3xG5HSMm/r1enLxiiDgSOTsdXxel+cOHLpPH
++aeXd/nVo6ItJdEVaCh2B0PjSnYsx28ELiIjIsW8Nq2/XoUTaT1/bt9GGA9PkMh4l
++6zoM3mokLCpU4Lb3D4PWACjWN1wzYS1TAOeUdtujac4wS21B8so4vtPpPLqf+QQw
++upgR6RKAt68vqp5q+m+C/HHsv0ZWo9SXupk1gfNttKk230T4q9/idiYV8yDD6tmJ
++OsGv/WVeqGz6YsHovYE6NuQ1JHQYjrw/XyY5MOOI/iXIuuGpyE1FYUiLCveC7tzE
++2KIoVwLykb8LT6OCBxvJdGsOTkFM425NGDd3IuECAwEAAaM3MDUwFAYDVR0RBA0w
++C4IJbG9jYWxob3N0MB0GA1UdDgQWBBRb+G9agAH0PTne/HNp8utaBOn7FTANBgkq
++hkiG9w0BAQsFAAOCAYEAjG/r7Zj3U5eDM+UdcYsXWT9g/8D8FU6fgtP5/ud7p2gI
++9J/KQ+14v5JmnKGJb5KUW/fydPJO17x1q6PK+1OkRRebU+T55evuDs2uPJKG17l1
++ag+bcCmKPkd8YMjyfD4mCsd2W2WIOLVkEcMZMJ5dLDoVDEH8LNL98LAceET/rO5u
++qesJM4/oO+lbEvY0sGBI7JR+Ld5/fjAIOKvMpRFZAyIIZhe4mg2TFdYVQdro0wsz
++DH15GHSOGAoqDGp854UIdwqL8IBRcPPVMnKulRJijMbdMyG3RX8XmnNXRvnuXUSD
++zBDEsXFmx5eBmOEx5z4ylYq9StbFoF/6gMOxG0PlKiXPko+TpJHFD2yO2lj1M1cA
++r6GPIzMVBZm8I7wRaCW5JusnJ2GO3DOGkzqocUcu6md2ZEuLFJPRFP8kEGliw58Q
++3v/DjY7WQA0R41kAAbQ44sv7YjrZhhPzEXuB3Fs/LhuS0K/7R2Wt5HqPcoeKNWi0
+++KhakmwmIIDaUN9nNa5H
+ -----END CERTIFICATE-----
+diff --git a/distributed/tests/tls-self-signed-key.pem b/distributed/tests/tls-self-signed-key.pem
+index 8c322e6a..83585d45 100644
+--- a/distributed/tests/tls-self-signed-key.pem
++++ b/distributed/tests/tls-self-signed-key.pem
+@@ -1,28 +1,40 @@
+ -----BEGIN PRIVATE KEY-----
+-MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDbcp5ZUG8SNJfp
+-5DPFhns6gEdAigwcFQmj6IAXw5VIuiuA1YdRkRXzvdzdiPpbE7zy4PJtCUbdyrfB
+-EVTOurasgpC/WLAb5YZQPgsy+eGnu4Rrb8j5YHvZ0EkUVQw3J+CfffLqofYQW3vS
+-XbcEa0WeavxJSjcTQPHddhz7jReoDnSndynp1ldjYIcgYueS6pcIrm0sD64aABZh
+-c0nlKIZa9aPpCkpZvkUkIapvFDFfGBahkajK5C3GPcuRjqVSl6DaK78J1X8GynN9
+-chhhskbwHfjmfXdNudMLdGma1le15Ke2osL1tatGPw/opY185p/0wC+qR/UrGN5E
+-lg8I+Fc1AgMBAAECggEAWZdd1pDkB8a5DqBAErBotuWQMWUqtHxSRzywrwMGe36m
+-LB8A8+gL0kr9VOSLcYuJZI856hITgJE2m/f7a7sGwT884SHQJFN8ll3+LH2gBt6j
+-nUkx/73IUpCahVaDejEpn3PILMqarurqjmP8SC2Taq26+iD2g0HMfOGvy3M66Tzb
+-8p68Zmx+PKQUq1h0YvyxkBCnWWk+tJhcLKjr6UQ/nsgYSuRNwTstAmdlneAmTuPI
+-tsbI/T/VPqfJELgPPhPzcYmrNP4L1S8tlZ59uFSAKreqEDW6shQ/umrnKcVXucGP
+-7/qoe0v1gIlutAk1H9iGdrg3yp8x6eSf8U0geKg+gQKBgQD1s4HVvvNLG67oCGt0
+-gVHbDIMTDMmngnu/2nv7q7TmOMWx2T+m6GkHiYewIOTCoTHvNf537SRrSVUaHiRw
+-Unoj6JG5PHYLfX13MKMx5V+VbvTU15GAE2ZDzrDVvyu3Fw7JqYu/LNSiC3dez0Nx
+-2bIY+TeKXAKPU8ZSzUS+s/2SGQKBgQDkpWYgB76u9muvtYVTWMWVZlozytcc7Muh
+-h7iSmF06YM17KTLFEaUEEPjkP6nS8k+2HHjS6JxCBiRI9sqJmVMrOCA8FZ41ixvl
+-Be2ZwxD52H+grCTstHY3apahoSTkN5DY3qQx6/hV/4HaYV+SJ7l/6NTb7kHBwnCl
+-qfDj5BIpfQKBgEg12pm0RhKz7yK4nsQd4a3MLpWhs35spewLzVZ473CeDNQpMkDe
+-m0egzuUftbvR3jgcmU4rvwFdCwrjAviT9Nuq1XEoaNUVq5MlE0Ft1Tq44nHPbS7E
+-BNE25NfdGH714t23259zEIcTcaDGr169iU83p3AdfI8dIvNg6qxVf9e5AoGATHe8
+-he3RKfaj4SnWIx/HRMXsWPH3q2bOW4FmizCFzWZeklge8KWMCKYcd0mLZE9BtWgk
+-SHUe/T3MmNJgvlAW7pdgwHeCZ+nUNG4dHpWMceKkHHo2Byv7dWEia3/XNLQYr08W
+-ntOKREilhwGV0u2SLmMR/VPbjg+XWPBS7gRyxokCgYEAtLfy3zhbXlqK0d6ADwlk
+-RExdzVJkmQXr6VfKhcM1Cv+DRPCRH/1tSy45JAXL3ahW6BoTU2lV5bwEhaEmR1WC
+-4B0n+fNmtK+6iu7XOc/tSWKaR8jXf1kdx9XAE9zemREp/1e1uzA1teV2iGh2iknH
+-MUpprCMh5ulG6wymy3vfgcg=
++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
++w/xKvTtEsx2QRV0rzeWqebU=
+ -----END PRIVATE KEY-----
+-- 
+2.54.0
+

diff --git a/0006-Don-t-chain-ModuleNotFoundError-when-raising-Runtime.patch b/0006-Don-t-chain-ModuleNotFoundError-when-raising-Runtime.patch
new file mode 100644
index 0000000..95fe83f
--- /dev/null
+++ b/0006-Don-t-chain-ModuleNotFoundError-when-raising-Runtime.patch
@@ -0,0 +1,46 @@
+From 12fcf9a117c1fc89bd5dad4204bd69d1293866a3 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= <miro@hroncok.cz>
+Date: Thu, 18 Jun 2026 12:12:23 +0200
+Subject: [PATCH 6/6] Don't chain ModuleNotFoundError when raising RuntimeError
+ for missing conda
+
+When conda is not installed, the _CondaInstaller raises RuntimeError
+inside an except ModuleNotFoundError block. In Python 3.15, the new
+_find_incompatible_extension_module() in traceback.py tries to import
+the parent package when formatting ModuleNotFoundError tracebacks. If
+sys.modules contains None for the package (e.g. during mock.patch.dict
+in tests, or when the import was halted), this triggers another
+ModuleNotFoundError during traceback formatting.
+
+Use 'from None' to suppress both explicit and implicit exception
+chaining, preventing the ModuleNotFoundError from being attached
+as __cause__ or __context__.
+
+Signed-off-by: Elliott Sales de Andrade <quantum.analyst@gmail.com>
+---
+ distributed/diagnostics/plugin.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/distributed/diagnostics/plugin.py b/distributed/diagnostics/plugin.py
+index 8a93a14a..6c6dffcb 100644
+--- a/distributed/diagnostics/plugin.py
++++ b/distributed/diagnostics/plugin.py
+@@ -646,13 +646,13 @@ class _CondaInstaller:
+         )
+         try:
+             from conda.cli.python_api import Commands, run_command
+-        except ModuleNotFoundError as e:  # pragma: nocover
++        except ModuleNotFoundError:  # pragma: nocover
+             msg = (
+                 "conda install failed because conda could not be found. "
+                 "Please make sure that conda is installed."
+             )
+             logger.error(msg)
+-            raise RuntimeError(msg) from e
++            raise RuntimeError(msg) from None
+         try:
+             _, stderr, returncode = run_command(
+                 Commands.INSTALL, self.conda_options + self.packages
+-- 
+2.54.0
+

diff --git a/0006-Update-make_tls_certs.py-work-with-openssl-3-8701.patch b/0006-Update-make_tls_certs.py-work-with-openssl-3-8701.patch
deleted file mode 100644
index 313f84b..0000000
--- a/0006-Update-make_tls_certs.py-work-with-openssl-3-8701.patch
+++ /dev/null
@@ -1,1616 +0,0 @@
-From d539741a19e2eb3b3e9a7791d49286337a038a65 Mon Sep 17 00:00:00 2001
-From: Adam Williamson <awilliam@redhat.com>
-Date: Wed, 19 Jun 2024 14:20:31 -0700
-Subject: [PATCH 6/7] Update make_tls_certs.py, work with openssl 3 (#8701)
-
-make_tls_certs.py has not been updated significantly since 2018,
-and the certs it generates are not good enough for openssl 3:
-
-E           ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: Basic Constraints of CA cert not marked critical (_ssl.c:1020)
-
-This resyncs the generation script with the current version of
-cpython's make_ssl_certs.py, on which it is based. I dropped
-various superficial changes which were made (wrapping, spacing,
-quote style), because they make diffing it against the original
-to see what's *really* different unnecessarily hard.
-
-This also updates all the certificates, of course, which makes
-the tests work against openssl 3.
-
-Signed-off-by: Adam Williamson <awilliam@redhat.com>
-Signed-off-by: Elliott Sales de Andrade <quantum.analyst@gmail.com>
----
- .pre-commit-config.yaml                    |   4 +
- distributed/tests/make_tls_certs.py        | 257 ++++++++++--------
- distributed/tests/tls-ca-cert.pem          | 141 ++++++----
- distributed/tests/tls-ca-key.pem           |  64 +++--
- distributed/tests/tls-cert-chain.pem       | 302 +++++++++++++--------
- distributed/tests/tls-cert.pem             | 161 +++++++----
- distributed/tests/tls-key-cert.pem         | 225 +++++++++------
- distributed/tests/tls-key.pem              |  64 +++--
- distributed/tests/tls-self-signed-cert.pem |  40 +--
- distributed/tests/tls-self-signed-key.pem  |  64 +++--
- 10 files changed, 808 insertions(+), 514 deletions(-)
-
-diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
-index 715d80cd..74b2b098 100644
---- a/.pre-commit-config.yaml
-+++ b/.pre-commit-config.yaml
-@@ -40,6 +40,10 @@ repos:
-           - urllib3
-           - git+https://github.com/dask/dask
-           - git+https://github.com/dask/zict
-+# This script is heavily based on one from upstream cpython, applying
-+# our style to it makes it unnecessarily hard to diff it against
-+# the upstream version for future revisions
-+exclude: make_tls_certs\.py
- 
- # Increase this value to clear the cache on GitHub actions if nothing else in this file
- # has changed. See also same variable in .github/workflows/test.yaml
-diff --git a/distributed/tests/make_tls_certs.py b/distributed/tests/make_tls_certs.py
-index b963cb46..771f57bb 100644
---- a/distributed/tests/make_tls_certs.py
-+++ b/distributed/tests/make_tls_certs.py
-@@ -1,19 +1,28 @@
- """Make the custom certificate and private key files used by TLS tests.
- 
--Code heavily borrowed from Lib/tests/make_ssl_certs.py in CPython.
-+Code heavily borrowed from Lib/test/certdata/make_ssl_certs.py in CPython.
-+Changes: filenames, dropped the SAN/ECC stuff, create a smaller set of
-+certs which is all we need for our tests. Is excluded from pre-commit so
-+we can keep the diff against upstream tight for ease of updating.
- """
- 
- from __future__ import annotations
- 
- import os
-+import pprint
- import shutil
--import subprocess
- import tempfile
-+from subprocess import *
-+
-+startdate = "20180829142316Z"
-+enddate = "20371028142316Z"
- 
- req_template = """
-+    [ default ]
-+    base_url               = http://testca.pythontest.net/testca
-+
-     [req]
-     distinguished_name     = req_distinguished_name
--    x509_extensions        = req_x509_extensions
-     prompt                 = no
- 
-     [req_distinguished_name]
-@@ -22,30 +31,70 @@ req_template = """
-     O                      = Dask
-     CN                     = {hostname}
- 
--    [req_x509_extensions]
-+    [req_x509_extensions_nosan]
-+
-+    [req_x509_extensions_simple]
-     subjectAltName         = @san
- 
-+    [req_x509_extensions_full]
-+    subjectAltName         = @san
-+    keyUsage               = critical,keyEncipherment,digitalSignature
-+    extendedKeyUsage       = serverAuth,clientAuth
-+    basicConstraints       = critical,CA:false
-+    subjectKeyIdentifier   = hash
-+    authorityKeyIdentifier = keyid:always,issuer:always
-+    authorityInfoAccess    = @issuer_ocsp_info
-+    crlDistributionPoints  = @crl_info
-+
-+    [ issuer_ocsp_info ]
-+    caIssuers;URI.0        = $base_url/pycacert.cer
-+    OCSP;URI.0             = $base_url/ocsp/
-+
-+    [ crl_info ]
-+    URI.0                  = $base_url/revocation.crl
-+
-     [san]
-     DNS.1 = {hostname}
-+    {extra_san}
- 
--    [ca]
-+    [dir_sect]
-+    C                      = XY
-+    L                      = Castle Anthrax
-+    O                      = Python Software Foundation
-+    CN                     = dirname example
-+
-+    [princ_name]
-+    realm = EXP:0, GeneralString:KERBEROS.REALM
-+    principal_name = EXP:1, SEQUENCE:principal_seq
-+
-+    [principal_seq]
-+    name_type = EXP:0, INTEGER:1
-+    name_string = EXP:1, SEQUENCE:principals
-+
-+    [principals]
-+    princ1 = GeneralString:username
-+
-+    [ ca ]
-     default_ca      = CA_default
- 
--    [CA_default]
-+    [ CA_default ]
-     dir = cadir
-     database  = $dir/index.txt
-     crlnumber = $dir/crl.txt
-     default_md = sha256
--    default_days = 360000
--    default_crl_days = 360000
-+    startdate = {startdate}
-+    default_startdate = {startdate}
-+    enddate = {enddate}
-+    default_enddate = {enddate}
-+    default_days = 7000
-+    default_crl_days = 7000
-     certificate = tls-ca-cert.pem
-     private_key = tls-ca-key.pem
-     serial    = $dir/serial
-     RANDFILE  = $dir/.rand
--
-     policy          = policy_match
- 
--    [policy_match]
-+    [ policy_match ]
-     countryName             = match
-     stateOrProvinceName     = optional
-     organizationName        = match
-@@ -53,7 +102,7 @@ req_template = """
-     commonName              = supplied
-     emailAddress            = optional
- 
--    [policy_anything]
-+    [ policy_anything ]
-     countryName   = optional
-     stateOrProvinceName = optional
-     localityName    = optional
-@@ -62,162 +111,150 @@ req_template = """
-     commonName    = supplied
-     emailAddress    = optional
- 
--    [v3_ca]
-+
-+    [ v3_ca ]
-+
-     subjectKeyIdentifier=hash
-     authorityKeyIdentifier=keyid:always,issuer
--    basicConstraints = CA:true
-+    basicConstraints = critical, CA:true
-+    keyUsage = critical, digitalSignature, keyCertSign, cRLSign
-+
-     """
- 
- here = os.path.abspath(os.path.dirname(__file__))
- 
- 
--def make_cert_key(hostname, sign=False):
-+def make_cert_key(hostname, sign=False, extra_san='',
-+                  ext='req_x509_extensions_full', key='rsa:3072'):
-     print("creating cert for " + hostname)
-     tempnames = []
--    for _ in range(3):
-+    for i in range(3):
-         with tempfile.NamedTemporaryFile(delete=False) as f:
-             tempnames.append(f.name)
-     req_file, cert_file, key_file = tempnames
-+    if sign:
-+        reqext = 'req_x509_extensions_simple'
-+    else:
-+        reqext = ext
-     try:
--        req = req_template.format(hostname=hostname)
--        with open(req_file, "w") as f:
-+        req = req_template.format(
-+            hostname=hostname,
-+            extra_san=extra_san,
-+            startdate=startdate,
-+            enddate=enddate
-+        )
-+        with open(req_file, 'w') as f:
-             f.write(req)
--        args = [
--            "req",
--            "-new",
--            "-days",
--            "365242",
--            "-nodes",
--            "-newkey",
--            "rsa:2048",
--            "-keyout",
--            key_file,
--            "-config",
--            req_file,
--        ]
-+        args = ['req', '-new', '-nodes', '-days', '7000',
-+                '-newkey', key, '-keyout', key_file,
-+                '-extensions', reqext,
-+                '-config', req_file]
-         if sign:
-             with tempfile.NamedTemporaryFile(delete=False) as f:
-                 tempnames.append(f.name)
-                 reqfile = f.name
--            args += ["-out", reqfile]
-+            args += ['-out', reqfile ]
- 
-         else:
--            args += ["-x509", "-out", cert_file]
--        subprocess.check_call(["openssl"] + args)
-+            args += ['-x509', '-out', cert_file ]
-+        check_call(['openssl'] + args)
- 
-         if sign:
-             args = [
--                "ca",
--                "-config",
--                req_file,
--                "-out",
--                cert_file,
--                "-outdir",
--                "cadir",
--                "-policy",
--                "policy_anything",
--                "-batch",
--                "-infiles",
--                reqfile,
-+                'ca',
-+                '-config', req_file,
-+                '-extensions', ext,
-+                '-out', cert_file,
-+                '-outdir', 'cadir',
-+                '-policy', 'policy_anything',
-+                '-batch', '-infiles', reqfile
-             ]
--            subprocess.check_call(["openssl"] + args)
-+            check_call(['openssl'] + args)
-+
- 
--        with open(cert_file) as f:
-+        with open(cert_file, 'r') as f:
-             cert = f.read()
--        with open(key_file) as f:
-+        with open(key_file, 'r') as f:
-             key = f.read()
-         return cert, key
-     finally:
-         for name in tempnames:
-             os.remove(name)
- 
--
--TMP_CADIR = "cadir"
--
-+TMP_CADIR = 'cadir'
- 
- def unmake_ca():
-     shutil.rmtree(TMP_CADIR)
- 
--
- def make_ca():
-     os.mkdir(TMP_CADIR)
--    with open(os.path.join("cadir", "index.txt"), "a+") as f:
--        pass  # empty file
--    # with open(os.path.join('cadir','crl.txt'),'a+') as f:
--    # f.write("00")
--    with open(os.path.join("cadir", "index.txt.attr"), "w+") as f:
--        f.write("unique_subject = no")
-+    with open(os.path.join('cadir','index.txt'),'a+') as f:
-+        pass # empty file
-+    with open(os.path.join('cadir','crl.txt'),'a+') as f:
-+        f.write("00")
-+    with open(os.path.join('cadir','index.txt.attr'),'w+') as f:
-+        f.write('unique_subject = no')
-+    # random start value for serial numbers
-+    with open(os.path.join('cadir','serial'), 'w') as f:
-+        f.write('CB2D80995A69525B\n')
- 
-     with tempfile.NamedTemporaryFile("w") as t:
--        t.write(req_template.format(hostname="our-ca-server"))
-+        req = req_template.format(
-+            hostname='our-ca-server',
-+            extra_san='',
-+            startdate=startdate,
-+            enddate=enddate
-+        )
-+        t.write(req)
-         t.flush()
-         with tempfile.NamedTemporaryFile() as f:
--            args = [
--                "req",
--                "-new",
--                "-days",
--                "365242",
--                "-extensions",
--                "v3_ca",
--                "-nodes",
--                "-newkey",
--                "rsa:2048",
--                "-keyout",
--                "tls-ca-key.pem",
--                "-out",
--                f.name,
--                "-subj",
--                "/C=XY/L=Dask-distributed/O=Dask CA/CN=our-ca-server",
--            ]
--            subprocess.check_call(["openssl"] + args)
--            args = [
--                "ca",
--                "-config",
--                t.name,
--                "-create_serial",
--                "-out",
--                "tls-ca-cert.pem",
--                "-batch",
--                "-outdir",
--                TMP_CADIR,
--                "-keyfile",
--                "tls-ca-key.pem",
--                "-days",
--                "365242",
--                "-selfsign",
--                "-extensions",
--                "v3_ca",
--                "-infiles",
--                f.name,
--            ]
--            subprocess.check_call(["openssl"] + args)
--            # args = ['ca', '-config', t.name, '-gencrl', '-out', 'revocation.crl']
--            # subprocess.check_call(['openssl'] + args)
-+            args = ['req', '-config', t.name, '-new',
-+                    '-nodes',
-+                    '-newkey', 'rsa:3072',
-+                    '-keyout', 'tls-ca-key.pem',
-+                    '-out', f.name,
-+                    '-subj', '/C=XY/L=Dask-distributed/O=Dask CA/CN=our-ca-server']
-+            check_call(['openssl'] + args)
-+            args = ['ca', '-config', t.name,
-+                    '-out', 'tls-ca-cert.pem', '-batch', '-outdir', TMP_CADIR,
-+                    '-keyfile', 'tls-ca-key.pem',
-+                    '-selfsign', '-extensions', 'v3_ca', '-infiles', f.name ]
-+            check_call(['openssl'] + args)
-+            args = ['ca', '-config', t.name, '-gencrl', '-out', 'revocation.crl']
-+            check_call(['openssl'] + args)
-+
-+def print_cert(path):
-+    import _ssl
-+    pprint.pprint(_ssl._test_decode_cert(path))
- 
- 
--if __name__ == "__main__":
-+if __name__ == '__main__':
-     os.chdir(here)
--    cert, key = make_cert_key("localhost")
--    with open("tls-self-signed-cert.pem", "w") as f:
-+    cert, key = make_cert_key('localhost', ext='req_x509_extensions_simple')
-+    with open('tls-self-signed-cert.pem', 'w') as f:
-         f.write(cert)
--    with open("tls-self-signed-key.pem", "w") as f:
-+    with open('tls-self-signed-key.pem', 'w') as f:
-         f.write(key)
- 
-     # For certificate matching tests
-     make_ca()
--    with open("tls-ca-cert.pem") as f:
-+    with open('tls-ca-cert.pem') as f:
-         ca_cert = f.read()
- 
--    cert, key = make_cert_key("localhost", sign=True)
--    with open("tls-cert.pem", "w") as f:
-+    cert, key = make_cert_key('localhost', sign=True)
-+    with open('tls-cert.pem', 'w') as f:
-         f.write(cert)
--    with open("tls-cert-chain.pem", "w") as f:
-+    with open('tls-cert-chain.pem', 'w') as f:
-         f.write(cert)
-         f.write(ca_cert)
--    with open("tls-key.pem", "w") as f:
-+    with open('tls-key.pem', 'w') as f:
-         f.write(key)
--    with open("tls-key-cert.pem", "w") as f:
-+    with open('tls-key-cert.pem', 'w') as f:
-         f.write(key)
-         f.write(cert)
- 
-     unmake_ca()
-+
-+    print_cert('tls-self-signed-cert.pem')
-+    print_cert('tls-key-cert.pem')
-+    print_cert('tls-cert-chain.pem')
-diff --git a/distributed/tests/tls-ca-cert.pem b/distributed/tests/tls-ca-cert.pem
-index 2ba3b04d..12efd1f5 100644
---- a/distributed/tests/tls-ca-cert.pem
-+++ b/distributed/tests/tls-ca-cert.pem
-@@ -2,77 +2,100 @@ Certificate:
-     Data:
-         Version: 3 (0x2)
-         Serial Number:
--            3d:ba:1c:2e:06:59:1d:b8:7d:f0:67:cd:e2:68:3d:e4:70:ac:81:85
-+            cb:2d:80:99:5a:69:52:5b
-         Signature Algorithm: sha256WithRSAEncryption
-         Issuer: C=XY, O=Dask CA, CN=our-ca-server
-         Validity
--            Not Before: Jan  6 07:46:08 2021 GMT
--            Not After : Jan  6 07:46:08 3021 GMT
-+            Not Before: Aug 29 14:23:16 2018 GMT
-+            Not After : Oct 28 14:23:16 2037 GMT
-         Subject: C=XY, O=Dask CA, CN=our-ca-server
-         Subject Public Key Info:
-             Public Key Algorithm: rsaEncryption
--                RSA Public-Key: (2048 bit)
-+                Public-Key: (3072 bit)
-                 Modulus:
--                    00:98:f6:94:70:e6:f7:65:a9:fd:85:9c:a2:e2:ae:
--                    08:3b:c4:93:4a:62:95:c3:19:f9:65:dd:f1:df:28:
--                    ee:0b:e4:a1:a8:7d:68:97:b5:40:45:94:c7:a7:79:
--                    62:0f:dd:ff:87:ea:12:76:ee:91:f1:3f:0e:0e:4f:
--                    bd:b6:8f:26:40:63:08:fb:47:71:8a:0b:ae:71:d9:
--                    86:10:f0:fc:02:e1:37:bb:87:68:3f:cb:67:44:6e:
--                    60:04:64:38:26:40:96:dc:00:94:e0:2a:e5:8d:c8:
--                    a2:9b:d1:12:d0:fa:43:ca:29:e7:42:0c:33:3a:f9:
--                    cf:0a:01:54:3a:bf:02:b2:b4:49:46:6c:3c:d9:b5:
--                    2c:0a:5c:24:0b:5a:0f:66:6e:31:4b:f5:33:4a:67:
--                    61:e5:71:02:02:cb:16:1e:00:ad:bd:a5:8a:60:6b:
--                    ad:09:25:14:8b:d0:ab:60:eb:d5:6b:70:af:9a:b6:
--                    66:36:44:08:6a:6d:c4:92:72:ce:9b:83:a3:54:04:
--                    3e:08:13:8d:0a:0b:4e:7a:4c:da:8e:ba:a0:34:76:
--                    3b:ce:56:9c:d9:6e:19:ac:e9:3a:50:66:90:56:90:
--                    bc:ff:a9:f2:1e:ac:b2:9f:01:7c:96:50:6f:bf:84:
--                    df:22:9c:f6:b1:21:94:8a:79:3c:6c:dc:94:c2:e7:
--                    a7:f7
-+                    00:da:5c:62:f4:32:f6:29:c7:8f:24:45:71:3f:ea:
-+                    f0:db:b5:33:b4:42:18:3e:06:96:29:e6:d3:00:47:
-+                    d6:c7:e4:7d:f6:61:a4:bf:e2:48:3c:cd:24:1a:b4:
-+                    42:f2:9c:b3:08:55:53:04:2f:29:2d:48:da:8f:dc:
-+                    eb:a7:3e:1a:71:a4:d2:79:91:49:64:12:c3:79:65:
-+                    be:0a:4a:11:43:ee:51:6e:8d:dd:9f:28:e5:7d:19:
-+                    24:32:52:e0:61:78:e3:72:ef:8c:b7:de:9d:07:4c:
-+                    94:86:54:4a:7e:ed:f5:55:f3:14:d0:7a:e4:6b:ca:
-+                    de:d9:bd:88:34:fe:30:ea:e7:65:ae:29:d5:cc:1e:
-+                    bb:ff:c2:c5:1d:a5:1a:f8:49:7b:0d:b3:71:ce:c4:
-+                    9f:d5:cc:bf:e1:83:50:72:49:65:ed:0f:ff:69:e0:
-+                    89:5c:14:f1:a0:84:78:a8:ed:46:62:3a:48:08:50:
-+                    93:71:71:04:4c:8e:a0:c3:c3:9e:25:f3:19:54:cb:
-+                    56:a5:aa:92:14:72:9f:b5:c7:b5:1a:fa:8a:ae:4c:
-+                    5f:7b:35:19:71:9e:c6:a9:73:5c:97:38:4d:e6:2c:
-+                    cf:66:4e:d1:f2:83:3f:97:4d:ad:34:3f:77:f6:ed:
-+                    cd:67:5e:a5:a5:6d:2b:ee:9e:f0:2a:19:a8:3b:ec:
-+                    b3:dc:ee:72:b6:64:48:8f:a4:e8:7a:95:52:c0:f4:
-+                    f2:72:13:1c:5b:0a:fa:60:7f:18:29:84:d7:4d:34:
-+                    75:6c:3d:49:b0:74:6e:7b:18:1f:b5:bb:9d:69:f2:
-+                    1d:ff:f8:2a:c4:1e:3a:54:80:19:9b:87:fe:53:86:
-+                    de:66:92:8c:fa:72:e0:e9:53:f1:0c:69:9a:b0:98:
-+                    46:da:8a:ed:ca:fb:39:3d:37:c7:f8:3c:9b:be:29:
-+                    9a:5e:c0:40:8d:1d:0e:a8:c8:e9:f2:a0:c4:1a:66:
-+                    ae:a3:ce:ce:92:45:1a:e4:c9:e7:01:59:31:74:4b:
-+                    03:8c:a1:06:cc:12:5c:dd:cd:f7
-                 Exponent: 65537 (0x10001)
-         X509v3 extensions:
-             X509v3 Subject Key Identifier: 
--                EB:0C:96:1D:60:5D:3A:39:00:EA:D8:C3:73:B0:4E:C9:D6:B9:5D:5B
-+                09:20:65:2B:61:F0:D0:F8:E7:C9:0C:29:6A:21:73:4C:D3:49:06:F2
-             X509v3 Authority Key Identifier: 
--                keyid:EB:0C:96:1D:60:5D:3A:39:00:EA:D8:C3:73:B0:4E:C9:D6:B9:5D:5B
--
--            X509v3 Basic Constraints: 
-+                09:20:65:2B:61:F0:D0:F8:E7:C9:0C:29:6A:21:73:4C:D3:49:06:F2
-+            X509v3 Basic Constraints: critical
-                 CA:TRUE
-+            X509v3 Key Usage: critical
-+                Digital Signature, Certificate Sign, CRL Sign
-     Signature Algorithm: sha256WithRSAEncryption
--         08:9b:4d:5a:f0:f0:3d:ef:2e:d2:20:fc:9a:91:41:ba:f6:12:
--         5b:49:7e:2c:84:4d:f7:cf:2b:54:9c:d3:31:d5:54:da:b5:80:
--         0f:04:e5:ca:79:81:19:d4:89:c6:55:fa:b0:0d:9d:3a:f7:34:
--         39:00:3b:db:18:66:45:25:9a:1c:11:02:c0:e3:46:b9:72:37:
--         a8:49:dc:0a:7f:fd:1b:fb:78:6c:e3:ae:2f:ac:99:dc:bd:3e:
--         14:12:f2:c3:f9:75:97:7d:d3:74:61:2b:fa:07:78:e5:99:ed:
--         58:31:87:ee:07:d0:d1:31:b3:b6:e0:90:1b:93:ac:e2:f2:71:
--         ce:c8:81:56:be:9c:2e:22:a7:8e:6c:29:dc:e8:69:4e:26:af:
--         41:4d:57:b2:f7:62:a5:d5:33:0e:0d:3d:fb:bb:35:a9:bf:e0:
--         0a:4e:75:85:d5:39:aa:02:29:d7:a7:20:24:97:2a:48:0f:33:
--         57:24:8d:11:02:88:c7:19:bb:22:95:e7:7b:09:51:ef:79:71:
--         40:8e:36:f6:40:4a:df:3c:a4:ca:f3:ac:60:ee:a8:8f:58:38:
--         88:07:06:78:5b:6c:cd:38:e4:1f:aa:69:d4:a1:ba:dc:59:21:
--         3b:e5:5c:50:ac:0b:5c:3f:c3:c9:5a:6a:fb:c3:46:5f:97:93:
--         7f:f1:a7:0f
-+    Signature Value:
-+        09:73:2a:5b:da:89:15:a4:98:59:d7:90:3c:8b:71:c9:ed:6e:
-+        32:0a:01:9c:16:a9:6d:90:24:54:8d:58:d1:de:67:5b:d8:e1:
-+        16:a5:ef:dc:bf:66:25:73:af:b6:1d:70:fe:39:ab:05:b0:7e:
-+        4e:02:7c:04:a7:4b:17:66:1e:a7:f2:9b:22:5d:46:8e:c5:20:
-+        e7:83:4d:8e:f6:e0:17:dd:18:3e:bc:83:61:2e:4c:4a:9a:e9:
-+        85:67:5c:95:cd:e4:32:51:c0:62:ee:21:11:16:40:52:39:44:
-+        16:13:70:0d:aa:77:23:32:82:6b:18:95:51:24:7a:a1:4d:90:
-+        08:ac:17:8b:ff:34:17:c4:d5:86:bd:b3:41:d0:d9:b2:f7:67:
-+        4b:c5:73:b7:55:f2:da:b0:5c:66:7e:a2:de:29:fd:31:9f:0a:
-+        08:ca:70:2e:ab:e0:c6:a5:04:22:5a:7b:a5:0d:10:37:ef:c1:
-+        da:59:27:6e:2c:3c:fa:96:1c:97:97:e0:2d:78:ac:b0:79:fb:
-+        9c:b9:d0:af:4f:a9:be:fe:d1:f6:ce:f9:57:07:80:1e:3a:aa:
-+        c1:8b:22:30:76:f2:3f:e9:0e:77:40:33:c1:40:92:e0:4c:12:
-+        ce:15:44:15:16:a9:6d:9c:2a:3f:2c:92:7a:99:8f:a0:76:b1:
-+        6e:80:b6:7d:27:bb:75:67:eb:f6:b7:a4:06:bf:3e:ce:2d:29:
-+        1e:13:05:16:3b:93:bf:e7:42:33:a5:58:0e:5e:6a:0f:a0:d7:
-+        bc:87:8c:d2:bc:fd:96:e6:e0:3c:c5:77:cd:a9:c1:bf:79:42:
-+        4b:e5:f3:3a:57:11:ca:40:34:91:36:24:99:a2:16:a2:17:85:
-+        21:31:32:92:19:3f:6f:f4:f6:4d:28:d7:ea:af:ab:89:4f:84:
-+        7f:5b:3f:a0:12:f7:f7:69:58:93:f3:de:da:7c:cc:dd:55:fd:
-+        e1:60:b0:70:e6:a1:f9:fb:55:25:67:12:6b:d3:4b:fc:c8:c5:
-+        c5:37:fc:13:ee:32
- -----BEGIN CERTIFICATE-----
--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
-+yMXFN/wT7jI=
- -----END CERTIFICATE-----
-diff --git a/distributed/tests/tls-ca-key.pem b/distributed/tests/tls-ca-key.pem
-index d60ef29e..a0298ba0 100644
---- a/distributed/tests/tls-ca-key.pem
-+++ b/distributed/tests/tls-ca-key.pem
-@@ -1,28 +1,40 @@
- -----BEGIN PRIVATE KEY-----
--MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCY9pRw5vdlqf2F
--nKLirgg7xJNKYpXDGfll3fHfKO4L5KGofWiXtUBFlMeneWIP3f+H6hJ27pHxPw4O
--T722jyZAYwj7R3GKC65x2YYQ8PwC4Te7h2g/y2dEbmAEZDgmQJbcAJTgKuWNyKKb
--0RLQ+kPKKedCDDM6+c8KAVQ6vwKytElGbDzZtSwKXCQLWg9mbjFL9TNKZ2HlcQIC
--yxYeAK29pYpga60JJRSL0Ktg69VrcK+atmY2RAhqbcSScs6bg6NUBD4IE40KC056
--TNqOuqA0djvOVpzZbhms6TpQZpBWkLz/qfIerLKfAXyWUG+/hN8inPaxIZSKeTxs
--3JTC56f3AgMBAAECggEASZYWQ1pZmib1N9nq4nIms9oVoatbsMhGGqNzQJBINKCA
--xLXQI2umx9KTWhYi/s8lpxUMXPrYat6SvH/QHIsxM7hxEbGFBYwpF8w1muDT2+7N
--CQJTPJ11yI3w0ywDdyOLb7s347+/Pz5OO/eQvcgn5JHUFwoXez/CQmXxR3Gsspsa
--Xt2JSUt7NKyS5L+wvAJa7q02iBTKnFPoJgXHOL2FDr/FCJmQLE7oLlJjagGN6UZs
--LLikGagJw1TOLz0FbfmD/mxB4x+doC977i0eAgpvdZ/vUS3FMF85thbe6lw37hVa
--ubRoE4njGEnTgk0XWnLLQjaHWGLej2ixjs2pjeYGgQKBgQDG8yAa/h/g6lKEfCMb
--RIbN52JIIGbjXopCV8XFr5gotUhJ2zdB8Nv3cH0YciVrPkL0alJJ9Hs3BR/timJn
--u1e+vlonlZjKvheNPNMR/hEh38UIWpfFgZ5J3f/Qp3a3m5Rs7v9kev3x5tfdATtO
--8HYhZff1FIiEQCf8PTpf9enxbwKBgQDE05coXPDpr8qurxaPWjKNrBd0s9DsTA+z
--cLSHVTshvfKwopPFRidMjHZxP6wsHlU/F+19ews+Cxa+P+brsNNWyBHjZSah0bl0
--OAK/Behs/IyGQ8PbMM0RDErfzwq4fhOw7OGfkXp4/OnNu+ww7BOREeuJxdQN3kxO
--WdzcTIHd+QKBgQDBYE4DjqDDyF8eoV6qQWhaOR6BhuUa+aifpZr5dJ0MbHBwQWCr
--eocEMtWU7lZKsED6O2Hyum0NZLDM/eZ6d1FpeLI+qZzS7AQOZ2GtqmtSpqNoZE4D
--TuLhX6QoVq4A93tEiuW48Adnmn6VNX5FU1svSWLDWAr9qTJ0bbsQzQFwhwKBgCXJ
--kY2YOlBDBaB/0M74vBfi4CXxl7yl5aXHj4Ej5dRWiU9MBx6ql0Tk+qBHXyChOjCA
--wYGDq+bfbiBcWFMLgad5haWod8A9aWNclXpjAfpaiggE3ocoWVZai81oDGDbI6Cl
--+bMO1PqBY8mxuGi0ChWh4Rx0NH/tG603J2XL8mrRAoGARGkODhSZHcu+5zNomQMX
--kQK+KfwGLMQQDOOuNC99sQPsKtS3FGg3LMKMF27wN7VI2jjCehdycd9NG1JWYVlF
--e4mMnb+M/Z4i34bxAMUL2ueBFmAm5cTWr4qT/VH/z7/Va/R7H4GfE47ewQBou56p
--ezqOR6ZwulVgcYQqTJhdv5U=
-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
-+T2BEKscboSNCwH9xG2Ce9naJ
- -----END PRIVATE KEY-----
-diff --git a/distributed/tests/tls-cert-chain.pem b/distributed/tests/tls-cert-chain.pem
-index 7a1ab123..699436d5 100644
---- a/distributed/tests/tls-cert-chain.pem
-+++ b/distributed/tests/tls-cert-chain.pem
-@@ -1,147 +1,221 @@
- Certificate:
-     Data:
--        Version: 1 (0x0)
-+        Version: 3 (0x2)
-         Serial Number:
--            3d:ba:1c:2e:06:59:1d:b8:7d:f0:67:cd:e2:68:3d:e4:70:ac:81:86
-+            cb:2d:80:99:5a:69:52:5c
-         Signature Algorithm: sha256WithRSAEncryption
-         Issuer: C=XY, O=Dask CA, CN=our-ca-server
-         Validity
--            Not Before: Jan  6 07:46:08 2021 GMT
--            Not After : Aug 31 07:46:08 3006 GMT
-+            Not Before: Aug 29 14:23:16 2018 GMT
-+            Not After : Oct 28 14:23:16 2037 GMT
-         Subject: C=XY, L=Dask-distributed, O=Dask, CN=localhost
-         Subject Public Key Info:
-             Public Key Algorithm: rsaEncryption
--                RSA Public-Key: (2048 bit)
-+                Public-Key: (3072 bit)
-                 Modulus:
--                    00:ab:2b:90:e9:59:22:80:c4:78:58:c5:fc:27:dd:
--                    5a:1f:8e:af:db:f4:b6:e6:07:1f:53:90:4a:c8:d6:
--                    69:43:a5:53:0e:18:7e:8b:23:78:ce:9f:63:d6:cb:
--                    3b:6d:8a:f0:58:2c:46:b4:02:78:49:37:a0:ab:1d:
--                    a7:15:7e:e8:06:fa:e1:de:07:d9:7c:86:b5:cf:36:
--                    a1:22:e2:8d:6a:c7:85:4b:cc:a9:eb:a0:e9:c3:d7:
--                    ce:45:bc:c6:80:46:9d:d0:7d:f6:bd:94:ec:09:d6:
--                    ae:5e:94:d2:28:3e:0b:5a:99:0e:10:24:8e:eb:fd:
--                    50:46:1f:8f:ba:2b:ae:66:4b:57:d6:20:9a:32:98:
--                    8f:4a:b2:bb:c4:5a:86:b2:fd:46:f5:44:8c:22:f9:
--                    69:d1:9d:96:06:47:e7:c9:6b:f0:df:59:2a:f0:72:
--                    ba:31:9a:fd:81:d8:85:27:01:fd:5c:d4:10:a1:5f:
--                    92:95:ec:45:92:23:d7:b6:78:89:99:f9:b6:15:4a:
--                    81:53:d2:b2:7f:73:d8:09:9f:2c:f9:34:62:32:e6:
--                    24:3e:19:3f:bd:c9:7b:07:40:82:7d:b0:26:c1:14:
--                    2d:31:52:4c:74:cd:59:db:fa:a6:eb:65:5c:79:9b:
--                    61:ca:76:2c:72:af:c7:ba:ad:3e:8f:86:38:d8:0a:
--                    45:c5
-+                    00:af:dc:2b:4f:d2:30:0e:eb:99:f9:57:fa:e6:b4:
-+                    43:ce:c8:58:3b:cd:0a:0e:7f:71:f5:b9:c4:b9:31:
-+                    43:4a:a8:1c:ca:4d:e1:63:f1:f1:a8:80:8b:3a:9c:
-+                    d2:11:a4:e7:b9:29:75:82:ac:43:54:6a:b9:95:17:
-+                    20:77:dc:53:52:04:40:9f:83:2d:aa:e4:cd:ef:88:
-+                    f1:0b:75:7b:fd:04:9c:98:dc:62:e3:a0:15:c2:29:
-+                    11:1d:e2:8f:71:cb:58:ad:95:62:4b:94:74:ae:ed:
-+                    e5:74:60:f1:25:63:e3:0f:d9:8e:db:00:89:71:b4:
-+                    7e:d9:9a:80:a8:68:77:0a:85:3c:9d:f6:de:df:d8:
-+                    33:45:6c:2a:c5:3f:ca:e0:9f:de:1c:71:f5:2c:a6:
-+                    9c:2b:f6:c1:59:00:a1:e9:4a:09:f5:69:06:f2:0e:
-+                    68:f1:5b:df:67:6e:15:e9:8c:bb:ef:9e:cd:e2:1c:
-+                    d9:4d:0d:f8:0f:7b:e3:e0:17:74:ca:1a:cf:50:8b:
-+                    d7:2e:9d:3d:31:fd:36:8a:2c:f2:1b:ff:d3:51:64:
-+                    64:01:af:ef:98:84:f3:ac:8e:06:83:5f:fe:5c:51:
-+                    d7:a2:8a:90:ed:c2:a5:33:ae:79:b1:33:5d:10:0a:
-+                    75:9e:dc:98:b0:c3:d2:86:aa:43:44:ac:7a:e8:0c:
-+                    46:c7:0c:76:65:19:08:dd:7d:b0:87:73:44:4e:52:
-+                    00:85:69:20:61:ab:42:3b:35:45:b3:f5:f4:87:71:
-+                    15:38:dc:7c:64:ff:58:f3:37:85:d3:93:f8:4d:03:
-+                    b5:9a:d0:1a:7d:06:e5:07:95:cd:09:5f:89:41:54:
-+                    e5:81:ea:9a:68:f6:7b:04:8d:75:a2:b4:65:73:78:
-+                    5c:ca:bf:30:b9:50:33:31:16:47:a3:bd:ec:54:9b:
-+                    b5:22:20:50:72:2f:c0:4d:5b:cd:73:a5:a8:27:bc:
-+                    6a:63:13:76:3c:5d:b0:a6:52:1f:d9:77:33:4b:6e:
-+                    1c:9c:1d:73:75:a9:f0:46:85:cf
-                 Exponent: 65537 (0x10001)
-+        X509v3 extensions:
-+            X509v3 Subject Alternative Name: 
-+                DNS:localhost
-+            X509v3 Key Usage: critical
-+                Digital Signature, Key Encipherment
-+            X509v3 Extended Key Usage: 
-+                TLS Web Server Authentication, TLS Web Client Authentication
-+            X509v3 Basic Constraints: critical
-+                CA:FALSE
-+            X509v3 Subject Key Identifier: 
-+                B2:D5:99:88:CC:E5:68:F0:20:83:05:06:46:59:DF:2F:EA:6F:84:73
-+            X509v3 Authority Key Identifier: 
-+                keyid:09:20:65:2B:61:F0:D0:F8:E7:C9:0C:29:6A:21:73:4C:D3:49:06:F2
-+                DirName:/C=XY/O=Dask CA/CN=our-ca-server
-+                serial:CB:2D:80:99:5A:69:52:5B
-+            Authority Information Access: 
-+                CA Issuers - URI:http://testca.pythontest.net/testca/pycacert.cer
-+                OCSP - URI:http://testca.pythontest.net/testca/ocsp/
-+            X509v3 CRL Distribution Points: 
-+                Full Name:
-+                  URI:http://testca.pythontest.net/testca/revocation.crl
-     Signature Algorithm: sha256WithRSAEncryption
--         59:86:0c:cb:0a:2f:ec:58:91:55:1b:ee:81:15:c3:a0:d7:4c:
--         74:b3:3f:4e:14:06:16:2c:bf:37:3d:ea:12:92:c2:80:1d:af:
--         65:ce:00:b0:fe:b4:d7:83:cb:ef:d7:da:78:5b:db:88:6f:ab:
--         02:de:c1:fe:3d:d7:b1:2f:c7:9d:0f:45:08:18:1e:e8:12:83:
--         78:e7:3f:67:de:89:fe:70:90:81:fa:66:64:33:c9:e7:41:de:
--         44:9a:aa:cf:fc:c8:49:93:7d:f4:a9:90:1f:59:ef:ce:72:48:
--         39:d1:54:46:eb:fe:5b:06:67:d9:44:fd:a2:0a:3a:7f:6b:a9:
--         ab:6b:1f:ee:6e:ec:1a:cc:63:96:d9:e8:d2:11:d7:5a:68:d6:
--         42:69:d6:cb:c9:d9:0a:35:81:16:34:70:76:a1:69:8a:88:6c:
--         57:c7:70:f5:23:1c:3f:6b:12:04:ff:44:5e:a5:f5:94:f8:e9:
--         f4:20:de:d8:32:33:2f:e3:b4:69:39:5c:e9:9a:5e:44:7d:ae:
--         94:00:d8:c2:88:15:a4:ed:3f:5c:d6:4f:bc:19:a0:54:ab:97:
--         15:94:01:93:9e:f8:a5:dc:06:4d:02:75:f4:3a:eb:93:16:24:
--         03:a1:12:85:e2:96:3b:b6:d7:b8:0b:99:00:f9:f0:f5:bc:7c:
--         a0:59:0f:06
-+    Signature Value:
-+        3e:0c:ca:39:35:68:82:f8:52:bd:f1:34:d4:2c:4a:58:f1:7c:
-+        63:8f:61:6e:56:ab:49:d6:0b:f3:34:e8:07:f0:9d:1a:df:bc:
-+        d4:21:ba:79:ef:0f:40:40:38:70:3a:01:c5:1c:e7:6d:f9:48:
-+        0c:58:cd:78:e0:e7:de:b7:6e:6a:28:8c:b4:b2:6b:64:d2:cb:
-+        55:d2:05:c5:0f:4f:5d:11:9d:9d:19:a8:41:5d:90:29:64:25:
-+        e8:04:1c:e8:83:e0:39:41:ac:4f:64:bf:d9:24:99:bd:9b:23:
-+        21:72:6f:1b:38:01:c5:4f:88:79:9e:17:a3:b0:ec:39:a9:4d:
-+        27:d9:b4:38:38:74:5f:28:32:d5:66:64:1d:f3:55:ff:6f:ff:
-+        b8:e8:39:fc:66:e0:79:11:21:77:e9:6e:0a:90:26:bc:ee:2a:
-+        d5:83:93:d0:c3:b1:03:4c:e7:6e:e0:1c:e3:cf:ca:c7:ea:e0:
-+        6a:6e:ad:dc:a9:64:13:42:f8:65:11:07:0c:21:5f:d4:a7:82:
-+        76:f0:cc:2b:8f:62:e0:f8:0a:12:bc:01:05:23:56:73:a1:7e:
-+        82:ba:46:93:a9:6a:90:ce:15:4f:43:27:57:9e:fe:71:48:0c:
-+        15:dd:29:0b:c5:1e:f1:a0:1c:92:6e:fd:47:79:4f:2f:8b:b7:
-+        14:61:0f:b2:1d:bb:f3:15:58:17:7c:14:d7:12:2e:1f:c3:12:
-+        11:67:48:77:27:0b:2b:a4:65:96:22:ed:ac:fb:dc:db:4b:8c:
-+        f7:3b:ea:79:84:82:e8:0a:9e:28:a5:14:3c:37:12:e1:22:31:
-+        41:f2:68:f4:e7:53:11:43:92:39:6d:9a:c1:be:30:e0:8f:16:
-+        78:20:44:be:55:65:21:c3:31:1e:96:0d:5e:2c:e0:5d:31:a2:
-+        6c:fc:46:70:76:b1:99:5a:8c:a1:a4:10:ec:08:3e:60:64:15:
-+        4a:79:a3:8d:27:55:e4:51:4b:92:19:94:7e:18:95:e5:c8:68:
-+        bb:89:b4:d0:65:12
- -----BEGIN CERTIFICATE-----
--MIIDCzCCAfMCFD26HC4GWR24ffBnzeJoPeRwrIGGMA0GCSqGSIb3DQEBCwUAMDcx
--CzAJBgNVBAYTAlhZMRAwDgYDVQQKDAdEYXNrIENBMRYwFAYDVQQDDA1vdXItY2Et
--c2VydmVyMCAXDTIxMDEwNjA3NDYwOFoYDzMwMDYwODMxMDc0NjA4WjBLMQswCQYD
--VQQGEwJYWTEZMBcGA1UEBwwQRGFzay1kaXN0cmlidXRlZDENMAsGA1UECgwERGFz
--azESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
--CgKCAQEAqyuQ6VkigMR4WMX8J91aH46v2/S25gcfU5BKyNZpQ6VTDhh+iyN4zp9j
--1ss7bYrwWCxGtAJ4STegqx2nFX7oBvrh3gfZfIa1zzahIuKNaseFS8yp66Dpw9fO
--RbzGgEad0H32vZTsCdauXpTSKD4LWpkOECSO6/1QRh+PuiuuZktX1iCaMpiPSrK7
--xFqGsv1G9USMIvlp0Z2WBkfnyWvw31kq8HK6MZr9gdiFJwH9XNQQoV+SlexFkiPX
--tniJmfm2FUqBU9Kyf3PYCZ8s+TRiMuYkPhk/vcl7B0CCfbAmwRQtMVJMdM1Z2/qm
--62VceZthynYscq/Huq0+j4Y42ApFxQIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBZ
--hgzLCi/sWJFVG+6BFcOg10x0sz9OFAYWLL83PeoSksKAHa9lzgCw/rTXg8vv19p4
--W9uIb6sC3sH+PdexL8edD0UIGB7oEoN45z9n3on+cJCB+mZkM8nnQd5EmqrP/MhJ
--k330qZAfWe/Ockg50VRG6/5bBmfZRP2iCjp/a6mrax/ubuwazGOW2ejSEddaaNZC
--adbLydkKNYEWNHB2oWmKiGxXx3D1Ixw/axIE/0RepfWU+On0IN7YMjMv47RpOVzp
--ml5Efa6UANjCiBWk7T9c1k+8GaBUq5cVlAGTnvil3AZNAnX0OuuTFiQDoRKF4pY7
--tte4C5kA+fD1vHygWQ8G
-+MIIFsTCCBBmgAwIBAgIJAMstgJlaaVJcMA0GCSqGSIb3DQEBCwUAMDcxCzAJBgNV
-+BAYTAlhZMRAwDgYDVQQKDAdEYXNrIENBMRYwFAYDVQQDDA1vdXItY2Etc2VydmVy
-+MB4XDTE4MDgyOTE0MjMxNloXDTM3MTAyODE0MjMxNlowSzELMAkGA1UEBhMCWFkx
-+GTAXBgNVBAcMEERhc2stZGlzdHJpYnV0ZWQxDTALBgNVBAoMBERhc2sxEjAQBgNV
-+BAMMCWxvY2FsaG9zdDCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAK/c
-+K0/SMA7rmflX+ua0Q87IWDvNCg5/cfW5xLkxQ0qoHMpN4WPx8aiAizqc0hGk57kp
-+dYKsQ1RquZUXIHfcU1IEQJ+DLarkze+I8Qt1e/0EnJjcYuOgFcIpER3ij3HLWK2V
-+YkuUdK7t5XRg8SVj4w/ZjtsAiXG0ftmagKhodwqFPJ323t/YM0VsKsU/yuCf3hxx
-+9SymnCv2wVkAoelKCfVpBvIOaPFb32duFemMu++ezeIc2U0N+A974+AXdMoaz1CL
-+1y6dPTH9Noos8hv/01FkZAGv75iE86yOBoNf/lxR16KKkO3CpTOuebEzXRAKdZ7c
-+mLDD0oaqQ0SseugMRscMdmUZCN19sIdzRE5SAIVpIGGrQjs1RbP19IdxFTjcfGT/
-+WPM3hdOT+E0DtZrQGn0G5QeVzQlfiUFU5YHqmmj2ewSNdaK0ZXN4XMq/MLlQMzEW
-+R6O97FSbtSIgUHIvwE1bzXOlqCe8amMTdjxdsKZSH9l3M0tuHJwdc3Wp8EaFzwID
-+AQABo4IBqjCCAaYwFAYDVR0RBA0wC4IJbG9jYWxob3N0MA4GA1UdDwEB/wQEAwIF
-+oDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAd
-+BgNVHQ4EFgQUstWZiMzlaPAggwUGRlnfL+pvhHMwZwYDVR0jBGAwXoAUCSBlK2Hw
-+0PjnyQwpaiFzTNNJBvKhO6Q5MDcxCzAJBgNVBAYTAlhZMRAwDgYDVQQKDAdEYXNr
-+IENBMRYwFAYDVQQDDA1vdXItY2Etc2VydmVyggkAyy2AmVppUlswgYMGCCsGAQUF
-+BwEBBHcwdTA8BggrBgEFBQcwAoYwaHR0cDovL3Rlc3RjYS5weXRob250ZXN0Lm5l
-+dC90ZXN0Y2EvcHljYWNlcnQuY2VyMDUGCCsGAQUFBzABhilodHRwOi8vdGVzdGNh
-+LnB5dGhvbnRlc3QubmV0L3Rlc3RjYS9vY3NwLzBDBgNVHR8EPDA6MDigNqA0hjJo
-+dHRwOi8vdGVzdGNhLnB5dGhvbnRlc3QubmV0L3Rlc3RjYS9yZXZvY2F0aW9uLmNy
-+bDANBgkqhkiG9w0BAQsFAAOCAYEAPgzKOTVogvhSvfE01CxKWPF8Y49hblarSdYL
-+8zToB/CdGt+81CG6ee8PQEA4cDoBxRznbflIDFjNeODn3rduaiiMtLJrZNLLVdIF
-+xQ9PXRGdnRmoQV2QKWQl6AQc6IPgOUGsT2S/2SSZvZsjIXJvGzgBxU+IeZ4Xo7Ds
-+OalNJ9m0ODh0Xygy1WZkHfNV/2//uOg5/GbgeREhd+luCpAmvO4q1YOT0MOxA0zn
-+buAc48/Kx+rgam6t3KlkE0L4ZREHDCFf1KeCdvDMK49i4PgKErwBBSNWc6F+grpG
-+k6lqkM4VT0MnV57+cUgMFd0pC8Ue8aAckm79R3lPL4u3FGEPsh278xVYF3wU1xIu
-+H8MSEWdIdycLK6RlliLtrPvc20uM9zvqeYSC6AqeKKUUPDcS4SIxQfJo9OdTEUOS
-+OW2awb4w4I8WeCBEvlVlIcMxHpYNXizgXTGibPxGcHaxmVqMoaQQ7Ag+YGQVSnmj
-+jSdV5FFLkhmUfhiV5chou4m00GUS
- -----END CERTIFICATE-----
- Certificate:
-     Data:
-         Version: 3 (0x2)
-         Serial Number:
--            3d:ba:1c:2e:06:59:1d:b8:7d:f0:67:cd:e2:68:3d:e4:70:ac:81:85
-+            cb:2d:80:99:5a:69:52:5b
-         Signature Algorithm: sha256WithRSAEncryption
-         Issuer: C=XY, O=Dask CA, CN=our-ca-server
-         Validity
--            Not Before: Jan  6 07:46:08 2021 GMT
--            Not After : Jan  6 07:46:08 3021 GMT
-+            Not Before: Aug 29 14:23:16 2018 GMT
-+            Not After : Oct 28 14:23:16 2037 GMT
-         Subject: C=XY, O=Dask CA, CN=our-ca-server
-         Subject Public Key Info:
-             Public Key Algorithm: rsaEncryption
--                RSA Public-Key: (2048 bit)
-+                Public-Key: (3072 bit)
-                 Modulus:
--                    00:98:f6:94:70:e6:f7:65:a9:fd:85:9c:a2:e2:ae:
--                    08:3b:c4:93:4a:62:95:c3:19:f9:65:dd:f1:df:28:
--                    ee:0b:e4:a1:a8:7d:68:97:b5:40:45:94:c7:a7:79:
--                    62:0f:dd:ff:87:ea:12:76:ee:91:f1:3f:0e:0e:4f:
--                    bd:b6:8f:26:40:63:08:fb:47:71:8a:0b:ae:71:d9:
--                    86:10:f0:fc:02:e1:37:bb:87:68:3f:cb:67:44:6e:
--                    60:04:64:38:26:40:96:dc:00:94:e0:2a:e5:8d:c8:
--                    a2:9b:d1:12:d0:fa:43:ca:29:e7:42:0c:33:3a:f9:
--                    cf:0a:01:54:3a:bf:02:b2:b4:49:46:6c:3c:d9:b5:
--                    2c:0a:5c:24:0b:5a:0f:66:6e:31:4b:f5:33:4a:67:
--                    61:e5:71:02:02:cb:16:1e:00:ad:bd:a5:8a:60:6b:
--                    ad:09:25:14:8b:d0:ab:60:eb:d5:6b:70:af:9a:b6:
--                    66:36:44:08:6a:6d:c4:92:72:ce:9b:83:a3:54:04:
--                    3e:08:13:8d:0a:0b:4e:7a:4c:da:8e:ba:a0:34:76:
--                    3b:ce:56:9c:d9:6e:19:ac:e9:3a:50:66:90:56:90:
--                    bc:ff:a9:f2:1e:ac:b2:9f:01:7c:96:50:6f:bf:84:
--                    df:22:9c:f6:b1:21:94:8a:79:3c:6c:dc:94:c2:e7:
--                    a7:f7
-+                    00:da:5c:62:f4:32:f6:29:c7:8f:24:45:71:3f:ea:
-+                    f0:db:b5:33:b4:42:18:3e:06:96:29:e6:d3:00:47:
-+                    d6:c7:e4:7d:f6:61:a4:bf:e2:48:3c:cd:24:1a:b4:
-+                    42:f2:9c:b3:08:55:53:04:2f:29:2d:48:da:8f:dc:
-+                    eb:a7:3e:1a:71:a4:d2:79:91:49:64:12:c3:79:65:
-+                    be:0a:4a:11:43:ee:51:6e:8d:dd:9f:28:e5:7d:19:
-+                    24:32:52:e0:61:78:e3:72:ef:8c:b7:de:9d:07:4c:
-+                    94:86:54:4a:7e:ed:f5:55:f3:14:d0:7a:e4:6b:ca:
-+                    de:d9:bd:88:34:fe:30:ea:e7:65:ae:29:d5:cc:1e:
-+                    bb:ff:c2:c5:1d:a5:1a:f8:49:7b:0d:b3:71:ce:c4:
-+                    9f:d5:cc:bf:e1:83:50:72:49:65:ed:0f:ff:69:e0:
-+                    89:5c:14:f1:a0:84:78:a8:ed:46:62:3a:48:08:50:
-+                    93:71:71:04:4c:8e:a0:c3:c3:9e:25:f3:19:54:cb:
-+                    56:a5:aa:92:14:72:9f:b5:c7:b5:1a:fa:8a:ae:4c:
-+                    5f:7b:35:19:71:9e:c6:a9:73:5c:97:38:4d:e6:2c:
-+                    cf:66:4e:d1:f2:83:3f:97:4d:ad:34:3f:77:f6:ed:
-+                    cd:67:5e:a5:a5:6d:2b:ee:9e:f0:2a:19:a8:3b:ec:
-+                    b3:dc:ee:72:b6:64:48:8f:a4:e8:7a:95:52:c0:f4:
-+                    f2:72:13:1c:5b:0a:fa:60:7f:18:29:84:d7:4d:34:
-+                    75:6c:3d:49:b0:74:6e:7b:18:1f:b5:bb:9d:69:f2:
-+                    1d:ff:f8:2a:c4:1e:3a:54:80:19:9b:87:fe:53:86:
-+                    de:66:92:8c:fa:72:e0:e9:53:f1:0c:69:9a:b0:98:
-+                    46:da:8a:ed:ca:fb:39:3d:37:c7:f8:3c:9b:be:29:
-+                    9a:5e:c0:40:8d:1d:0e:a8:c8:e9:f2:a0:c4:1a:66:
-+                    ae:a3:ce:ce:92:45:1a:e4:c9:e7:01:59:31:74:4b:
-+                    03:8c:a1:06:cc:12:5c:dd:cd:f7
-                 Exponent: 65537 (0x10001)
-         X509v3 extensions:
-             X509v3 Subject Key Identifier: 
--                EB:0C:96:1D:60:5D:3A:39:00:EA:D8:C3:73:B0:4E:C9:D6:B9:5D:5B
-+                09:20:65:2B:61:F0:D0:F8:E7:C9:0C:29:6A:21:73:4C:D3:49:06:F2
-             X509v3 Authority Key Identifier: 
--                keyid:EB:0C:96:1D:60:5D:3A:39:00:EA:D8:C3:73:B0:4E:C9:D6:B9:5D:5B
--
--            X509v3 Basic Constraints: 
-+                09:20:65:2B:61:F0:D0:F8:E7:C9:0C:29:6A:21:73:4C:D3:49:06:F2
-+            X509v3 Basic Constraints: critical
-                 CA:TRUE
-+            X509v3 Key Usage: critical
-+                Digital Signature, Certificate Sign, CRL Sign
-     Signature Algorithm: sha256WithRSAEncryption
--         08:9b:4d:5a:f0:f0:3d:ef:2e:d2:20:fc:9a:91:41:ba:f6:12:
--         5b:49:7e:2c:84:4d:f7:cf:2b:54:9c:d3:31:d5:54:da:b5:80:
--         0f:04:e5:ca:79:81:19:d4:89:c6:55:fa:b0:0d:9d:3a:f7:34:
--         39:00:3b:db:18:66:45:25:9a:1c:11:02:c0:e3:46:b9:72:37:
--         a8:49:dc:0a:7f:fd:1b:fb:78:6c:e3:ae:2f:ac:99:dc:bd:3e:
--         14:12:f2:c3:f9:75:97:7d:d3:74:61:2b:fa:07:78:e5:99:ed:
--         58:31:87:ee:07:d0:d1:31:b3:b6:e0:90:1b:93:ac:e2:f2:71:
--         ce:c8:81:56:be:9c:2e:22:a7:8e:6c:29:dc:e8:69:4e:26:af:
--         41:4d:57:b2:f7:62:a5:d5:33:0e:0d:3d:fb:bb:35:a9:bf:e0:
--         0a:4e:75:85:d5:39:aa:02:29:d7:a7:20:24:97:2a:48:0f:33:
--         57:24:8d:11:02:88:c7:19:bb:22:95:e7:7b:09:51:ef:79:71:
--         40:8e:36:f6:40:4a:df:3c:a4:ca:f3:ac:60:ee:a8:8f:58:38:
--         88:07:06:78:5b:6c:cd:38:e4:1f:aa:69:d4:a1:ba:dc:59:21:
--         3b:e5:5c:50:ac:0b:5c:3f:c3:c9:5a:6a:fb:c3:46:5f:97:93:
--         7f:f1:a7:0f
-+    Signature Value:
-+        09:73:2a:5b:da:89:15:a4:98:59:d7:90:3c:8b:71:c9:ed:6e:
-+        32:0a:01:9c:16:a9:6d:90:24:54:8d:58:d1:de:67:5b:d8:e1:
-+        16:a5:ef:dc:bf:66:25:73:af:b6:1d:70:fe:39:ab:05:b0:7e:
-+        4e:02:7c:04:a7:4b:17:66:1e:a7:f2:9b:22:5d:46:8e:c5:20:
-+        e7:83:4d:8e:f6:e0:17:dd:18:3e:bc:83:61:2e:4c:4a:9a:e9:
-+        85:67:5c:95:cd:e4:32:51:c0:62:ee:21:11:16:40:52:39:44:
-+        16:13:70:0d:aa:77:23:32:82:6b:18:95:51:24:7a:a1:4d:90:
-+        08:ac:17:8b:ff:34:17:c4:d5:86:bd:b3:41:d0:d9:b2:f7:67:
-+        4b:c5:73:b7:55:f2:da:b0:5c:66:7e:a2:de:29:fd:31:9f:0a:
-+        08:ca:70:2e:ab:e0:c6:a5:04:22:5a:7b:a5:0d:10:37:ef:c1:
-+        da:59:27:6e:2c:3c:fa:96:1c:97:97:e0:2d:78:ac:b0:79:fb:
-+        9c:b9:d0:af:4f:a9:be:fe:d1:f6:ce:f9:57:07:80:1e:3a:aa:
-+        c1:8b:22:30:76:f2:3f:e9:0e:77:40:33:c1:40:92:e0:4c:12:
-+        ce:15:44:15:16:a9:6d:9c:2a:3f:2c:92:7a:99:8f:a0:76:b1:
-+        6e:80:b6:7d:27:bb:75:67:eb:f6:b7:a4:06:bf:3e:ce:2d:29:
-+        1e:13:05:16:3b:93:bf:e7:42:33:a5:58:0e:5e:6a:0f:a0:d7:
-+        bc:87:8c:d2:bc:fd:96:e6:e0:3c:c5:77:cd:a9:c1:bf:79:42:
-+        4b:e5:f3:3a:57:11:ca:40:34:91:36:24:99:a2:16:a2:17:85:
-+        21:31:32:92:19:3f:6f:f4:f6:4d:28:d7:ea:af:ab:89:4f:84:
-+        7f:5b:3f:a0:12:f7:f7:69:58:93:f3:de:da:7c:cc:dd:55:fd:
-+        e1:60:b0:70:e6:a1:f9:fb:55:25:67:12:6b:d3:4b:fc:c8:c5:
-+        c5:37:fc:13:ee:32
- -----BEGIN CERTIFICATE-----
--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
-+yMXFN/wT7jI=
- -----END CERTIFICATE-----
-diff --git a/distributed/tests/tls-cert.pem b/distributed/tests/tls-cert.pem
-index 8452e3f1..0ab9d18a 100644
---- a/distributed/tests/tls-cert.pem
-+++ b/distributed/tests/tls-cert.pem
-@@ -1,69 +1,120 @@
- Certificate:
-     Data:
--        Version: 1 (0x0)
-+        Version: 3 (0x2)
-         Serial Number:
--            3d:ba:1c:2e:06:59:1d:b8:7d:f0:67:cd:e2:68:3d:e4:70:ac:81:86
-+            cb:2d:80:99:5a:69:52:5c
-         Signature Algorithm: sha256WithRSAEncryption
-         Issuer: C=XY, O=Dask CA, CN=our-ca-server
-         Validity
--            Not Before: Jan  6 07:46:08 2021 GMT
--            Not After : Aug 31 07:46:08 3006 GMT
-+            Not Before: Aug 29 14:23:16 2018 GMT
-+            Not After : Oct 28 14:23:16 2037 GMT
-         Subject: C=XY, L=Dask-distributed, O=Dask, CN=localhost
-         Subject Public Key Info:
-             Public Key Algorithm: rsaEncryption
--                RSA Public-Key: (2048 bit)
-+                Public-Key: (3072 bit)
-                 Modulus:
--                    00:ab:2b:90:e9:59:22:80:c4:78:58:c5:fc:27:dd:
--                    5a:1f:8e:af:db:f4:b6:e6:07:1f:53:90:4a:c8:d6:
--                    69:43:a5:53:0e:18:7e:8b:23:78:ce:9f:63:d6:cb:
--                    3b:6d:8a:f0:58:2c:46:b4:02:78:49:37:a0:ab:1d:
--                    a7:15:7e:e8:06:fa:e1:de:07:d9:7c:86:b5:cf:36:
--                    a1:22:e2:8d:6a:c7:85:4b:cc:a9:eb:a0:e9:c3:d7:
--                    ce:45:bc:c6:80:46:9d:d0:7d:f6:bd:94:ec:09:d6:
--                    ae:5e:94:d2:28:3e:0b:5a:99:0e:10:24:8e:eb:fd:
--                    50:46:1f:8f:ba:2b:ae:66:4b:57:d6:20:9a:32:98:
--                    8f:4a:b2:bb:c4:5a:86:b2:fd:46:f5:44:8c:22:f9:
--                    69:d1:9d:96:06:47:e7:c9:6b:f0:df:59:2a:f0:72:
--                    ba:31:9a:fd:81:d8:85:27:01:fd:5c:d4:10:a1:5f:
--                    92:95:ec:45:92:23:d7:b6:78:89:99:f9:b6:15:4a:
--                    81:53:d2:b2:7f:73:d8:09:9f:2c:f9:34:62:32:e6:
--                    24:3e:19:3f:bd:c9:7b:07:40:82:7d:b0:26:c1:14:
--                    2d:31:52:4c:74:cd:59:db:fa:a6:eb:65:5c:79:9b:
--                    61:ca:76:2c:72:af:c7:ba:ad:3e:8f:86:38:d8:0a:
--                    45:c5
-+                    00:af:dc:2b:4f:d2:30:0e:eb:99:f9:57:fa:e6:b4:
-+                    43:ce:c8:58:3b:cd:0a:0e:7f:71:f5:b9:c4:b9:31:
-+                    43:4a:a8:1c:ca:4d:e1:63:f1:f1:a8:80:8b:3a:9c:
-+                    d2:11:a4:e7:b9:29:75:82:ac:43:54:6a:b9:95:17:
-+                    20:77:dc:53:52:04:40:9f:83:2d:aa:e4:cd:ef:88:
-+                    f1:0b:75:7b:fd:04:9c:98:dc:62:e3:a0:15:c2:29:
-+                    11:1d:e2:8f:71:cb:58:ad:95:62:4b:94:74:ae:ed:
-+                    e5:74:60:f1:25:63:e3:0f:d9:8e:db:00:89:71:b4:
-+                    7e:d9:9a:80:a8:68:77:0a:85:3c:9d:f6:de:df:d8:
-+                    33:45:6c:2a:c5:3f:ca:e0:9f:de:1c:71:f5:2c:a6:
-+                    9c:2b:f6:c1:59:00:a1:e9:4a:09:f5:69:06:f2:0e:
-+                    68:f1:5b:df:67:6e:15:e9:8c:bb:ef:9e:cd:e2:1c:
-+                    d9:4d:0d:f8:0f:7b:e3:e0:17:74:ca:1a:cf:50:8b:
-+                    d7:2e:9d:3d:31:fd:36:8a:2c:f2:1b:ff:d3:51:64:
-+                    64:01:af:ef:98:84:f3:ac:8e:06:83:5f:fe:5c:51:
-+                    d7:a2:8a:90:ed:c2:a5:33:ae:79:b1:33:5d:10:0a:
-+                    75:9e:dc:98:b0:c3:d2:86:aa:43:44:ac:7a:e8:0c:
-+                    46:c7:0c:76:65:19:08:dd:7d:b0:87:73:44:4e:52:
-+                    00:85:69:20:61:ab:42:3b:35:45:b3:f5:f4:87:71:
-+                    15:38:dc:7c:64:ff:58:f3:37:85:d3:93:f8:4d:03:
-+                    b5:9a:d0:1a:7d:06:e5:07:95:cd:09:5f:89:41:54:
-+                    e5:81:ea:9a:68:f6:7b:04:8d:75:a2:b4:65:73:78:
-+                    5c:ca:bf:30:b9:50:33:31:16:47:a3:bd:ec:54:9b:
-+                    b5:22:20:50:72:2f:c0:4d:5b:cd:73:a5:a8:27:bc:
-+                    6a:63:13:76:3c:5d:b0:a6:52:1f:d9:77:33:4b:6e:
-+                    1c:9c:1d:73:75:a9:f0:46:85:cf
-                 Exponent: 65537 (0x10001)
-+        X509v3 extensions:
-+            X509v3 Subject Alternative Name: 
-+                DNS:localhost
-+            X509v3 Key Usage: critical
-+                Digital Signature, Key Encipherment
-+            X509v3 Extended Key Usage: 
-+                TLS Web Server Authentication, TLS Web Client Authentication
-+            X509v3 Basic Constraints: critical
-+                CA:FALSE
-+            X509v3 Subject Key Identifier: 
-+                B2:D5:99:88:CC:E5:68:F0:20:83:05:06:46:59:DF:2F:EA:6F:84:73
-+            X509v3 Authority Key Identifier: 
-+                keyid:09:20:65:2B:61:F0:D0:F8:E7:C9:0C:29:6A:21:73:4C:D3:49:06:F2
-+                DirName:/C=XY/O=Dask CA/CN=our-ca-server
-+                serial:CB:2D:80:99:5A:69:52:5B
-+            Authority Information Access: 
-+                CA Issuers - URI:http://testca.pythontest.net/testca/pycacert.cer
-+                OCSP - URI:http://testca.pythontest.net/testca/ocsp/
-+            X509v3 CRL Distribution Points: 
-+                Full Name:
-+                  URI:http://testca.pythontest.net/testca/revocation.crl
-     Signature Algorithm: sha256WithRSAEncryption
--         59:86:0c:cb:0a:2f:ec:58:91:55:1b:ee:81:15:c3:a0:d7:4c:
--         74:b3:3f:4e:14:06:16:2c:bf:37:3d:ea:12:92:c2:80:1d:af:
--         65:ce:00:b0:fe:b4:d7:83:cb:ef:d7:da:78:5b:db:88:6f:ab:
--         02:de:c1:fe:3d:d7:b1:2f:c7:9d:0f:45:08:18:1e:e8:12:83:
--         78:e7:3f:67:de:89:fe:70:90:81:fa:66:64:33:c9:e7:41:de:
--         44:9a:aa:cf:fc:c8:49:93:7d:f4:a9:90:1f:59:ef:ce:72:48:
--         39:d1:54:46:eb:fe:5b:06:67:d9:44:fd:a2:0a:3a:7f:6b:a9:
--         ab:6b:1f:ee:6e:ec:1a:cc:63:96:d9:e8:d2:11:d7:5a:68:d6:
--         42:69:d6:cb:c9:d9:0a:35:81:16:34:70:76:a1:69:8a:88:6c:
--         57:c7:70:f5:23:1c:3f:6b:12:04:ff:44:5e:a5:f5:94:f8:e9:
--         f4:20:de:d8:32:33:2f:e3:b4:69:39:5c:e9:9a:5e:44:7d:ae:
--         94:00:d8:c2:88:15:a4:ed:3f:5c:d6:4f:bc:19:a0:54:ab:97:
--         15:94:01:93:9e:f8:a5:dc:06:4d:02:75:f4:3a:eb:93:16:24:
--         03:a1:12:85:e2:96:3b:b6:d7:b8:0b:99:00:f9:f0:f5:bc:7c:
--         a0:59:0f:06
-+    Signature Value:
-+        3e:0c:ca:39:35:68:82:f8:52:bd:f1:34:d4:2c:4a:58:f1:7c:
-+        63:8f:61:6e:56:ab:49:d6:0b:f3:34:e8:07:f0:9d:1a:df:bc:
-+        d4:21:ba:79:ef:0f:40:40:38:70:3a:01:c5:1c:e7:6d:f9:48:
-+        0c:58:cd:78:e0:e7:de:b7:6e:6a:28:8c:b4:b2:6b:64:d2:cb:
-+        55:d2:05:c5:0f:4f:5d:11:9d:9d:19:a8:41:5d:90:29:64:25:
-+        e8:04:1c:e8:83:e0:39:41:ac:4f:64:bf:d9:24:99:bd:9b:23:
-+        21:72:6f:1b:38:01:c5:4f:88:79:9e:17:a3:b0:ec:39:a9:4d:
-+        27:d9:b4:38:38:74:5f:28:32:d5:66:64:1d:f3:55:ff:6f:ff:
-+        b8:e8:39:fc:66:e0:79:11:21:77:e9:6e:0a:90:26:bc:ee:2a:
-+        d5:83:93:d0:c3:b1:03:4c:e7:6e:e0:1c:e3:cf:ca:c7:ea:e0:
-+        6a:6e:ad:dc:a9:64:13:42:f8:65:11:07:0c:21:5f:d4:a7:82:
-+        76:f0:cc:2b:8f:62:e0:f8:0a:12:bc:01:05:23:56:73:a1:7e:
-+        82:ba:46:93:a9:6a:90:ce:15:4f:43:27:57:9e:fe:71:48:0c:
-+        15:dd:29:0b:c5:1e:f1:a0:1c:92:6e:fd:47:79:4f:2f:8b:b7:
-+        14:61:0f:b2:1d:bb:f3:15:58:17:7c:14:d7:12:2e:1f:c3:12:
-+        11:67:48:77:27:0b:2b:a4:65:96:22:ed:ac:fb:dc:db:4b:8c:
-+        f7:3b:ea:79:84:82:e8:0a:9e:28:a5:14:3c:37:12:e1:22:31:
-+        41:f2:68:f4:e7:53:11:43:92:39:6d:9a:c1:be:30:e0:8f:16:
-+        78:20:44:be:55:65:21:c3:31:1e:96:0d:5e:2c:e0:5d:31:a2:
-+        6c:fc:46:70:76:b1:99:5a:8c:a1:a4:10:ec:08:3e:60:64:15:
-+        4a:79:a3:8d:27:55:e4:51:4b:92:19:94:7e:18:95:e5:c8:68:
-+        bb:89:b4:d0:65:12
- -----BEGIN CERTIFICATE-----
--MIIDCzCCAfMCFD26HC4GWR24ffBnzeJoPeRwrIGGMA0GCSqGSIb3DQEBCwUAMDcx
--CzAJBgNVBAYTAlhZMRAwDgYDVQQKDAdEYXNrIENBMRYwFAYDVQQDDA1vdXItY2Et
--c2VydmVyMCAXDTIxMDEwNjA3NDYwOFoYDzMwMDYwODMxMDc0NjA4WjBLMQswCQYD
--VQQGEwJYWTEZMBcGA1UEBwwQRGFzay1kaXN0cmlidXRlZDENMAsGA1UECgwERGFz
--azESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
--CgKCAQEAqyuQ6VkigMR4WMX8J91aH46v2/S25gcfU5BKyNZpQ6VTDhh+iyN4zp9j
--1ss7bYrwWCxGtAJ4STegqx2nFX7oBvrh3gfZfIa1zzahIuKNaseFS8yp66Dpw9fO
--RbzGgEad0H32vZTsCdauXpTSKD4LWpkOECSO6/1QRh+PuiuuZktX1iCaMpiPSrK7
--xFqGsv1G9USMIvlp0Z2WBkfnyWvw31kq8HK6MZr9gdiFJwH9XNQQoV+SlexFkiPX
--tniJmfm2FUqBU9Kyf3PYCZ8s+TRiMuYkPhk/vcl7B0CCfbAmwRQtMVJMdM1Z2/qm
--62VceZthynYscq/Huq0+j4Y42ApFxQIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBZ
--hgzLCi/sWJFVG+6BFcOg10x0sz9OFAYWLL83PeoSksKAHa9lzgCw/rTXg8vv19p4
--W9uIb6sC3sH+PdexL8edD0UIGB7oEoN45z9n3on+cJCB+mZkM8nnQd5EmqrP/MhJ
--k330qZAfWe/Ockg50VRG6/5bBmfZRP2iCjp/a6mrax/ubuwazGOW2ejSEddaaNZC
--adbLydkKNYEWNHB2oWmKiGxXx3D1Ixw/axIE/0RepfWU+On0IN7YMjMv47RpOVzp
--ml5Efa6UANjCiBWk7T9c1k+8GaBUq5cVlAGTnvil3AZNAnX0OuuTFiQDoRKF4pY7
--tte4C5kA+fD1vHygWQ8G
-+MIIFsTCCBBmgAwIBAgIJAMstgJlaaVJcMA0GCSqGSIb3DQEBCwUAMDcxCzAJBgNV
-+BAYTAlhZMRAwDgYDVQQKDAdEYXNrIENBMRYwFAYDVQQDDA1vdXItY2Etc2VydmVy
-+MB4XDTE4MDgyOTE0MjMxNloXDTM3MTAyODE0MjMxNlowSzELMAkGA1UEBhMCWFkx
-+GTAXBgNVBAcMEERhc2stZGlzdHJpYnV0ZWQxDTALBgNVBAoMBERhc2sxEjAQBgNV
-+BAMMCWxvY2FsaG9zdDCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAK/c
-+K0/SMA7rmflX+ua0Q87IWDvNCg5/cfW5xLkxQ0qoHMpN4WPx8aiAizqc0hGk57kp
-+dYKsQ1RquZUXIHfcU1IEQJ+DLarkze+I8Qt1e/0EnJjcYuOgFcIpER3ij3HLWK2V
-+YkuUdK7t5XRg8SVj4w/ZjtsAiXG0ftmagKhodwqFPJ323t/YM0VsKsU/yuCf3hxx
-+9SymnCv2wVkAoelKCfVpBvIOaPFb32duFemMu++ezeIc2U0N+A974+AXdMoaz1CL
-+1y6dPTH9Noos8hv/01FkZAGv75iE86yOBoNf/lxR16KKkO3CpTOuebEzXRAKdZ7c
-+mLDD0oaqQ0SseugMRscMdmUZCN19sIdzRE5SAIVpIGGrQjs1RbP19IdxFTjcfGT/
-+WPM3hdOT+E0DtZrQGn0G5QeVzQlfiUFU5YHqmmj2ewSNdaK0ZXN4XMq/MLlQMzEW
-+R6O97FSbtSIgUHIvwE1bzXOlqCe8amMTdjxdsKZSH9l3M0tuHJwdc3Wp8EaFzwID
-+AQABo4IBqjCCAaYwFAYDVR0RBA0wC4IJbG9jYWxob3N0MA4GA1UdDwEB/wQEAwIF
-+oDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAd
-+BgNVHQ4EFgQUstWZiMzlaPAggwUGRlnfL+pvhHMwZwYDVR0jBGAwXoAUCSBlK2Hw
-+0PjnyQwpaiFzTNNJBvKhO6Q5MDcxCzAJBgNVBAYTAlhZMRAwDgYDVQQKDAdEYXNr
-+IENBMRYwFAYDVQQDDA1vdXItY2Etc2VydmVyggkAyy2AmVppUlswgYMGCCsGAQUF
-+BwEBBHcwdTA8BggrBgEFBQcwAoYwaHR0cDovL3Rlc3RjYS5weXRob250ZXN0Lm5l
-+dC90ZXN0Y2EvcHljYWNlcnQuY2VyMDUGCCsGAQUFBzABhilodHRwOi8vdGVzdGNh
-+LnB5dGhvbnRlc3QubmV0L3Rlc3RjYS9vY3NwLzBDBgNVHR8EPDA6MDigNqA0hjJo
-+dHRwOi8vdGVzdGNhLnB5dGhvbnRlc3QubmV0L3Rlc3RjYS9yZXZvY2F0aW9uLmNy
-+bDANBgkqhkiG9w0BAQsFAAOCAYEAPgzKOTVogvhSvfE01CxKWPF8Y49hblarSdYL
-+8zToB/CdGt+81CG6ee8PQEA4cDoBxRznbflIDFjNeODn3rduaiiMtLJrZNLLVdIF
-+xQ9PXRGdnRmoQV2QKWQl6AQc6IPgOUGsT2S/2SSZvZsjIXJvGzgBxU+IeZ4Xo7Ds
-+OalNJ9m0ODh0Xygy1WZkHfNV/2//uOg5/GbgeREhd+luCpAmvO4q1YOT0MOxA0zn
-+buAc48/Kx+rgam6t3KlkE0L4ZREHDCFf1KeCdvDMK49i4PgKErwBBSNWc6F+grpG
-+k6lqkM4VT0MnV57+cUgMFd0pC8Ue8aAckm79R3lPL4u3FGEPsh278xVYF3wU1xIu
-+H8MSEWdIdycLK6RlliLtrPvc20uM9zvqeYSC6AqeKKUUPDcS4SIxQfJo9OdTEUOS
-+OW2awb4w4I8WeCBEvlVlIcMxHpYNXizgXTGibPxGcHaxmVqMoaQQ7Ag+YGQVSnmj
-+jSdV5FFLkhmUfhiV5chou4m00GUS
- -----END CERTIFICATE-----
-diff --git a/distributed/tests/tls-key-cert.pem b/distributed/tests/tls-key-cert.pem
-index 44e1287c..43edee75 100644
---- a/distributed/tests/tls-key-cert.pem
-+++ b/distributed/tests/tls-key-cert.pem
-@@ -1,97 +1,160 @@
- -----BEGIN PRIVATE KEY-----
--MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCrK5DpWSKAxHhY
--xfwn3Vofjq/b9LbmBx9TkErI1mlDpVMOGH6LI3jOn2PWyzttivBYLEa0AnhJN6Cr
--HacVfugG+uHeB9l8hrXPNqEi4o1qx4VLzKnroOnD185FvMaARp3Qffa9lOwJ1q5e
--lNIoPgtamQ4QJI7r/VBGH4+6K65mS1fWIJoymI9KsrvEWoay/Ub1RIwi+WnRnZYG
--R+fJa/DfWSrwcroxmv2B2IUnAf1c1BChX5KV7EWSI9e2eImZ+bYVSoFT0rJ/c9gJ
--nyz5NGIy5iQ+GT+9yXsHQIJ9sCbBFC0xUkx0zVnb+qbrZVx5m2HKdixyr8e6rT6P
--hjjYCkXFAgMBAAECggEAEF7uUSMRRbeEuxjUcQuenv4Km8Lf60grGtbmECdRkgKx
--2ttE3xHZcAmWhuiRGnz7V7OEX5sM3hPP7g27+TZWArTj/VRK3LoVkWfsKWX5mIjU
--mtdMORj+wphVRh4z7fjTBynE+4TOvnIl4y3gm7CzbUrOKYUVlkR39Pz3xhp/Z5EN
--ATFquJ4fCCtTMLiLmtwsIeLfqdzbnYy20W5ILdYmDhRG1OSaC9ioFax9VUHZ4/LB
--CpWry0fA4J4ulk2oMKo7MNVTh+uubUT8/xyBULx/u9mj9LLPzVLi3FBDsgg4Uglt
--K/pcAmMXUbwa4pxm5YMX2Rg+cM56/kH7EZnDjMCdgQKBgQDh4W84ClPbrVsk/+yX
--y2HxnCjMqc3r5OtAR7cFnv5BX+4urVF4pal720QmHGLTzo9Jiib172WvXPWwNc8a
--x7Knv3hXM1Z40J1E04VqwZx7fg/6DHRDhJ1j/sRb0VNStChKakOeVgvqJriapdUZ
--L/sCsUEWZqr3qYYj/Lkm3xGzeQKBgQDB/o8+IgaisarFKZDhiF8XWNJ+v7lmTRI3
--wpryVaBVopxJKVc2F61iWhllA8skvpmGqx+E7E2QeYHU+y3S3z+MASyoCKpc7pOA
--QaN2Mxu4nzc211n6a7T8b8UtRxO0wTXC3PfPFx0uKcOTGqBf9mPehN02WeiO2jiH
--uKs0qt+lrQKBgGSohlyN1aLelPBfD/rxCluWAGR8AyTtJZzGmJvrp1hQvJ6WY+kE
--wgtMwgjNu4ix0w6tfwE3xrOoFGCLChjgBxBT9fe+C/nY1Uy3igvx7Z7mpY4DgMgZ
--z92gybY1CRGg8ReAVVO4+qREzx0za0xHIm+nt96Yr/Wf2QQuegAFhijZAoGAE4WN
--XqBH8KlWWP7k0H1LrGrIy+55Nr08vxW7R/Wr69IwTgB2AUCCtyn/8jVehPUVOAMS
--aerpp0dC9G7OXrEOkQUxPDubAT0U5Mw2Kdfcy0hiYwdqy5N5JAoPWo4TgpYK1fAs
--k89spU+Ymb4NM3r089iE9ko35+A33hiMSgGD/gUCgYBNgBAUPrRG+si3Hub0xtmj
--3fbcG423kUEptjr5oouH4KGa3M0o3gY4KX9GfQ+cTd/zO7kju64lGrbQIk8V25fy
--Dc0C6kQCxAA1cBZrHC3mo/p/bg+oDX2bvDA7SSnxI18awkPL5Rq8BRNyJHVIvE9P
--1LrREdObq7nOuU18HkRKfA==
-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
-+ZwISelsbuYuWlRl7JxBDpA==
- -----END PRIVATE KEY-----
- Certificate:
-     Data:
--        Version: 1 (0x0)
-+        Version: 3 (0x2)
-         Serial Number:
--            3d:ba:1c:2e:06:59:1d:b8:7d:f0:67:cd:e2:68:3d:e4:70:ac:81:86
-+            cb:2d:80:99:5a:69:52:5c
-         Signature Algorithm: sha256WithRSAEncryption
-         Issuer: C=XY, O=Dask CA, CN=our-ca-server
-         Validity
--            Not Before: Jan  6 07:46:08 2021 GMT
--            Not After : Aug 31 07:46:08 3006 GMT
-+            Not Before: Aug 29 14:23:16 2018 GMT
-+            Not After : Oct 28 14:23:16 2037 GMT
-         Subject: C=XY, L=Dask-distributed, O=Dask, CN=localhost
-         Subject Public Key Info:
-             Public Key Algorithm: rsaEncryption
--                RSA Public-Key: (2048 bit)
-+                Public-Key: (3072 bit)
-                 Modulus:
--                    00:ab:2b:90:e9:59:22:80:c4:78:58:c5:fc:27:dd:
--                    5a:1f:8e:af:db:f4:b6:e6:07:1f:53:90:4a:c8:d6:
--                    69:43:a5:53:0e:18:7e:8b:23:78:ce:9f:63:d6:cb:
--                    3b:6d:8a:f0:58:2c:46:b4:02:78:49:37:a0:ab:1d:
--                    a7:15:7e:e8:06:fa:e1:de:07:d9:7c:86:b5:cf:36:
--                    a1:22:e2:8d:6a:c7:85:4b:cc:a9:eb:a0:e9:c3:d7:
--                    ce:45:bc:c6:80:46:9d:d0:7d:f6:bd:94:ec:09:d6:
--                    ae:5e:94:d2:28:3e:0b:5a:99:0e:10:24:8e:eb:fd:
--                    50:46:1f:8f:ba:2b:ae:66:4b:57:d6:20:9a:32:98:
--                    8f:4a:b2:bb:c4:5a:86:b2:fd:46:f5:44:8c:22:f9:
--                    69:d1:9d:96:06:47:e7:c9:6b:f0:df:59:2a:f0:72:
--                    ba:31:9a:fd:81:d8:85:27:01:fd:5c:d4:10:a1:5f:
--                    92:95:ec:45:92:23:d7:b6:78:89:99:f9:b6:15:4a:
--                    81:53:d2:b2:7f:73:d8:09:9f:2c:f9:34:62:32:e6:
--                    24:3e:19:3f:bd:c9:7b:07:40:82:7d:b0:26:c1:14:
--                    2d:31:52:4c:74:cd:59:db:fa:a6:eb:65:5c:79:9b:
--                    61:ca:76:2c:72:af:c7:ba:ad:3e:8f:86:38:d8:0a:
--                    45:c5
-+                    00:af:dc:2b:4f:d2:30:0e:eb:99:f9:57:fa:e6:b4:
-+                    43:ce:c8:58:3b:cd:0a:0e:7f:71:f5:b9:c4:b9:31:
-+                    43:4a:a8:1c:ca:4d:e1:63:f1:f1:a8:80:8b:3a:9c:
-+                    d2:11:a4:e7:b9:29:75:82:ac:43:54:6a:b9:95:17:
-+                    20:77:dc:53:52:04:40:9f:83:2d:aa:e4:cd:ef:88:
-+                    f1:0b:75:7b:fd:04:9c:98:dc:62:e3:a0:15:c2:29:
-+                    11:1d:e2:8f:71:cb:58:ad:95:62:4b:94:74:ae:ed:
-+                    e5:74:60:f1:25:63:e3:0f:d9:8e:db:00:89:71:b4:
-+                    7e:d9:9a:80:a8:68:77:0a:85:3c:9d:f6:de:df:d8:
-+                    33:45:6c:2a:c5:3f:ca:e0:9f:de:1c:71:f5:2c:a6:
-+                    9c:2b:f6:c1:59:00:a1:e9:4a:09:f5:69:06:f2:0e:
-+                    68:f1:5b:df:67:6e:15:e9:8c:bb:ef:9e:cd:e2:1c:
-+                    d9:4d:0d:f8:0f:7b:e3:e0:17:74:ca:1a:cf:50:8b:
-+                    d7:2e:9d:3d:31:fd:36:8a:2c:f2:1b:ff:d3:51:64:
-+                    64:01:af:ef:98:84:f3:ac:8e:06:83:5f:fe:5c:51:
-+                    d7:a2:8a:90:ed:c2:a5:33:ae:79:b1:33:5d:10:0a:
-+                    75:9e:dc:98:b0:c3:d2:86:aa:43:44:ac:7a:e8:0c:
-+                    46:c7:0c:76:65:19:08:dd:7d:b0:87:73:44:4e:52:
-+                    00:85:69:20:61:ab:42:3b:35:45:b3:f5:f4:87:71:
-+                    15:38:dc:7c:64:ff:58:f3:37:85:d3:93:f8:4d:03:
-+                    b5:9a:d0:1a:7d:06:e5:07:95:cd:09:5f:89:41:54:
-+                    e5:81:ea:9a:68:f6:7b:04:8d:75:a2:b4:65:73:78:
-+                    5c:ca:bf:30:b9:50:33:31:16:47:a3:bd:ec:54:9b:
-+                    b5:22:20:50:72:2f:c0:4d:5b:cd:73:a5:a8:27:bc:
-+                    6a:63:13:76:3c:5d:b0:a6:52:1f:d9:77:33:4b:6e:
-+                    1c:9c:1d:73:75:a9:f0:46:85:cf
-                 Exponent: 65537 (0x10001)
-+        X509v3 extensions:
-+            X509v3 Subject Alternative Name: 
-+                DNS:localhost
-+            X509v3 Key Usage: critical
-+                Digital Signature, Key Encipherment
-+            X509v3 Extended Key Usage: 
-+                TLS Web Server Authentication, TLS Web Client Authentication
-+            X509v3 Basic Constraints: critical
-+                CA:FALSE
-+            X509v3 Subject Key Identifier: 
-+                B2:D5:99:88:CC:E5:68:F0:20:83:05:06:46:59:DF:2F:EA:6F:84:73
-+            X509v3 Authority Key Identifier: 
-+                keyid:09:20:65:2B:61:F0:D0:F8:E7:C9:0C:29:6A:21:73:4C:D3:49:06:F2
-+                DirName:/C=XY/O=Dask CA/CN=our-ca-server
-+                serial:CB:2D:80:99:5A:69:52:5B
-+            Authority Information Access: 
-+                CA Issuers - URI:http://testca.pythontest.net/testca/pycacert.cer
-+                OCSP - URI:http://testca.pythontest.net/testca/ocsp/
-+            X509v3 CRL Distribution Points: 
-+                Full Name:
-+                  URI:http://testca.pythontest.net/testca/revocation.crl
-     Signature Algorithm: sha256WithRSAEncryption
--         59:86:0c:cb:0a:2f:ec:58:91:55:1b:ee:81:15:c3:a0:d7:4c:
--         74:b3:3f:4e:14:06:16:2c:bf:37:3d:ea:12:92:c2:80:1d:af:
--         65:ce:00:b0:fe:b4:d7:83:cb:ef:d7:da:78:5b:db:88:6f:ab:
--         02:de:c1:fe:3d:d7:b1:2f:c7:9d:0f:45:08:18:1e:e8:12:83:
--         78:e7:3f:67:de:89:fe:70:90:81:fa:66:64:33:c9:e7:41:de:
--         44:9a:aa:cf:fc:c8:49:93:7d:f4:a9:90:1f:59:ef:ce:72:48:
--         39:d1:54:46:eb:fe:5b:06:67:d9:44:fd:a2:0a:3a:7f:6b:a9:
--         ab:6b:1f:ee:6e:ec:1a:cc:63:96:d9:e8:d2:11:d7:5a:68:d6:
--         42:69:d6:cb:c9:d9:0a:35:81:16:34:70:76:a1:69:8a:88:6c:
--         57:c7:70:f5:23:1c:3f:6b:12:04:ff:44:5e:a5:f5:94:f8:e9:
--         f4:20:de:d8:32:33:2f:e3:b4:69:39:5c:e9:9a:5e:44:7d:ae:
--         94:00:d8:c2:88:15:a4:ed:3f:5c:d6:4f:bc:19:a0:54:ab:97:
--         15:94:01:93:9e:f8:a5:dc:06:4d:02:75:f4:3a:eb:93:16:24:
--         03:a1:12:85:e2:96:3b:b6:d7:b8:0b:99:00:f9:f0:f5:bc:7c:
--         a0:59:0f:06
-+    Signature Value:
-+        3e:0c:ca:39:35:68:82:f8:52:bd:f1:34:d4:2c:4a:58:f1:7c:
-+        63:8f:61:6e:56:ab:49:d6:0b:f3:34:e8:07:f0:9d:1a:df:bc:
-+        d4:21:ba:79:ef:0f:40:40:38:70:3a:01:c5:1c:e7:6d:f9:48:
-+        0c:58:cd:78:e0:e7:de:b7:6e:6a:28:8c:b4:b2:6b:64:d2:cb:
-+        55:d2:05:c5:0f:4f:5d:11:9d:9d:19:a8:41:5d:90:29:64:25:
-+        e8:04:1c:e8:83:e0:39:41:ac:4f:64:bf:d9:24:99:bd:9b:23:
-+        21:72:6f:1b:38:01:c5:4f:88:79:9e:17:a3:b0:ec:39:a9:4d:
-+        27:d9:b4:38:38:74:5f:28:32:d5:66:64:1d:f3:55:ff:6f:ff:
-+        b8:e8:39:fc:66:e0:79:11:21:77:e9:6e:0a:90:26:bc:ee:2a:
-+        d5:83:93:d0:c3:b1:03:4c:e7:6e:e0:1c:e3:cf:ca:c7:ea:e0:
-+        6a:6e:ad:dc:a9:64:13:42:f8:65:11:07:0c:21:5f:d4:a7:82:
-+        76:f0:cc:2b:8f:62:e0:f8:0a:12:bc:01:05:23:56:73:a1:7e:
-+        82:ba:46:93:a9:6a:90:ce:15:4f:43:27:57:9e:fe:71:48:0c:
-+        15:dd:29:0b:c5:1e:f1:a0:1c:92:6e:fd:47:79:4f:2f:8b:b7:
-+        14:61:0f:b2:1d:bb:f3:15:58:17:7c:14:d7:12:2e:1f:c3:12:
-+        11:67:48:77:27:0b:2b:a4:65:96:22:ed:ac:fb:dc:db:4b:8c:
-+        f7:3b:ea:79:84:82:e8:0a:9e:28:a5:14:3c:37:12:e1:22:31:
-+        41:f2:68:f4:e7:53:11:43:92:39:6d:9a:c1:be:30:e0:8f:16:
-+        78:20:44:be:55:65:21:c3:31:1e:96:0d:5e:2c:e0:5d:31:a2:
-+        6c:fc:46:70:76:b1:99:5a:8c:a1:a4:10:ec:08:3e:60:64:15:
-+        4a:79:a3:8d:27:55:e4:51:4b:92:19:94:7e:18:95:e5:c8:68:
-+        bb:89:b4:d0:65:12
- -----BEGIN CERTIFICATE-----
--MIIDCzCCAfMCFD26HC4GWR24ffBnzeJoPeRwrIGGMA0GCSqGSIb3DQEBCwUAMDcx
--CzAJBgNVBAYTAlhZMRAwDgYDVQQKDAdEYXNrIENBMRYwFAYDVQQDDA1vdXItY2Et
--c2VydmVyMCAXDTIxMDEwNjA3NDYwOFoYDzMwMDYwODMxMDc0NjA4WjBLMQswCQYD
--VQQGEwJYWTEZMBcGA1UEBwwQRGFzay1kaXN0cmlidXRlZDENMAsGA1UECgwERGFz
--azESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
--CgKCAQEAqyuQ6VkigMR4WMX8J91aH46v2/S25gcfU5BKyNZpQ6VTDhh+iyN4zp9j
--1ss7bYrwWCxGtAJ4STegqx2nFX7oBvrh3gfZfIa1zzahIuKNaseFS8yp66Dpw9fO
--RbzGgEad0H32vZTsCdauXpTSKD4LWpkOECSO6/1QRh+PuiuuZktX1iCaMpiPSrK7
--xFqGsv1G9USMIvlp0Z2WBkfnyWvw31kq8HK6MZr9gdiFJwH9XNQQoV+SlexFkiPX
--tniJmfm2FUqBU9Kyf3PYCZ8s+TRiMuYkPhk/vcl7B0CCfbAmwRQtMVJMdM1Z2/qm
--62VceZthynYscq/Huq0+j4Y42ApFxQIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBZ
--hgzLCi/sWJFVG+6BFcOg10x0sz9OFAYWLL83PeoSksKAHa9lzgCw/rTXg8vv19p4
--W9uIb6sC3sH+PdexL8edD0UIGB7oEoN45z9n3on+cJCB+mZkM8nnQd5EmqrP/MhJ
--k330qZAfWe/Ockg50VRG6/5bBmfZRP2iCjp/a6mrax/ubuwazGOW2ejSEddaaNZC
--adbLydkKNYEWNHB2oWmKiGxXx3D1Ixw/axIE/0RepfWU+On0IN7YMjMv47RpOVzp
--ml5Efa6UANjCiBWk7T9c1k+8GaBUq5cVlAGTnvil3AZNAnX0OuuTFiQDoRKF4pY7
--tte4C5kA+fD1vHygWQ8G
-+MIIFsTCCBBmgAwIBAgIJAMstgJlaaVJcMA0GCSqGSIb3DQEBCwUAMDcxCzAJBgNV
-+BAYTAlhZMRAwDgYDVQQKDAdEYXNrIENBMRYwFAYDVQQDDA1vdXItY2Etc2VydmVy
-+MB4XDTE4MDgyOTE0MjMxNloXDTM3MTAyODE0MjMxNlowSzELMAkGA1UEBhMCWFkx
-+GTAXBgNVBAcMEERhc2stZGlzdHJpYnV0ZWQxDTALBgNVBAoMBERhc2sxEjAQBgNV
-+BAMMCWxvY2FsaG9zdDCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAK/c
-+K0/SMA7rmflX+ua0Q87IWDvNCg5/cfW5xLkxQ0qoHMpN4WPx8aiAizqc0hGk57kp
-+dYKsQ1RquZUXIHfcU1IEQJ+DLarkze+I8Qt1e/0EnJjcYuOgFcIpER3ij3HLWK2V
-+YkuUdK7t5XRg8SVj4w/ZjtsAiXG0ftmagKhodwqFPJ323t/YM0VsKsU/yuCf3hxx
-+9SymnCv2wVkAoelKCfVpBvIOaPFb32duFemMu++ezeIc2U0N+A974+AXdMoaz1CL
-+1y6dPTH9Noos8hv/01FkZAGv75iE86yOBoNf/lxR16KKkO3CpTOuebEzXRAKdZ7c
-+mLDD0oaqQ0SseugMRscMdmUZCN19sIdzRE5SAIVpIGGrQjs1RbP19IdxFTjcfGT/
-+WPM3hdOT+E0DtZrQGn0G5QeVzQlfiUFU5YHqmmj2ewSNdaK0ZXN4XMq/MLlQMzEW
-+R6O97FSbtSIgUHIvwE1bzXOlqCe8amMTdjxdsKZSH9l3M0tuHJwdc3Wp8EaFzwID
-+AQABo4IBqjCCAaYwFAYDVR0RBA0wC4IJbG9jYWxob3N0MA4GA1UdDwEB/wQEAwIF
-+oDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAd
-+BgNVHQ4EFgQUstWZiMzlaPAggwUGRlnfL+pvhHMwZwYDVR0jBGAwXoAUCSBlK2Hw
-+0PjnyQwpaiFzTNNJBvKhO6Q5MDcxCzAJBgNVBAYTAlhZMRAwDgYDVQQKDAdEYXNr
-+IENBMRYwFAYDVQQDDA1vdXItY2Etc2VydmVyggkAyy2AmVppUlswgYMGCCsGAQUF
-+BwEBBHcwdTA8BggrBgEFBQcwAoYwaHR0cDovL3Rlc3RjYS5weXRob250ZXN0Lm5l
-+dC90ZXN0Y2EvcHljYWNlcnQuY2VyMDUGCCsGAQUFBzABhilodHRwOi8vdGVzdGNh
-+LnB5dGhvbnRlc3QubmV0L3Rlc3RjYS9vY3NwLzBDBgNVHR8EPDA6MDigNqA0hjJo
-+dHRwOi8vdGVzdGNhLnB5dGhvbnRlc3QubmV0L3Rlc3RjYS9yZXZvY2F0aW9uLmNy
-+bDANBgkqhkiG9w0BAQsFAAOCAYEAPgzKOTVogvhSvfE01CxKWPF8Y49hblarSdYL
-+8zToB/CdGt+81CG6ee8PQEA4cDoBxRznbflIDFjNeODn3rduaiiMtLJrZNLLVdIF
-+xQ9PXRGdnRmoQV2QKWQl6AQc6IPgOUGsT2S/2SSZvZsjIXJvGzgBxU+IeZ4Xo7Ds
-+OalNJ9m0ODh0Xygy1WZkHfNV/2//uOg5/GbgeREhd+luCpAmvO4q1YOT0MOxA0zn
-+buAc48/Kx+rgam6t3KlkE0L4ZREHDCFf1KeCdvDMK49i4PgKErwBBSNWc6F+grpG
-+k6lqkM4VT0MnV57+cUgMFd0pC8Ue8aAckm79R3lPL4u3FGEPsh278xVYF3wU1xIu
-+H8MSEWdIdycLK6RlliLtrPvc20uM9zvqeYSC6AqeKKUUPDcS4SIxQfJo9OdTEUOS
-+OW2awb4w4I8WeCBEvlVlIcMxHpYNXizgXTGibPxGcHaxmVqMoaQQ7Ag+YGQVSnmj
-+jSdV5FFLkhmUfhiV5chou4m00GUS
- -----END CERTIFICATE-----
-diff --git a/distributed/tests/tls-key.pem b/distributed/tests/tls-key.pem
-index 27083dc7..7dfdd47b 100644
---- a/distributed/tests/tls-key.pem
-+++ b/distributed/tests/tls-key.pem
-@@ -1,28 +1,40 @@
- -----BEGIN PRIVATE KEY-----
--MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCrK5DpWSKAxHhY
--xfwn3Vofjq/b9LbmBx9TkErI1mlDpVMOGH6LI3jOn2PWyzttivBYLEa0AnhJN6Cr
--HacVfugG+uHeB9l8hrXPNqEi4o1qx4VLzKnroOnD185FvMaARp3Qffa9lOwJ1q5e
--lNIoPgtamQ4QJI7r/VBGH4+6K65mS1fWIJoymI9KsrvEWoay/Ub1RIwi+WnRnZYG
--R+fJa/DfWSrwcroxmv2B2IUnAf1c1BChX5KV7EWSI9e2eImZ+bYVSoFT0rJ/c9gJ
--nyz5NGIy5iQ+GT+9yXsHQIJ9sCbBFC0xUkx0zVnb+qbrZVx5m2HKdixyr8e6rT6P
--hjjYCkXFAgMBAAECggEAEF7uUSMRRbeEuxjUcQuenv4Km8Lf60grGtbmECdRkgKx
--2ttE3xHZcAmWhuiRGnz7V7OEX5sM3hPP7g27+TZWArTj/VRK3LoVkWfsKWX5mIjU
--mtdMORj+wphVRh4z7fjTBynE+4TOvnIl4y3gm7CzbUrOKYUVlkR39Pz3xhp/Z5EN
--ATFquJ4fCCtTMLiLmtwsIeLfqdzbnYy20W5ILdYmDhRG1OSaC9ioFax9VUHZ4/LB
--CpWry0fA4J4ulk2oMKo7MNVTh+uubUT8/xyBULx/u9mj9LLPzVLi3FBDsgg4Uglt
--K/pcAmMXUbwa4pxm5YMX2Rg+cM56/kH7EZnDjMCdgQKBgQDh4W84ClPbrVsk/+yX
--y2HxnCjMqc3r5OtAR7cFnv5BX+4urVF4pal720QmHGLTzo9Jiib172WvXPWwNc8a
--x7Knv3hXM1Z40J1E04VqwZx7fg/6DHRDhJ1j/sRb0VNStChKakOeVgvqJriapdUZ
--L/sCsUEWZqr3qYYj/Lkm3xGzeQKBgQDB/o8+IgaisarFKZDhiF8XWNJ+v7lmTRI3
--wpryVaBVopxJKVc2F61iWhllA8skvpmGqx+E7E2QeYHU+y3S3z+MASyoCKpc7pOA
--QaN2Mxu4nzc211n6a7T8b8UtRxO0wTXC3PfPFx0uKcOTGqBf9mPehN02WeiO2jiH
--uKs0qt+lrQKBgGSohlyN1aLelPBfD/rxCluWAGR8AyTtJZzGmJvrp1hQvJ6WY+kE
--wgtMwgjNu4ix0w6tfwE3xrOoFGCLChjgBxBT9fe+C/nY1Uy3igvx7Z7mpY4DgMgZ
--z92gybY1CRGg8ReAVVO4+qREzx0za0xHIm+nt96Yr/Wf2QQuegAFhijZAoGAE4WN
--XqBH8KlWWP7k0H1LrGrIy+55Nr08vxW7R/Wr69IwTgB2AUCCtyn/8jVehPUVOAMS
--aerpp0dC9G7OXrEOkQUxPDubAT0U5Mw2Kdfcy0hiYwdqy5N5JAoPWo4TgpYK1fAs
--k89spU+Ymb4NM3r089iE9ko35+A33hiMSgGD/gUCgYBNgBAUPrRG+si3Hub0xtmj
--3fbcG423kUEptjr5oouH4KGa3M0o3gY4KX9GfQ+cTd/zO7kju64lGrbQIk8V25fy
--Dc0C6kQCxAA1cBZrHC3mo/p/bg+oDX2bvDA7SSnxI18awkPL5Rq8BRNyJHVIvE9P
--1LrREdObq7nOuU18HkRKfA==
-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
-+ZwISelsbuYuWlRl7JxBDpA==
- -----END PRIVATE KEY-----
-diff --git a/distributed/tests/tls-self-signed-cert.pem b/distributed/tests/tls-self-signed-cert.pem
-index c77863bd..25fc99a7 100644
---- a/distributed/tests/tls-self-signed-cert.pem
-+++ b/distributed/tests/tls-self-signed-cert.pem
-@@ -1,20 +1,26 @@
- -----BEGIN CERTIFICATE-----
--MIIDPjCCAiagAwIBAgIUSd9/JbzkBSXo1da/uhRAok2k2EowDQYJKoZIhvcNAQEL
-+MIIEWzCCAsOgAwIBAgIUGzao5ohBt+y53Hty0xyu5FgYcWgwDQYJKoZIhvcNAQEL
- BQAwSzELMAkGA1UEBhMCWFkxGTAXBgNVBAcMEERhc2stZGlzdHJpYnV0ZWQxDTAL
--BgNVBAoMBERhc2sxEjAQBgNVBAMMCWxvY2FsaG9zdDAgFw0yMTAxMDYwNzQ2MDha
--GA8zMDIxMDEwNjA3NDYwOFowSzELMAkGA1UEBhMCWFkxGTAXBgNVBAcMEERhc2st
--ZGlzdHJpYnV0ZWQxDTALBgNVBAoMBERhc2sxEjAQBgNVBAMMCWxvY2FsaG9zdDCC
--ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANtynllQbxI0l+nkM8WGezqA
--R0CKDBwVCaPogBfDlUi6K4DVh1GRFfO93N2I+lsTvPLg8m0JRt3Kt8ERVM66tqyC
--kL9YsBvlhlA+CzL54ae7hGtvyPlge9nQSRRVDDcn4J998uqh9hBbe9JdtwRrRZ5q
--/ElKNxNA8d12HPuNF6gOdKd3KenWV2NghyBi55LqlwiubSwPrhoAFmFzSeUohlr1
--o+kKSlm+RSQhqm8UMV8YFqGRqMrkLcY9y5GOpVKXoNorvwnVfwbKc31yGGGyRvAd
--+OZ9d0250wt0aZrWV7Xkp7aiwvW1q0Y/D+iljXzmn/TAL6pH9SsY3kSWDwj4VzUC
--AwEAAaMYMBYwFAYDVR0RBA0wC4IJbG9jYWxob3N0MA0GCSqGSIb3DQEBCwUAA4IB
--AQCQ7tREbMu6WbBD0QspBNjU6zB5owFrNoAuXp1VAFarCHTFFayy0MFvcWbl6FAY
--hmyshjDV7ugWKEE1KB2oHRY7OUqz2VEwvnILfeQqN5AFStWgSUgrlfwH15kTGTpg
--ikzt1wqmYMDqoVf4RJxm9tJx7k0tQEoqXHELwMKSExEY0EXtV2HI+cUjUL86FGi+
--SbRWGVc5WkNeNG4vY4PcSNnJriOzdIchZlpqTfzYwwsTz9nsOx/jUoTESP/bRsso
--VrHXW5eZ8HaX/nIgNC8JGtwidrqdmt4PEV5PBvF9zjiYt6v44SIc2Vs5jjzHmC9k
--p2hyqM6bfq326WpQxgtKABTu
-+BgNVBAoMBERhc2sxEjAQBgNVBAMMCWxvY2FsaG9zdDAeFw0yNDA2MTkyMjA5MTRa
-+Fw00MzA4MTkyMjA5MTRaMEsxCzAJBgNVBAYTAlhZMRkwFwYDVQQHDBBEYXNrLWRp
-+c3RyaWJ1dGVkMQ0wCwYDVQQKDAREYXNrMRIwEAYDVQQDDAlsb2NhbGhvc3QwggGi
-+MA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDOt73oN26WbRmm6MGs58CT0Gfq
-+6+2ptkR2KrbXmL2gcAvzCg3n4jgtnVL/thUaBwJAX1gCHdVDNxHn3d6qDajE5iaR
-+ZR53xl02Cq/qszVPmR8yMzgQXtK2Xz41Kv7K9fHo4jsENpyq941m9rUFcXQcGjl/
-+Tl0/F7VXLnnNXZXXWcQjwS2E0D4d3xG5HSMm/r1enLxiiDgSOTsdXxel+cOHLpPH
-+aeXd/nVo6ItJdEVaCh2B0PjSnYsx28ELiIjIsW8Nq2/XoUTaT1/bt9GGA9PkMh4l
-+6zoM3mokLCpU4Lb3D4PWACjWN1wzYS1TAOeUdtujac4wS21B8so4vtPpPLqf+QQw
-+upgR6RKAt68vqp5q+m+C/HHsv0ZWo9SXupk1gfNttKk230T4q9/idiYV8yDD6tmJ
-+OsGv/WVeqGz6YsHovYE6NuQ1JHQYjrw/XyY5MOOI/iXIuuGpyE1FYUiLCveC7tzE
-+2KIoVwLykb8LT6OCBxvJdGsOTkFM425NGDd3IuECAwEAAaM3MDUwFAYDVR0RBA0w
-+C4IJbG9jYWxob3N0MB0GA1UdDgQWBBRb+G9agAH0PTne/HNp8utaBOn7FTANBgkq
-+hkiG9w0BAQsFAAOCAYEAjG/r7Zj3U5eDM+UdcYsXWT9g/8D8FU6fgtP5/ud7p2gI
-+9J/KQ+14v5JmnKGJb5KUW/fydPJO17x1q6PK+1OkRRebU+T55evuDs2uPJKG17l1
-+ag+bcCmKPkd8YMjyfD4mCsd2W2WIOLVkEcMZMJ5dLDoVDEH8LNL98LAceET/rO5u
-+qesJM4/oO+lbEvY0sGBI7JR+Ld5/fjAIOKvMpRFZAyIIZhe4mg2TFdYVQdro0wsz
-+DH15GHSOGAoqDGp854UIdwqL8IBRcPPVMnKulRJijMbdMyG3RX8XmnNXRvnuXUSD
-+zBDEsXFmx5eBmOEx5z4ylYq9StbFoF/6gMOxG0PlKiXPko+TpJHFD2yO2lj1M1cA
-+r6GPIzMVBZm8I7wRaCW5JusnJ2GO3DOGkzqocUcu6md2ZEuLFJPRFP8kEGliw58Q
-+3v/DjY7WQA0R41kAAbQ44sv7YjrZhhPzEXuB3Fs/LhuS0K/7R2Wt5HqPcoeKNWi0
-++KhakmwmIIDaUN9nNa5H
- -----END CERTIFICATE-----
-diff --git a/distributed/tests/tls-self-signed-key.pem b/distributed/tests/tls-self-signed-key.pem
-index 8c322e6a..83585d45 100644
---- a/distributed/tests/tls-self-signed-key.pem
-+++ b/distributed/tests/tls-self-signed-key.pem
-@@ -1,28 +1,40 @@
- -----BEGIN PRIVATE KEY-----
--MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDbcp5ZUG8SNJfp
--5DPFhns6gEdAigwcFQmj6IAXw5VIuiuA1YdRkRXzvdzdiPpbE7zy4PJtCUbdyrfB
--EVTOurasgpC/WLAb5YZQPgsy+eGnu4Rrb8j5YHvZ0EkUVQw3J+CfffLqofYQW3vS
--XbcEa0WeavxJSjcTQPHddhz7jReoDnSndynp1ldjYIcgYueS6pcIrm0sD64aABZh
--c0nlKIZa9aPpCkpZvkUkIapvFDFfGBahkajK5C3GPcuRjqVSl6DaK78J1X8GynN9
--chhhskbwHfjmfXdNudMLdGma1le15Ke2osL1tatGPw/opY185p/0wC+qR/UrGN5E
--lg8I+Fc1AgMBAAECggEAWZdd1pDkB8a5DqBAErBotuWQMWUqtHxSRzywrwMGe36m
--LB8A8+gL0kr9VOSLcYuJZI856hITgJE2m/f7a7sGwT884SHQJFN8ll3+LH2gBt6j
--nUkx/73IUpCahVaDejEpn3PILMqarurqjmP8SC2Taq26+iD2g0HMfOGvy3M66Tzb
--8p68Zmx+PKQUq1h0YvyxkBCnWWk+tJhcLKjr6UQ/nsgYSuRNwTstAmdlneAmTuPI
--tsbI/T/VPqfJELgPPhPzcYmrNP4L1S8tlZ59uFSAKreqEDW6shQ/umrnKcVXucGP
--7/qoe0v1gIlutAk1H9iGdrg3yp8x6eSf8U0geKg+gQKBgQD1s4HVvvNLG67oCGt0
--gVHbDIMTDMmngnu/2nv7q7TmOMWx2T+m6GkHiYewIOTCoTHvNf537SRrSVUaHiRw
--Unoj6JG5PHYLfX13MKMx5V+VbvTU15GAE2ZDzrDVvyu3Fw7JqYu/LNSiC3dez0Nx
--2bIY+TeKXAKPU8ZSzUS+s/2SGQKBgQDkpWYgB76u9muvtYVTWMWVZlozytcc7Muh
--h7iSmF06YM17KTLFEaUEEPjkP6nS8k+2HHjS6JxCBiRI9sqJmVMrOCA8FZ41ixvl
--Be2ZwxD52H+grCTstHY3apahoSTkN5DY3qQx6/hV/4HaYV+SJ7l/6NTb7kHBwnCl
--qfDj5BIpfQKBgEg12pm0RhKz7yK4nsQd4a3MLpWhs35spewLzVZ473CeDNQpMkDe
--m0egzuUftbvR3jgcmU4rvwFdCwrjAviT9Nuq1XEoaNUVq5MlE0Ft1Tq44nHPbS7E
--BNE25NfdGH714t23259zEIcTcaDGr169iU83p3AdfI8dIvNg6qxVf9e5AoGATHe8
--he3RKfaj4SnWIx/HRMXsWPH3q2bOW4FmizCFzWZeklge8KWMCKYcd0mLZE9BtWgk
--SHUe/T3MmNJgvlAW7pdgwHeCZ+nUNG4dHpWMceKkHHo2Byv7dWEia3/XNLQYr08W
--ntOKREilhwGV0u2SLmMR/VPbjg+XWPBS7gRyxokCgYEAtLfy3zhbXlqK0d6ADwlk
--RExdzVJkmQXr6VfKhcM1Cv+DRPCRH/1tSy45JAXL3ahW6BoTU2lV5bwEhaEmR1WC
--4B0n+fNmtK+6iu7XOc/tSWKaR8jXf1kdx9XAE9zemREp/1e1uzA1teV2iGh2iknH
--MUpprCMh5ulG6wymy3vfgcg=
-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
-+w/xKvTtEsx2QRV0rzeWqebU=
- -----END PRIVATE KEY-----
--- 
-2.52.0
-

diff --git a/0007-Avoid-using-sys.prefix-in-CLI-test.patch b/0007-Avoid-using-sys.prefix-in-CLI-test.patch
deleted file mode 100644
index 706c5a6..0000000
--- a/0007-Avoid-using-sys.prefix-in-CLI-test.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 78443e53fb1f3a23951e5197df08ed42660ab6ab Mon Sep 17 00:00:00 2001
-From: Elliott Sales de Andrade <quantum.analyst@gmail.com>
-Date: Thu, 20 Jun 2024 00:29:06 -0400
-Subject: [PATCH 7/7] Avoid using sys.prefix in CLI test
-
-We haven't yet installed dask-scheduler, so the test can't assume it's
-in `{sys.prefix}/bin/`. Making the path absolute will avoid that in the
-`popen` helper.
-
-Signed-off-by: Elliott Sales de Andrade <quantum.analyst@gmail.com>
----
- distributed/cli/tests/test_dask_scheduler.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/distributed/cli/tests/test_dask_scheduler.py b/distributed/cli/tests/test_dask_scheduler.py
-index 6f35089c..50730cc0 100644
---- a/distributed/cli/tests/test_dask_scheduler.py
-+++ b/distributed/cli/tests/test_dask_scheduler.py
-@@ -693,7 +693,7 @@ def test_single_executable_deprecated(loop):
-     port = open_port()
-     with popen(
-         [
--            "dask-scheduler",
-+            shutil.which("dask-scheduler"),
-             "--no-dashboard",
-             f"--port={port}",
-         ],
--- 
-2.52.0
-

diff --git a/0008-Don-t-chain-ModuleNotFoundError-when-raising-Runtime.patch b/0008-Don-t-chain-ModuleNotFoundError-when-raising-Runtime.patch
deleted file mode 100644
index e9f0792..0000000
--- a/0008-Don-t-chain-ModuleNotFoundError-when-raising-Runtime.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From c4e4aa0f3326273c49e0b9732141e186b1e6e080 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= <miro@hroncok.cz>
-Date: Thu, 18 Jun 2026 12:12:23 +0200
-Subject: [PATCH] Don't chain ModuleNotFoundError when raising RuntimeError for
- missing conda
-
-When conda is not installed, the _CondaInstaller raises RuntimeError
-inside an except ModuleNotFoundError block. In Python 3.15, the new
-_find_incompatible_extension_module() in traceback.py tries to import
-the parent package when formatting ModuleNotFoundError tracebacks. If
-sys.modules contains None for the package (e.g. during mock.patch.dict
-in tests, or when the import was halted), this triggers another
-ModuleNotFoundError during traceback formatting.
-
-Use 'from None' to suppress both explicit and implicit exception
-chaining, preventing the ModuleNotFoundError from being attached
-as __cause__ or __context__.
----
- distributed/diagnostics/plugin.py | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/distributed/diagnostics/plugin.py b/distributed/diagnostics/plugin.py
-index 54bea73..9d9b1bb 100644
---- a/distributed/diagnostics/plugin.py
-+++ b/distributed/diagnostics/plugin.py
-@@ -645,13 +645,13 @@ class _CondaInstaller:
-         )
-         try:
-             from conda.cli.python_api import Commands, run_command
--        except ModuleNotFoundError as e:  # pragma: nocover
-+        except ModuleNotFoundError:  # pragma: nocover
-             msg = (
-                 "conda install failed because conda could not be found. "
-                 "Please make sure that conda is installed."
-             )
-             logger.error(msg)
--            raise RuntimeError(msg) from e
-+            raise RuntimeError(msg) from None
-         try:
-             _, stderr, returncode = run_command(
-                 Commands.INSTALL, self.conda_options + self.packages
--- 
-2.54.0
-

diff --git a/python-distributed.spec b/python-distributed.spec
index 52e7360..4409aaa 100644
--- a/python-distributed.spec
+++ b/python-distributed.spec
@@ -8,7 +8,7 @@
 %bcond bootstrap 0
 
 Name:           python-%{srcname}
-Version:        2026.3.0
+Version:        2026.7.0
 %global tag     %{version}
 Release:        %autorelease
 Summary:        Distributed scheduler for Dask
@@ -35,19 +35,16 @@ Source:         %forgesource
 Patch:          0001-Increase-test-timeout-for-slower-architectures.patch
 Patch:          0002-Install-test-packages.patch
 Patch:          0003-Disable-warnings-as-errors-in-tests.patch
-Patch:          0004-Loosen-up-some-dependencies.patch
 # https://github.com/dask/distributed/pull/7765
-Patch:          0005-Skip-doc-test-when-not-running-from-a-git-checkout.patch
+Patch:          0004-Skip-doc-test-when-not-running-from-a-git-checkout.patch
 # Fix TLS certs to work with OpenSSL 3.
 # https://github.com/dask/distributed/issues/8701
 # https://github.com/dask/distributed/pull/8707
-Patch:          0006-Update-make_tls_certs.py-work-with-openssl-3-8701.patch
-# Point the test at the uninstalled version.
-Patch:          0007-Avoid-using-sys.prefix-in-CLI-test.patch
+Patch:          0005-Update-make_tls_certs.py-work-with-openssl-3-8701.patch
 # Temporary workaround: don't chain ModuleNotFoundError to avoid Python 3.15
 # _find_incompatible_extension_module raising during traceback formatting.
 # https://github.com/python/cpython/issues/151631
-Patch:          0008-Don-t-chain-ModuleNotFoundError-when-raising-Runtime.patch
+Patch:          0006-Don-t-chain-ModuleNotFoundError-when-raising-Runtime.patch
 
 BuildArch:      noarch
 
@@ -175,9 +172,6 @@ DESTDIR=%{buildroot} DISABLE_IPV6=1 JUPYTER_PLATFORM_DIRS=1 \
 
 %files -n python3-%{srcname} -f %{pyproject_files}
 %doc AUTHORS.md CONTRIBUTING.md README.rst
-%{_bindir}/dask-scheduler
-%{_bindir}/dask-ssh
-%{_bindir}/dask-worker
 
 %changelog
 %autochangelog

diff --git a/sources b/sources
index e975211..54d69d4 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (distributed-2026.3.0.tar.gz) = da91e417d9b847331c1e9aa76fb661bbbefb583f0811c44da9a1f9afff5796d89e5f10fcd73bff577055bcd21088da78a90688d78ecdffda80ca3eba8ff87f71
+SHA512 (distributed-2026.7.0.tar.gz) = 17a65128e8edd72a9b56bcb0fcdb1d82c8ea69442c76326e78bf1337423e8efa9feba5d0e7618103a74a3bab90ecc2a55912bfaef03b81120e33f9ad057fb5fc

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2026-07-08  5:35 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-07-08  5:35 [rpms/python-distributed] rawhide: Update to latest version Elliott Sales de Andrade

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox