summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/tools/certs
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/tools/certs')
-rw-r--r--testing/web-platform/tests/tools/certs/README.md99
-rw-r--r--testing/web-platform/tests/tools/certs/cacert.key30
-rw-r--r--testing/web-platform/tests/tools/certs/cacert.pem125
-rw-r--r--testing/web-platform/tests/tools/certs/config.json17
-rw-r--r--testing/web-platform/tests/tools/certs/web-platform.test.key28
-rw-r--r--testing/web-platform/tests/tools/certs/web-platform.test.pem133
6 files changed, 432 insertions, 0 deletions
diff --git a/testing/web-platform/tests/tools/certs/README.md b/testing/web-platform/tests/tools/certs/README.md
new file mode 100644
index 0000000000..95d9fbd2a8
--- /dev/null
+++ b/testing/web-platform/tests/tools/certs/README.md
@@ -0,0 +1,99 @@
+# WPT Test Certificates
+
+The web-platform-tests project maintains a set of SSL certificates to allow
+contributors to execute tests requiring HTTPS locally.
+
+## Trusting Root CA
+
+To prevent browser SSL warnings when running HTTPS tests locally, the
+web-platform-tests Root CA file `cacert.pem` in the `tools/certs/` directory
+must be added as a trusted certificate in your OS/browser.
+
+For Firefox, go to about:preferences and search for "certificates".
+
+For browsers that use the Certificate Authorities of the underlying OS, such as
+Chrome and Safari, you need to adjust the OS. For macOS, go to Keychain Access
+and add the certificate under **login**.
+
+**NOTE**: The CA should not be installed in any browser profile used
+outside of tests, since it may be used to generate fake
+certificates. For browsers that use the OS certificate store, tests
+should therefore not be run manually outside a dedicated OS instance
+(e.g. a VM). To avoid this problem when running tests in Chrome or
+Firefox, use `wpt run`, which disables certificate checks and therefore
+doesn't require the root CA to be trusted.
+
+## Regenerating certificates
+
+The easiest way to regenerate the pregenerated certificates is to the
+the command
+
+```
+wpt regen-certs
+```
+
+By default this will not generate new certificates unless the existing
+ones are about to expire. In cases where the certificates need to be
+updated anyway (e.g. because the server configuration changed), this
+can be overridden with `--force`.
+
+Generating the certificates requires OpenSSL to be installed.
+
+### Implementation Details
+
+If you wish to manually generate new certificates for any reason, it's
+possible to use OpenSSL when starting the server, or starting a test
+run, by providing the `--ssl-type=openssl` argument to the `wpt serve`
+or `wpt run` commands.
+
+If you installed OpenSSL in such a way that running `openssl` at a
+command line doesn't work, you also need to adjust the path to the
+OpenSSL binary. This can be done by adding a section to `config.json`
+like:
+
+```
+"ssl": {"openssl": {"binary": "/path/to/openssl"}}
+```
+
+### Windows-specific Instructions
+
+For Windows users, the easiest approach is likely to be using
+[WSL](https://docs.microsoft.com/en-us/windows/wsl/) and generate
+certificates in a Linux environment. However it is possible to install
+OpenSSL and generate the certificates without using WSL.
+
+[Shining Light](https://slproweb.com/products/Win32OpenSSL.html)
+provide a convenient installer that is known to work, but requires a
+little extra setup:
+
+Run the installer for Win32_OpenSSL_v1.1.0b (30MB). During installation,
+change the default location for where to Copy OpenSSL Dlls from the
+System directory to the /bin directory.
+
+After installation, ensure that the path to OpenSSL (typically,
+this will be `C:\OpenSSL-Win32\bin`) is in your `%Path%`
+[Environment Variable](http://www.computerhope.com/issues/ch000549.htm).
+If you forget to do this part, you will most likely see a 'File Not Found'
+error when you start wptserve.
+
+Finally, set the path value in the server configuration file to the
+default OpenSSL configuration file location. To do this, create a file
+called `config.json`. Then add the OpenSSL configuration below,
+ensuring that the key `ssl/openssl/base_conf_path` has a value that is
+the path to the OpenSSL config file (typically this will be
+`C:\\OpenSSL-Win32\\bin\\openssl.cfg`):
+
+```
+{
+ "ssl": {
+ "type": "openssl",
+ "encrypt_after_connect": false,
+ "openssl": {
+ "openssl_binary": "openssl",
+ "base_path: "_certs",
+ "force_regenerate": false,
+ "base_conf_path": "C:\\OpenSSL-Win32\\bin\\openssl.cfg"
+ },
+ },
+}
+```
diff --git a/testing/web-platform/tests/tools/certs/cacert.key b/testing/web-platform/tests/tools/certs/cacert.key
new file mode 100644
index 0000000000..a02adcacab
--- /dev/null
+++ b/testing/web-platform/tests/tools/certs/cacert.key
@@ -0,0 +1,30 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIFHDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQI6zyhjDZlpjsCAggA
+MAwGCCqGSIb3DQIJBQAwFAYIKoZIhvcNAwcECKlIS+BRd8lLBIIEyCwK12KwvZLZ
+v0G+K0yv6s3h45NNywn2Jn8e8GxSMbsGvUswNlNIzYbloibVnu7KpdZ58D4upbTu
+dJCrxCtvfP44h7aYswgVk7+thutpAl9roeDWe9e3C+iQMA4UHiIiSmSNe5KrLmu2
+DMezpSyQjqX+OJPpL/3Yiwd45Ae4Okd/c6DqnFEMWFdBqWt0Ft8+HOWELTQyQgYs
+8cma4rqDqtX5QBZ4QBPm8hOp7+LhHITV1qpyaa/nnQQfZx/e1Cyq/h/hcnkbrwuE
+I26s7hcpCaFXN7mSt7GJcZAt5oBqzmDw735iM+FlShokdBsYJEQqWaOVfuzeQYYx
+xt0fz8CReOskIg06jJMXyiWPauutHpiNmQTdcFAE9oO2pUJQCZ3ytaSYG3oP0Byb
+QgEyxhiw6mKv64ZtiAeHPBv7nBl/UPlOSNrXQ+QIyimohdQ+QFeay0eSPgnBwC/H
+MnRaKG6341j5Tk3Itl/5cB6b9VZxvaDgvQNmRNf82EtqCj3YDx7cJF19C7Ut1M0W
+mGLYkudLXne+pLkCWuhKWKEjDp+uDQHF7Zq2q3+l1Wk4DROCtEIO3ruOBLYgNUQf
+flEA6FCw94YlrGKzjRzusXGvBriSrcwlvIc/d55goTZWIZiztPz9c0O93Qg2vYiC
+eJU7D/73byozX0hYOL6d6gWPq4yvbtV/IAZzr+7JuT4j+MVcRkm7lbFhqge/RSbf
+q2iwOOKLs3bpNlMI8S2jtBxPqZ5U/B/eI5slap8Z3xbMuqVAJr4vW4kDGC2WCDFG
+3PXtJvfk4+slbU6cNSzHVk88cS73fRzB4IYyU/txNicyEL0R2iHm7scYKRFJqcKX
+OnDqy4oc5afdv1jfmjb6hA2Xx6T5rC8FMcHBx0M6gi9Y6A/7OadHcRyZySG3F7Xq
++3eub3bwrLwOBEnpm4nl0ucU19WS8kI64gvZbDoQf9kxvOHHFZmjYC0KPFruEWG2
+jFq6xINzA9oTCsR7KWsn+/q3zu5yic9lHtQFN2WnzDzuDoZaVvLY/xqq61ZfROHT
+Q14CfWQMXHwXOn/k9knkm2pNzjti07b+v/X2Wb3eYp85ysn+/jT6ubq4qCtXwHRU
+++IZFpeL3xiuW6uyv+d1Am7Jt/m1JR743WFEOcLV3DZYikbzqG0Y2rWN0L95uhUm
+eCxGLhPoj+j32dSgLhyK/R2n/ka2Ggp+YD+BAyctNUdpVVoqp4IOdCurPBNzNjAv
+Z1qf2SJPKtIk4072VhyuOVUrz8eEQP5+gTUTMNMxFu001EVPrLtAH15KqBay2WAg
+7tdiBZhvXZuICODwMHl8T+hOfLKYGRvxzsjhLU9Ja2b/0jyblt+9pGIwR4RcOBnO
+iZTjKeUlq0R+5P5juqiOSEsB1gazaqu8t/xPzILAxBKz2PypeiVgDLxoRZaa2jGZ
+4SAbE53d58NteP6N0wNPtMix0n2JfH1iwdghHXPF+BS+OHjl+4SriJJw+ylmIpjW
+Sj5u5vQFyl+vnxCiAvo0396MsNsuvIgw8LIcDCI+xgtziYhXapi7vz+U0v2MnglG
+GIVsfsJpMV92B7ch9OodKzitrBZxMRhnKOGekNkjJaGK/iBiRFbDCfnVqWK0Qete
+hPlZzINynSbHPifLVeyfZg==
+-----END ENCRYPTED PRIVATE KEY-----
diff --git a/testing/web-platform/tests/tools/certs/cacert.pem b/testing/web-platform/tests/tools/certs/cacert.pem
new file mode 100644
index 0000000000..101ed61741
--- /dev/null
+++ b/testing/web-platform/tests/tools/certs/cacert.pem
@@ -0,0 +1,125 @@
+-----BEGIN CERTIFICATE-----
+MIIW5zCCFc+gAwIBAgIDCrFbMA0GCSqGSIb3DQEBCwUAMB0xGzAZBgNVBAMMEndl
+Yi1wbGF0Zm9ybS10ZXN0czAeFw0yMjA3MTIxMjQ1MTdaFw0yMzA3MTIxMjQ1MTda
+MB0xGzAZBgNVBAMMEndlYi1wbGF0Zm9ybS10ZXN0czCCASIwDQYJKoZIhvcNAQEB
+BQADggEPADCCAQoCggEBAOIOEkl98dlmCeI7SCy2wyAALDEblG813gVVErnMjOPl
+o6BpynugeJx7OX85cGJXpn/xiPZi7922W+swGnBCtoe073kMif6WQRylplkJQhqf
+I92IaDecX+f5ROTr7mCcloolt2yRohsAODe1TLZ7VqXouVEMws4+Y5Sp+TMG011Y
+mB+qFEYIjhmvH0w4UoQxz5TBtvj6nkFoRdZRgnLbIkJZ0HVtefy1AhEsOgnz7yba
+pstR97iZTuro0E6hcnMAdEKpXXXSYqV3HYPZzn9YAA8BloAM0GHSS9yWMRoV7UnS
+07YjsorpbE6iQAV/CAWZtBaLmMlNY+cxefEK2NRPqhECAwEAAaOCFC4wghQqMAwG
+A1UdEwQFMAMBAf8wHQYDVR0OBBYEFMo8kufcUDkL5UQ/32+RXOKIKjrWMEcGA1Ud
+IwRAMD6AFMo8kufcUDkL5UQ/32+RXOKIKjrWoSGkHzAdMRswGQYDVQQDDBJ3ZWIt
+cGxhdGZvcm0tdGVzdHOCAwqxWzALBgNVHQ8EBAMCAgQwggoFBgNVHR4Eggn8MIIJ
++KCCCfQwE4IRd2ViLXBsYXRmb3JtLnRlc3QwF4IVd3d3LndlYi1wbGF0Zm9ybS50
+ZXN0MBeCFW5vdC13ZWItcGxhdGZvcm0udGVzdDAYghZ3d3cxLndlYi1wbGF0Zm9y
+bS50ZXN0MBiCFnd3dzIud2ViLXBsYXRmb3JtLnRlc3QwG4IZd3d3Lnd3dy53ZWIt
+cGxhdGZvcm0udGVzdDAbghl3d3cubm90LXdlYi1wbGF0Zm9ybS50ZXN0MByCGnd3
+dy53d3cyLndlYi1wbGF0Zm9ybS50ZXN0MByCGnd3dy53d3cxLndlYi1wbGF0Zm9y
+bS50ZXN0MByCGnd3dzIubm90LXdlYi1wbGF0Zm9ybS50ZXN0MByCGnd3dzEud3d3
+LndlYi1wbGF0Zm9ybS50ZXN0MByCGnd3dzEubm90LXdlYi1wbGF0Zm9ybS50ZXN0
+MByCGnd3dzIud3d3LndlYi1wbGF0Zm9ybS50ZXN0MB2CG3d3dzEud3d3MS53ZWIt
+cGxhdGZvcm0udGVzdDAdght3d3cyLnd3dzEud2ViLXBsYXRmb3JtLnRlc3QwHYIb
+d3d3MS53d3cyLndlYi1wbGF0Zm9ybS50ZXN0MB2CG3d3dzIud3d3Mi53ZWItcGxh
+dGZvcm0udGVzdDAfgh13d3cud3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdDAggh53
+d3cyLnd3dy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QwIIIed3d3Lnd3dzEubm90LXdl
+Yi1wbGF0Zm9ybS50ZXN0MCCCHnd3dzEud3d3Lm5vdC13ZWItcGxhdGZvcm0udGVz
+dDAggh54bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3QwIIIed3d3Lnd3dzIu
+bm90LXdlYi1wbGF0Zm9ybS50ZXN0MCGCH3d3dzEud3d3MS5ub3Qtd2ViLXBsYXRm
+b3JtLnRlc3QwIYIfd3d3Mi53d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdDAhgh93
+d3cyLnd3dzEubm90LXdlYi1wbGF0Zm9ybS50ZXN0MCGCH3d3dzEud3d3Mi5ub3Qt
+d2ViLXBsYXRmb3JtLnRlc3QwJIIieG4tLWx2ZS02bGFkLm5vdC13ZWItcGxhdGZv
+cm0udGVzdDAkgiJ3d3cueG4tLWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0MCSC
+InhuLS1sdmUtNmxhZC53d3cud2ViLXBsYXRmb3JtLnRlc3QwJYIjeG4tLWx2ZS02
+bGFkLnd3dzIud2ViLXBsYXRmb3JtLnRlc3QwJYIjeG4tLWx2ZS02bGFkLnd3dzEu
+d2ViLXBsYXRmb3JtLnRlc3QwJYIjd3d3Mi54bi0tbHZlLTZsYWQud2ViLXBsYXRm
+b3JtLnRlc3QwJYIjd3d3MS54bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3Qw
+KIImeG4tLWx2ZS02bGFkLnd3dy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QwKIImd3d3
+LnhuLS1sdmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QwKYIneG4tLWx2ZS02
+bGFkLnd3dzIubm90LXdlYi1wbGF0Zm9ybS50ZXN0MCmCJ3huLS1sdmUtNmxhZC53
+d3cxLm5vdC13ZWItcGxhdGZvcm0udGVzdDApgid3d3cxLnhuLS1sdmUtNmxhZC5u
+b3Qtd2ViLXBsYXRmb3JtLnRlc3QwKYInd3d3Mi54bi0tbHZlLTZsYWQubm90LXdl
+Yi1wbGF0Zm9ybS50ZXN0MCuCKXhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLndlYi1w
+bGF0Zm9ybS50ZXN0MC2CK3huLS1sdmUtNmxhZC54bi0tbHZlLTZsYWQud2ViLXBs
+YXRmb3JtLnRlc3QwL4IteG4tLW44ajZkczUzbHd3a3JxaHYyOGEud3d3LndlYi1w
+bGF0Zm9ybS50ZXN0MC+CLXd3dy54bi0tbjhqNmRzNTNsd3drcnFodjI4YS53ZWIt
+cGxhdGZvcm0udGVzdDAvgi14bi0tbjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2Vi
+LXBsYXRmb3JtLnRlc3QwMIIud3d3Mi54bi0tbjhqNmRzNTNsd3drcnFodjI4YS53
+ZWItcGxhdGZvcm0udGVzdDAwgi54bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cx
+LndlYi1wbGF0Zm9ybS50ZXN0MDCCLnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLnd3
+dzIud2ViLXBsYXRmb3JtLnRlc3QwMIIud3d3MS54bi0tbjhqNmRzNTNsd3drcnFo
+djI4YS53ZWItcGxhdGZvcm0udGVzdDAxgi94bi0tbHZlLTZsYWQueG4tLWx2ZS02
+bGFkLm5vdC13ZWItcGxhdGZvcm0udGVzdDAzgjF4bi0tbjhqNmRzNTNsd3drcnFo
+djI4YS53d3cubm90LXdlYi1wbGF0Zm9ybS50ZXN0MDOCMXd3dy54bi0tbjhqNmRz
+NTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QwNIIyeG4tLW44ajZk
+czUzbHd3a3JxaHYyOGEud3d3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QwNIIyeG4t
+LW44ajZkczUzbHd3a3JxaHYyOGEud3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3Qw
+NIIyd3d3Mi54bi0tbjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3Jt
+LnRlc3QwNIIyd3d3MS54bi0tbjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBs
+YXRmb3JtLnRlc3QwOII2eG4tLWx2ZS02bGFkLnhuLS1uOGo2ZHM1M2x3d2tycWh2
+MjhhLndlYi1wbGF0Zm9ybS50ZXN0MDiCNnhuLS1uOGo2ZHM1M2x3d2tycWh2Mjhh
+LnhuLS1sdmUtNmxhZC53ZWItcGxhdGZvcm0udGVzdDA8gjp4bi0tbjhqNmRzNTNs
+d3drcnFodjI4YS54bi0tbHZlLTZsYWQubm90LXdlYi1wbGF0Zm9ybS50ZXN0MDyC
+OnhuLS1sdmUtNmxhZC54bi0tbjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBs
+YXRmb3JtLnRlc3QwQ4JBeG4tLW44ajZkczUzbHd3a3JxaHYyOGEueG4tLW44ajZk
+czUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3QwR4JFeG4tLW44ajZkczUz
+bHd3a3JxaHYyOGEueG4tLW44ajZkczUzbHd3a3JxaHYyOGEubm90LXdlYi1wbGF0
+Zm9ybS50ZXN0MBMGA1UdJQQMMAoGCCsGAQUFBwMBMIIJhQYDVR0RBIIJfDCCCXiC
+EXdlYi1wbGF0Zm9ybS50ZXN0ghV3d3cud2ViLXBsYXRmb3JtLnRlc3SCFW5vdC13
+ZWItcGxhdGZvcm0udGVzdIIWd3d3MS53ZWItcGxhdGZvcm0udGVzdIIWd3d3Mi53
+ZWItcGxhdGZvcm0udGVzdIIZd3d3Lnd3dy53ZWItcGxhdGZvcm0udGVzdIIZd3d3
+Lm5vdC13ZWItcGxhdGZvcm0udGVzdIIad3d3Lnd3dzIud2ViLXBsYXRmb3JtLnRl
+c3SCGnd3dy53d3cxLndlYi1wbGF0Zm9ybS50ZXN0ghp3d3cyLm5vdC13ZWItcGxh
+dGZvcm0udGVzdIIad3d3MS53d3cud2ViLXBsYXRmb3JtLnRlc3SCGnd3dzEubm90
+LXdlYi1wbGF0Zm9ybS50ZXN0ghp3d3cyLnd3dy53ZWItcGxhdGZvcm0udGVzdIIb
+d3d3MS53d3cxLndlYi1wbGF0Zm9ybS50ZXN0ght3d3cyLnd3dzEud2ViLXBsYXRm
+b3JtLnRlc3SCG3d3dzEud3d3Mi53ZWItcGxhdGZvcm0udGVzdIIbd3d3Mi53d3cy
+LndlYi1wbGF0Zm9ybS50ZXN0gh13d3cud3d3Lm5vdC13ZWItcGxhdGZvcm0udGVz
+dIIed3d3Mi53d3cubm90LXdlYi1wbGF0Zm9ybS50ZXN0gh53d3cud3d3MS5ub3Qt
+d2ViLXBsYXRmb3JtLnRlc3SCHnd3dzEud3d3Lm5vdC13ZWItcGxhdGZvcm0udGVz
+dIIeeG4tLWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0gh53d3cud3d3Mi5ub3Qt
+d2ViLXBsYXRmb3JtLnRlc3SCH3d3dzEud3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRl
+c3SCH3d3dzIud3d3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCH3d3dzIud3d3MS5u
+b3Qtd2ViLXBsYXRmb3JtLnRlc3SCH3d3dzEud3d3Mi5ub3Qtd2ViLXBsYXRmb3Jt
+LnRlc3SCInhuLS1sdmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCInd3dy54
+bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3SCInhuLS1sdmUtNmxhZC53d3cu
+d2ViLXBsYXRmb3JtLnRlc3SCI3huLS1sdmUtNmxhZC53d3cyLndlYi1wbGF0Zm9y
+bS50ZXN0giN4bi0tbHZlLTZsYWQud3d3MS53ZWItcGxhdGZvcm0udGVzdIIjd3d3
+Mi54bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3SCI3d3dzEueG4tLWx2ZS02
+bGFkLndlYi1wbGF0Zm9ybS50ZXN0giZ4bi0tbHZlLTZsYWQud3d3Lm5vdC13ZWIt
+cGxhdGZvcm0udGVzdIImd3d3LnhuLS1sdmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3Jt
+LnRlc3SCJ3huLS1sdmUtNmxhZC53d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdIIn
+eG4tLWx2ZS02bGFkLnd3dzEubm90LXdlYi1wbGF0Zm9ybS50ZXN0gid3d3cxLnhu
+LS1sdmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCJ3d3dzIueG4tLWx2ZS02
+bGFkLm5vdC13ZWItcGxhdGZvcm0udGVzdIIpeG4tLW44ajZkczUzbHd3a3JxaHYy
+OGEud2ViLXBsYXRmb3JtLnRlc3SCK3huLS1sdmUtNmxhZC54bi0tbHZlLTZsYWQu
+d2ViLXBsYXRmb3JtLnRlc3SCLXhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLnd3dy53
+ZWItcGxhdGZvcm0udGVzdIItd3d3LnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLndl
+Yi1wbGF0Zm9ybS50ZXN0gi14bi0tbjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2Vi
+LXBsYXRmb3JtLnRlc3SCLnd3dzIueG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2Vi
+LXBsYXRmb3JtLnRlc3SCLnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLnd3dzEud2Vi
+LXBsYXRmb3JtLnRlc3SCLnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLnd3dzIud2Vi
+LXBsYXRmb3JtLnRlc3SCLnd3dzEueG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2Vi
+LXBsYXRmb3JtLnRlc3SCL3huLS1sdmUtNmxhZC54bi0tbHZlLTZsYWQubm90LXdl
+Yi1wbGF0Zm9ybS50ZXN0gjF4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cubm90
+LXdlYi1wbGF0Zm9ybS50ZXN0gjF3d3cueG4tLW44ajZkczUzbHd3a3JxaHYyOGEu
+bm90LXdlYi1wbGF0Zm9ybS50ZXN0gjJ4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53
+d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdIIyeG4tLW44ajZkczUzbHd3a3JxaHYy
+OGEud3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCMnd3dzIueG4tLW44ajZkczUz
+bHd3a3JxaHYyOGEubm90LXdlYi1wbGF0Zm9ybS50ZXN0gjJ3d3cxLnhuLS1uOGo2
+ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxhdGZvcm0udGVzdII2eG4tLWx2ZS02
+bGFkLnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLndlYi1wbGF0Zm9ybS50ZXN0gjZ4
+bi0tbjhqNmRzNTNsd3drcnFodjI4YS54bi0tbHZlLTZsYWQud2ViLXBsYXRmb3Jt
+LnRlc3SCOnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLnhuLS1sdmUtNmxhZC5ub3Qt
+d2ViLXBsYXRmb3JtLnRlc3SCOnhuLS1sdmUtNmxhZC54bi0tbjhqNmRzNTNsd3dr
+cnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCQXhuLS1uOGo2ZHM1M2x3d2ty
+cWh2MjhhLnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLndlYi1wbGF0Zm9ybS50ZXN0
+gkV4bi0tbjhqNmRzNTNsd3drcnFodjI4YS54bi0tbjhqNmRzNTNsd3drcnFodjI4
+YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QwDQYJKoZIhvcNAQELBQADggEBAFgUyc+X
+AMTXjKv+IuKOSKSNp5WsA7tNEK8HHvKyKraX611JTPUejxohoSZv7scL2+8GOMsq
+9I9mmju4l0F45FiphfrR3swVquSM1jK6k9BDTchQU5FQOoBhunvrtwb7Y64/AiCy
+ZRE7nkOtV/6mIjrGjFu97JT0OwbZ+SFw+bNVWmf6RMea550ODCS/jsEo3Scbihya
+oHPCVFk29oEBqOOlWITasEc5Z4IpZRn31mT3YV/+GHfMDJ16lEENwg2iXIrjcU0a
+a0/KCLgRZKBNorlVt3E/3awQVJV2qn4Ei7sMaIjPn4oMen166poZe7oA8mKHaavp
+VKvWQ5Gh5LHGhZs=
+-----END CERTIFICATE-----
diff --git a/testing/web-platform/tests/tools/certs/config.json b/testing/web-platform/tests/tools/certs/config.json
new file mode 100644
index 0000000000..df93c6fc34
--- /dev/null
+++ b/testing/web-platform/tests/tools/certs/config.json
@@ -0,0 +1,17 @@
+{
+ "ports": {
+ "http": [],
+ "https": [],
+ "ws": [],
+ "wss": []
+ },
+ "check_subdomains": false,
+ "ssl": {
+ "type": "openssl",
+ "openssl": {
+ "duration": 365,
+ "force_regenerate": true,
+ "base_path": "tools/certs"
+ }
+ }
+}
diff --git a/testing/web-platform/tests/tools/certs/web-platform.test.key b/testing/web-platform/tests/tools/certs/web-platform.test.key
new file mode 100644
index 0000000000..26b926f7a5
--- /dev/null
+++ b/testing/web-platform/tests/tools/certs/web-platform.test.key
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDf1DWXJxBWd17d
+IofHTgQIBfsq32PiaxjN/89gNhC+rB4RHwhnCX3cuvLPDOvvMpA4GCXAX3pYeDSV
+OBks6xuZNx25BQTvV0ydCDhf7YVkkRZfj1x0bRPknwSNDjCE0NPH40AghmS/h+Tf
+GU80rQDFji0/FapcswmLMmKcB9kl+dvudmaSWqCnWZTpT/kyLBWSd5+mkA6S1br2
+lQSIE6N5O9oaU1jAK1E6jQ2ld3DFM8JINRW9fsx7u5OMu2gds84AbGPc1bPOW9ad
+gFrcxngiYdHGZ0hvYLi7RofbD3OR0CTir4txNd0YXewTcENKBcBb7i2DRP9J8nuy
+5YUhycgXAgMBAAECggEAGMEPbDgVxnpNM4euHIy0RW7j6Enscg4GIEI6XRmdoHjI
+mnwkIcEa+l5ynBOBxGKDMLD6+9uTXFVu+1HI9v7Jfphp4Rx8/ztYbcWK9pD+P7EM
+GGVyhC3MFWzAxBjdpNKzmVe4r+AtJEGTPlk+OUUo4LBosKFkxfvHAm4AGeGEUn6q
+ppoaJbGjjbeKzZFkS6RdHqpJJ4b/o8oOlraHAEZb/vJk31pgokUBV1Hh0BYeLuHA
+ugQT2+a8sX3MwbHC8+6poPR5kpmQUzoVEuN+Iz/ccr9ruUeD10TFcQYl/4gx/gl4
+isjLK3mDCAt7FWGWeVuIjxyBOTrCeyHP0cZza8oKgQKBgQD5MYy3FNXdH9TowU54
+0J+0nAkoSz3w6Tsg9J2jdUtJ+l4yITiFd4p4512q8aVcaTIwQCCGEWxE3Y7Cbt09
+YAK+BLNnXaGQPYomIvt9W8zOrjp/5sB1ac40q5e90Ng9czVHWIGDxE5pEpg8eHza
+PxxdhCGAkEtkahKpYn6nqT7S+wKBgQDl8U0e05DerY36hxSmWVSv+P7ccwzq/FWS
+oke1CUTO2njt/IWiPI/Di5VZl0jQ7vChcHVFpFn/Igr4sWq30fqdRvNjGV78Htyy
+2Jd6XpLSDOHdJr4Ykx0WORenXerdvZB1+OV78I2m1BgVS/OOhOgwK9LhTYlMHVIn
+hU1ASbo0lQKBgQCzoT44M3K+xVVquv3gJTMatGf9fc+Wu+l9pheEXub42tvP8xaV
+T0ioQs/IjAyRgttE4NURD7omIjfofJZKyczwQN86Icp2+YV+XDVBdk06p2lQDXyq
+pqyYVyE5GTTnhwbe+TPTUkzbfSX0YT5O7LN7zeWAkYNnTPdK1s9J+LxqxQKBgQCR
+vzUmyOsWeeN4XI6WMiEfuS+yA6q4d2C2JO5WrZ1Tj97+2gTKJKDrTVpJAz9AT3Nu
+oJ10mwwAT0+s+qeuBAZaElLLCZXPMLCrG+ZHxhJB2bCAQMJVSUoyf9WiXEE2c6VR
+YYXz3TGsANuTBCVIvK1/ewebj03rVNpx+mhQy2qfUQKBgQDYzRKBO21bpw0IcD1v
+r35D688y55bG2vTjV2vFoUpanLV6gftY473C/gwNJXAs69uJIeT9AM+KE6n/3bEK
+8rS8M6TcN8I3cRYwNnx+OPFF+YD8KVsbv8I2y2Gu1xGrMd+PyAHYnQmXcaYqN7eU
+hqH7BXYpwNm96Lm4De1W+tXPJA==
+-----END PRIVATE KEY-----
diff --git a/testing/web-platform/tests/tools/certs/web-platform.test.pem b/testing/web-platform/tests/tools/certs/web-platform.test.pem
new file mode 100644
index 0000000000..be1bfd5a1f
--- /dev/null
+++ b/testing/web-platform/tests/tools/certs/web-platform.test.pem
@@ -0,0 +1,133 @@
+Certificate:
+ Data:
+ Version: 3 (0x2)
+ Serial Number: 700764 (0xab15c)
+ Signature Algorithm: sha256WithRSAEncryption
+ Issuer: CN=web-platform-tests
+ Validity
+ Not Before: Jul 12 12:45:17 2022 GMT
+ Not After : Jul 12 12:45:17 2023 GMT
+ Subject: CN=web-platform.test
+ Subject Public Key Info:
+ Public Key Algorithm: rsaEncryption
+ RSA Public-Key: (2048 bit)
+ Modulus:
+ 00:df:d4:35:97:27:10:56:77:5e:dd:22:87:c7:4e:
+ 04:08:05:fb:2a:df:63:e2:6b:18:cd:ff:cf:60:36:
+ 10:be:ac:1e:11:1f:08:67:09:7d:dc:ba:f2:cf:0c:
+ eb:ef:32:90:38:18:25:c0:5f:7a:58:78:34:95:38:
+ 19:2c:eb:1b:99:37:1d:b9:05:04:ef:57:4c:9d:08:
+ 38:5f:ed:85:64:91:16:5f:8f:5c:74:6d:13:e4:9f:
+ 04:8d:0e:30:84:d0:d3:c7:e3:40:20:86:64:bf:87:
+ e4:df:19:4f:34:ad:00:c5:8e:2d:3f:15:aa:5c:b3:
+ 09:8b:32:62:9c:07:d9:25:f9:db:ee:76:66:92:5a:
+ a0:a7:59:94:e9:4f:f9:32:2c:15:92:77:9f:a6:90:
+ 0e:92:d5:ba:f6:95:04:88:13:a3:79:3b:da:1a:53:
+ 58:c0:2b:51:3a:8d:0d:a5:77:70:c5:33:c2:48:35:
+ 15:bd:7e:cc:7b:bb:93:8c:bb:68:1d:b3:ce:00:6c:
+ 63:dc:d5:b3:ce:5b:d6:9d:80:5a:dc:c6:78:22:61:
+ d1:c6:67:48:6f:60:b8:bb:46:87:db:0f:73:91:d0:
+ 24:e2:af:8b:71:35:dd:18:5d:ec:13:70:43:4a:05:
+ c0:5b:ee:2d:83:44:ff:49:f2:7b:b2:e5:85:21:c9:
+ c8:17
+ Exponent: 65537 (0x10001)
+ X509v3 extensions:
+ X509v3 Basic Constraints:
+ CA:FALSE
+ X509v3 Subject Key Identifier:
+ 53:34:14:49:85:A6:DE:7F:A4:F6:2C:42:A9:1A:9C:F7:D9:20:50:C1
+ X509v3 Authority Key Identifier:
+ keyid:CA:3C:92:E7:DC:50:39:0B:E5:44:3F:DF:6F:91:5C:E2:88:2A:3A:D6
+
+ X509v3 Key Usage:
+ Digital Signature, Non Repudiation, Key Encipherment
+ X509v3 Extended Key Usage:
+ TLS Web Server Authentication
+ X509v3 Subject Alternative Name:
+ DNS:web-platform.test, DNS:www.web-platform.test, DNS:not-web-platform.test, DNS:www1.web-platform.test, DNS:www2.web-platform.test, DNS:www.www.web-platform.test, DNS:www.not-web-platform.test, DNS:www.www2.web-platform.test, DNS:www.www1.web-platform.test, DNS:www2.not-web-platform.test, DNS:www1.www.web-platform.test, DNS:www1.not-web-platform.test, DNS:www2.www.web-platform.test, DNS:www1.www1.web-platform.test, DNS:www2.www1.web-platform.test, DNS:www1.www2.web-platform.test, DNS:www2.www2.web-platform.test, DNS:www.www.not-web-platform.test, DNS:www2.www.not-web-platform.test, DNS:www.www1.not-web-platform.test, DNS:www1.www.not-web-platform.test, DNS:xn--lve-6lad.web-platform.test, DNS:www.www2.not-web-platform.test, DNS:www1.www1.not-web-platform.test, DNS:www2.www2.not-web-platform.test, DNS:www2.www1.not-web-platform.test, DNS:www1.www2.not-web-platform.test, DNS:xn--lve-6lad.not-web-platform.test, DNS:www.xn--lve-6lad.web-platform.test, DNS:xn--lve-6lad.www.web-platform.test, DNS:xn--lve-6lad.www2.web-platform.test, DNS:xn--lve-6lad.www1.web-platform.test, DNS:www2.xn--lve-6lad.web-platform.test, DNS:www1.xn--lve-6lad.web-platform.test, DNS:xn--lve-6lad.www.not-web-platform.test, DNS:www.xn--lve-6lad.not-web-platform.test, DNS:xn--lve-6lad.www2.not-web-platform.test, DNS:xn--lve-6lad.www1.not-web-platform.test, DNS:www1.xn--lve-6lad.not-web-platform.test, DNS:www2.xn--lve-6lad.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.web-platform.test, DNS:xn--lve-6lad.xn--lve-6lad.web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.www.web-platform.test, DNS:www.xn--n8j6ds53lwwkrqhv28a.web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.not-web-platform.test, DNS:www2.xn--n8j6ds53lwwkrqhv28a.web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.www1.web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.www2.web-platform.test, DNS:www1.xn--n8j6ds53lwwkrqhv28a.web-platform.test, DNS:xn--lve-6lad.xn--lve-6lad.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.www.not-web-platform.test, DNS:www.xn--n8j6ds53lwwkrqhv28a.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.www2.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.www1.not-web-platform.test, DNS:www2.xn--n8j6ds53lwwkrqhv28a.not-web-platform.test, DNS:www1.xn--n8j6ds53lwwkrqhv28a.not-web-platform.test, DNS:xn--lve-6lad.xn--n8j6ds53lwwkrqhv28a.web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.xn--lve-6lad.web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.xn--lve-6lad.not-web-platform.test, DNS:xn--lve-6lad.xn--n8j6ds53lwwkrqhv28a.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.xn--n8j6ds53lwwkrqhv28a.web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.xn--n8j6ds53lwwkrqhv28a.not-web-platform.test
+ Signature Algorithm: sha256WithRSAEncryption
+ 74:00:12:c7:43:34:fd:87:4e:f8:67:58:34:e2:c7:42:be:a8:
+ fc:61:df:11:9c:77:18:d5:0b:e6:92:a1:c2:d9:9b:20:a5:ee:
+ e8:81:ab:62:fb:55:67:35:95:fa:8b:b6:a5:3b:52:f7:d4:21:
+ e8:7c:b5:37:12:58:02:24:b5:7e:93:4f:6c:ce:5b:4b:af:8f:
+ fc:22:e2:03:2d:47:d2:87:43:c0:de:82:a7:5b:6a:97:2f:e9:
+ f7:46:f4:41:d2:35:07:62:c5:a4:e8:08:a2:90:1d:44:4a:3d:
+ 71:d6:c5:f5:40:2d:99:0d:33:4f:0f:31:69:f7:02:bd:c5:44:
+ b9:42:9e:f2:94:36:44:66:b8:b8:81:99:06:d2:b7:df:cb:b0:
+ 01:c8:5b:64:15:a4:75:78:da:71:b1:92:01:5b:55:7c:76:94:
+ a2:f3:1a:23:78:37:e5:65:51:0f:ca:66:91:d4:62:1b:b7:22:
+ d2:75:37:7e:67:ac:b5:9d:b3:50:c8:db:76:29:a1:73:21:74:
+ 71:9e:25:de:25:2a:2c:20:fb:e8:68:eb:9f:fc:f1:a7:85:69:
+ a4:a8:0d:93:4b:ff:f5:9d:32:31:d3:ca:7e:0e:79:f3:45:32:
+ d8:fc:35:12:d4:08:71:fd:e2:0e:64:55:a2:5a:f4:2f:be:19:
+ f1:2d:be:3f
+-----BEGIN CERTIFICATE-----
+MIIMsjCCC5qgAwIBAgIDCrFcMA0GCSqGSIb3DQEBCwUAMB0xGzAZBgNVBAMMEndl
+Yi1wbGF0Zm9ybS10ZXN0czAeFw0yMjA3MTIxMjQ1MTdaFw0yMzA3MTIxMjQ1MTda
+MBwxGjAYBgNVBAMMEXdlYi1wbGF0Zm9ybS50ZXN0MIIBIjANBgkqhkiG9w0BAQEF
+AAOCAQ8AMIIBCgKCAQEA39Q1lycQVnde3SKHx04ECAX7Kt9j4msYzf/PYDYQvqwe
+ER8IZwl93Lryzwzr7zKQOBglwF96WHg0lTgZLOsbmTcduQUE71dMnQg4X+2FZJEW
+X49cdG0T5J8EjQ4whNDTx+NAIIZkv4fk3xlPNK0AxY4tPxWqXLMJizJinAfZJfnb
+7nZmklqgp1mU6U/5MiwVknefppAOktW69pUEiBOjeTvaGlNYwCtROo0NpXdwxTPC
+SDUVvX7Me7uTjLtoHbPOAGxj3NWzzlvWnYBa3MZ4ImHRxmdIb2C4u0aH2w9zkdAk
+4q+LcTXdGF3sE3BDSgXAW+4tg0T/SfJ7suWFIcnIFwIDAQABo4IJ+jCCCfYwCQYD
+VR0TBAIwADAdBgNVHQ4EFgQUUzQUSYWm3n+k9ixCqRqc99kgUMEwHwYDVR0jBBgw
+FoAUyjyS59xQOQvlRD/fb5Fc4ogqOtYwCwYDVR0PBAQDAgXgMBMGA1UdJQQMMAoG
+CCsGAQUFBwMBMIIJhQYDVR0RBIIJfDCCCXiCEXdlYi1wbGF0Zm9ybS50ZXN0ghV3
+d3cud2ViLXBsYXRmb3JtLnRlc3SCFW5vdC13ZWItcGxhdGZvcm0udGVzdIIWd3d3
+MS53ZWItcGxhdGZvcm0udGVzdIIWd3d3Mi53ZWItcGxhdGZvcm0udGVzdIIZd3d3
+Lnd3dy53ZWItcGxhdGZvcm0udGVzdIIZd3d3Lm5vdC13ZWItcGxhdGZvcm0udGVz
+dIIad3d3Lnd3dzIud2ViLXBsYXRmb3JtLnRlc3SCGnd3dy53d3cxLndlYi1wbGF0
+Zm9ybS50ZXN0ghp3d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdIIad3d3MS53d3cu
+d2ViLXBsYXRmb3JtLnRlc3SCGnd3dzEubm90LXdlYi1wbGF0Zm9ybS50ZXN0ghp3
+d3cyLnd3dy53ZWItcGxhdGZvcm0udGVzdIIbd3d3MS53d3cxLndlYi1wbGF0Zm9y
+bS50ZXN0ght3d3cyLnd3dzEud2ViLXBsYXRmb3JtLnRlc3SCG3d3dzEud3d3Mi53
+ZWItcGxhdGZvcm0udGVzdIIbd3d3Mi53d3cyLndlYi1wbGF0Zm9ybS50ZXN0gh13
+d3cud3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdIIed3d3Mi53d3cubm90LXdlYi1w
+bGF0Zm9ybS50ZXN0gh53d3cud3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCHnd3
+dzEud3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdIIeeG4tLWx2ZS02bGFkLndlYi1w
+bGF0Zm9ybS50ZXN0gh53d3cud3d3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCH3d3
+dzEud3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCH3d3dzIud3d3Mi5ub3Qtd2Vi
+LXBsYXRmb3JtLnRlc3SCH3d3dzIud3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SC
+H3d3dzEud3d3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCInhuLS1sdmUtNmxhZC5u
+b3Qtd2ViLXBsYXRmb3JtLnRlc3SCInd3dy54bi0tbHZlLTZsYWQud2ViLXBsYXRm
+b3JtLnRlc3SCInhuLS1sdmUtNmxhZC53d3cud2ViLXBsYXRmb3JtLnRlc3SCI3hu
+LS1sdmUtNmxhZC53d3cyLndlYi1wbGF0Zm9ybS50ZXN0giN4bi0tbHZlLTZsYWQu
+d3d3MS53ZWItcGxhdGZvcm0udGVzdIIjd3d3Mi54bi0tbHZlLTZsYWQud2ViLXBs
+YXRmb3JtLnRlc3SCI3d3dzEueG4tLWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0
+giZ4bi0tbHZlLTZsYWQud3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdIImd3d3Lnhu
+LS1sdmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCJ3huLS1sdmUtNmxhZC53
+d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdIIneG4tLWx2ZS02bGFkLnd3dzEubm90
+LXdlYi1wbGF0Zm9ybS50ZXN0gid3d3cxLnhuLS1sdmUtNmxhZC5ub3Qtd2ViLXBs
+YXRmb3JtLnRlc3SCJ3d3dzIueG4tLWx2ZS02bGFkLm5vdC13ZWItcGxhdGZvcm0u
+dGVzdIIpeG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3SC
+K3huLS1sdmUtNmxhZC54bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3SCLXhu
+LS1uOGo2ZHM1M2x3d2tycWh2MjhhLnd3dy53ZWItcGxhdGZvcm0udGVzdIItd3d3
+LnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLndlYi1wbGF0Zm9ybS50ZXN0gi14bi0t
+bjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCLnd3dzIu
+eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3SCLnhuLS1u
+OGo2ZHM1M2x3d2tycWh2MjhhLnd3dzEud2ViLXBsYXRmb3JtLnRlc3SCLnhuLS1u
+OGo2ZHM1M2x3d2tycWh2MjhhLnd3dzIud2ViLXBsYXRmb3JtLnRlc3SCLnd3dzEu
+eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3SCL3huLS1s
+dmUtNmxhZC54bi0tbHZlLTZsYWQubm90LXdlYi1wbGF0Zm9ybS50ZXN0gjF4bi0t
+bjhqNmRzNTNsd3drcnFodjI4YS53d3cubm90LXdlYi1wbGF0Zm9ybS50ZXN0gjF3
+d3cueG4tLW44ajZkczUzbHd3a3JxaHYyOGEubm90LXdlYi1wbGF0Zm9ybS50ZXN0
+gjJ4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cyLm5vdC13ZWItcGxhdGZvcm0u
+dGVzdIIyeG4tLW44ajZkczUzbHd3a3JxaHYyOGEud3d3MS5ub3Qtd2ViLXBsYXRm
+b3JtLnRlc3SCMnd3dzIueG4tLW44ajZkczUzbHd3a3JxaHYyOGEubm90LXdlYi1w
+bGF0Zm9ybS50ZXN0gjJ3d3cxLnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13
+ZWItcGxhdGZvcm0udGVzdII2eG4tLWx2ZS02bGFkLnhuLS1uOGo2ZHM1M2x3d2ty
+cWh2MjhhLndlYi1wbGF0Zm9ybS50ZXN0gjZ4bi0tbjhqNmRzNTNsd3drcnFodjI4
+YS54bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3SCOnhuLS1uOGo2ZHM1M2x3
+d2tycWh2MjhhLnhuLS1sdmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCOnhu
+LS1sdmUtNmxhZC54bi0tbjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRm
+b3JtLnRlc3SCQXhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLnhuLS1uOGo2ZHM1M2x3
+d2tycWh2MjhhLndlYi1wbGF0Zm9ybS50ZXN0gkV4bi0tbjhqNmRzNTNsd3drcnFo
+djI4YS54bi0tbjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRl
+c3QwDQYJKoZIhvcNAQELBQADggEBAHQAEsdDNP2HTvhnWDTix0K+qPxh3xGcdxjV
+C+aSocLZmyCl7uiBq2L7VWc1lfqLtqU7UvfUIeh8tTcSWAIktX6TT2zOW0uvj/wi
+4gMtR9KHQ8Degqdbapcv6fdG9EHSNQdixaToCKKQHURKPXHWxfVALZkNM08PMWn3
+Ar3FRLlCnvKUNkRmuLiBmQbSt9/LsAHIW2QVpHV42nGxkgFbVXx2lKLzGiN4N+Vl
+UQ/KZpHUYhu3ItJ1N35nrLWds1DI23YpoXMhdHGeJd4lKiwg++ho65/88aeFaaSo
+DZNL//WdMjHTyn4OefNFMtj8NRLUCHH94g5kVaJa9C++GfEtvj8=
+-----END CERTIFICATE-----