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==
-+MIIG/AIBADANBgkqhkiG9w0BAQEFAASCBuYwggbiAgEAAoIBgQCv3CtP0jAO65n5
-+V/rmtEPOyFg7zQoOf3H1ucS5MUNKqBzKTeFj8fGogIs6nNIRpOe5KXWCrENUarmV
-+FyB33FNSBECfgy2q5M3viPELdXv9BJyY3GLjoBXCKREd4o9xy1itlWJLlHSu7eV0
-+YPElY+MP2Y7bAIlxtH7ZmoCoaHcKhTyd9t7f2DNFbCrFP8rgn94ccfUsppwr9sFZ
-+AKHpSgn1aQbyDmjxW99nbhXpjLvvns3iHNlNDfgPe+PgF3TKGs9Qi9cunT0x/TaK
-+LPIb/9NRZGQBr++YhPOsjgaDX/5cUdeiipDtwqUzrnmxM10QCnWe3Jiww9KGqkNE
-+rHroDEbHDHZlGQjdfbCHc0ROUgCFaSBhq0I7NUWz9fSHcRU43Hxk/1jzN4XTk/hN
-+A7Wa0Bp9BuUHlc0JX4lBVOWB6ppo9nsEjXWitGVzeFzKvzC5UDMxFkejvexUm7Ui
-+IFByL8BNW81zpagnvGpjE3Y8XbCmUh/ZdzNLbhycHXN1qfBGhc8CAwEAAQKCAYAY
-+lGVZWr9s1nFG8I0ZAckYddgfQ6FMNXPwLG7ak5AcNzMO86O1HHPyYUUUhCa4YJwi
-+vTC3euxOODyIIhtfpWPf6sg9g1A2upQuDq3iNCGIU8SveN45gn6IDMVfr/LsrMdQ
-+O7jpZ26HpKiVg5cw6q0p4fadlY2gXuH7+CRTZYZ96fF3ArJUBxvjcCLqPuhUTQP2
-+ZdcmzoK1gl+z2OrIeJi7vFpEKs9wLK8k/bYCVrFN5JxSJkYZBwLM5zwKbjzcorJr
-+z/oQIM+vpW9VNmXICG9G3CxYr+SPb7gVuddWrG6OwkI2EVh3AhspJRBpLHj35dQX
-+7b2fXNR2+pWR89od+deshS6FSbXouC2GO2shq9DGydE7+2EnduWtEjdg3bj4eAaj
-+Ez+0YxX3qbUnEUIRgjWxv1ByLqItse3BLODaKluq18UqPwa9FW3bhDrlqUX75OIb
-+/dAMB+1qnCTmzhgZvBm+vg0kpuottcW4kJmUoqqNdb2yo8SkfYRlvS4v4fwV3YEC
-+gcEA5A5SEsHesv/YCZ//bHZ9U1FC4pLq1fCsVKEzmipiw0jKpFsGwWbEnrGu0PUR
-+DkTTSAoGhPMXv4x/yBDNDx4jcki7mdtLeROXyXvY7uHcclrP1NpNVNe47Ck8Mmn2
-+ouTaRrx5PYPzb4rFQPLr2kt81161NbJ9ngTjotEq+/jePwM9Ojj3ClLg7+Z3y20D
-+YB33jFW8nSHXuT6ShS627Nkpyj1hS2Aa+ZOMTsBgD4FFhnPiyCFWw4V5e4paFgvF
-+geHJAoHBAMVokA+0Bis6Ni8BzAzRy52db6+m0j/jcI3BFYYOyDmLJc0fQmTaXQaP
-+awJQkhbSfYLREwjeQtUBPeHZuIc2a5ftOw9tRe6kDZuCOZh7Byjk85oaJcjZ8NVw
-+7XVN8XkY+MfoBbqK0Hgq01U4jcFK9Ektmm0UJw3IVCYnjoEoy+SLRq1e+axjACCw
-+WIknXxABUxhYdxNawSPtlQEGMyApjQrWi2IQ0bC7cMt78SNaF/LrkK0hVwvC08bf
-+5rPnKsW21wKBwDRqkjSbeKsdoLL9okB0r3Nx7vSSngUULxe4gVrCuTZ3SZQjE9dp
-+3nE3F54RZZ0o9oLNQxhVozS0fz4llmwOGkmPLAc93wfyF+YIYCDvqrJh6vjaQAHr
-+Hyawh5RyxGxGO2EcuqUH6fDOLW4zJ0BiL0x1CSNRZgvmxcdLWhzV44cKII18QFOQ
-+HwEksI4B/U+fM6F+pz5aY/HAzv5rcUHY3AEOwIkJismoPwxurOWDac5wXkRvXTjN
-+OdHKR9BfXkLu+QKBwEY+ZsSvsmI/XHhtk0YcgO+czdka60WAkNRgGGCTcfvH37OV
-+o/JvIRrsfY9dTB6C19ZsvvEw5WcWAgcTie3TF4YADDv5DiFUjuL++6+eV3XdwjDb
-+jQZjRqcsf9J14a7Ni/jWPvOZ4YRg+MIiVY6qNTK033Zg7WSiHA9XlAWxlpvEU2nt
-+mboVoD4Bgf+L2u+/COpo0DY63O8D4zlyE08meeGZZg+HHJZenExL1gpWTJ9L4zc3
-+3dl5ghIKKfVqFHY2EQKBwFrbKd0eS1nUqTZ1P/c8jw0BOjrSJc3K+ZZKaaOJ9wBA
-+DroCFLYcsHxwh2hh6mEe6ViRuWsiGQD3dCHaWMMF2LTReaoETiSB9V9pHGOKJ4bL
-+lFf94RD9Mo1Hj5T6eb1pOeuWnl3aMRXAcm4cA0gh51UVKobArGy43alBpzVznI2O
-+mXHs61zoxC+0Ea3O+H0Jc2p4iacHzWz56VyScvgIqyXroIMD13Y8izMt2XVQoFK5
-+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