Hi all,

While adding OpenSSL3 support to serf, I stumbled on a test failure caused by 
MD5 having been removed from OpenSSL.

This led to adding a dedicated error message for it, then updating md5 to 
sha256 when generating a test CRL, then updating the certificate creation 
script to work with python3, then updating the test certs.

I have put the patch at https://github.com/apache/serf/pull/7, and it is posted 
below just in case.

Regards,
Graham
--

diff --git a/buckets/ssl_buckets.c b/buckets/ssl_buckets.c
index d860577e..27a204f4 100644
--- a/buckets/ssl_buckets.c
+++ b/buckets/ssl_buckets.c
@@ -890,7 +890,11 @@ validate_server_certificate(int cert_valid, X509_STORE_CTX 
*store_ctx)
             case X509_V_ERR_UNABLE_TO_GET_CRL:
                     failures |= SERF_SSL_CERT_UNABLE_TO_GET_CRL;
                     break;
-            default:
+           case X509_V_ERR_CERT_SIGNATURE_FAILURE:
+            case X509_V_ERR_CRL_SIGNATURE_FAILURE:
+                   failures |= SERF_SSL_SIGNATURE_FAILURE;
+                   break;
+           default:
                     serf__log(LOGLVL_WARNING, LOGCOMP_SSL, __FILE__,
                               ctx->config,
                               "validate_server_certificate, unknown cert "
diff --git a/serf_bucket_types.h b/serf_bucket_types.h
index 723fbef5..4873c667 100644
--- a/serf_bucket_types.h
+++ b/serf_bucket_types.h
@@ -583,6 +583,8 @@ serf_bucket_t *serf_bucket_limit_create(
 #define SERF_SSL_OCSP_RESPONDER_ERROR           0x0200
 #define SERF_SSL_OCSP_RESPONDER_UNKNOWN_FAILURE 0x0400
 
+#define SERF_SSL_SIGNATURE_FAILURE  0x0800
+
 extern const serf_bucket_type_t serf_bucket_type_ssl_encrypt;
 #define SERF_BUCKET_IS_SSL_ENCRYPT(b) SERF_BUCKET_CHECK((b), ssl_encrypt)
 
diff --git a/test/certs/create_certs.py b/test/certs/create_certs.py
index 1f1c4f44..c1aa1b3f 100755
--- a/test/certs/create_certs.py
+++ b/test/certs/create_certs.py
@@ -49,10 +49,10 @@ def create_key(keyfile='', passphrase=None):
     if passphrase:
         open(keyfile, "wt").write(crypto.dump_privatekey(crypto.FILETYPE_PEM, 
                                                          key, KEY_CIPHER, 
-                                                         passphrase))
+                                                         
passphrase).decode('utf-8'))
     else:
         open(keyfile, "wt").write(crypto.dump_privatekey(crypto.FILETYPE_PEM, 
-                                                         key))
+                                                         key).decode('utf-8'))
 
     return key
 
@@ -62,7 +62,7 @@ def create_pkcs12(clientkey, clientcert, issuer, pkcs12file, 
passphrase=None):
     pkcs12.set_certificate(clientcert)
     pkcs12.set_privatekey(clientkey)
     pkcs12.set_ca_certificates([issuer])
-    open(pkcs12file, "wt").write(pkcs12.export(passphrase=passphrase, 
+    open(pkcs12file, "wb").write(pkcs12.export(passphrase=passphrase, 
                                                iter=2048, maciter=2048))
 
 def create_crl(revokedcert, cakey, cacert, crlfile, next_crl_days=VALID_DAYS):
@@ -73,18 +73,18 @@ def create_crl(revokedcert, cakey, cacert, crlfile, 
next_crl_days=VALID_DAYS):
     now = datetime.utcnow()
     now_str = now.strftime('%Y%m%d%H%M%SZ')
 
-    revoked.set_serial(serial_number)
-    revoked.set_reason('unspecified')
-    revoked.set_rev_date(now_str)   # revoked as of now
+    revoked.set_serial(serial_number.encode('ascii'))
+    revoked.set_reason(b'unspecified')
+    revoked.set_rev_date(now_str.encode('ascii'))   # revoked as of now
 
     crl.add_revoked(revoked)
     try:
-        exported = crl.export(cacert, cakey, days=next_crl_days, digest=b"md5")
+        exported = crl.export(cacert, cakey, days=next_crl_days, 
digest=b"sha256")
     except TypeError:
         # Some very old versions of pyopenssl (such as the one on macOS)
         # do not support the 'digest' keyword argument.
         exported = crl.export(cacert, cakey, days=next_crl_days)
-    open(crlfile, "wt").write(exported)
+    open(crlfile, "wb").write(exported)
 
 # subjectAltName
 def create_cert(subjectkey, certfile, issuer=None, issuerkey=None, country='', 
@@ -122,41 +122,41 @@ def create_cert(subjectkey, certfile, issuer=None, 
issuerkey=None, country='',
     
     if ca:
         cert.add_extensions([
-            crypto.X509Extension("basicConstraints", False,
-                                 "CA:TRUE"),
-            crypto.X509Extension("subjectKeyIdentifier", False, "hash",
+            crypto.X509Extension(b"basicConstraints", False,
+                                 b"CA:TRUE"),
+            crypto.X509Extension(b"subjectKeyIdentifier", False, b"hash",
                                  subject=cert)
             ])
         cert.add_extensions([
-            crypto.X509Extension("authorityKeyIdentifier", False, 
-                                 "keyid:always", issuer=issuer)
+            crypto.X509Extension(b"authorityKeyIdentifier", False, 
+                                 b"keyid:always", issuer=issuer)
             ])
 
     if subjectAltName:
         critical = True if not cn else False
         cert.add_extensions([
-            crypto.X509Extension('subjectAltName', critical, ", 
".join(subjectAltName))])
+            crypto.X509Extension(b'subjectAltName', critical, ", 
".join(subjectAltName).encode('ascii'))])
 
     if ocsp_responder_url:
         cert.add_extensions([
-            crypto.X509Extension('authorityInfoAccess', False,
-                                 'OCSP;URI:' + ocsp_responder_url)])
+            crypto.X509Extension(b'authorityInfoAccess', False,
+                                 ('OCSP;URI:' + 
ocsp_responder_url).encode('ascii'))])
 
     if ocsp_signer:
         cert.add_extensions([
-            crypto.X509Extension('extendedKeyUsage', True, 'OCSPSigning')
+            crypto.X509Extension(b'extendedKeyUsage', True, b'OCSPSigning')
         ])
 
     cert.sign(issuerkey, SIGN_ALGO)
 
     open(certfile, "wt").write(crypto.dump_certificate(crypto.FILETYPE_PEM, 
-                                                       cert))
+                                                       cert).decode('utf-8'))
     return cert
 
 if __name__ == '__main__':
     # root CA key pair and certificate.
     # This key will be used to sign the intermediate CA certificate
-    rootcakey = create_key('private/serfrootcakey.pem', 'serftest')
+    rootcakey = create_key('private/serfrootcakey.pem', b'serftest')
 
     rootcacert = create_cert(subjectkey=rootcakey, 
                              certfile='serfrootcacert.pem',
@@ -167,7 +167,7 @@ def create_cert(subjectkey, certfile, issuer=None, 
issuerkey=None, country='',
 
     # intermediate CA key pair and certificate
     # This key will be used to sign all server certificates
-    cakey = create_key('private/serfcakey.pem', 'serftest')
+    cakey = create_key('private/serfcakey.pem', b'serftest')
 
     cacert = create_cert(subjectkey=cakey, certfile='serfcacert.pem',
                          issuer=rootcacert, issuerkey=rootcakey,
@@ -178,7 +178,7 @@ def create_cert(subjectkey, certfile, issuer=None, 
issuerkey=None, country='',
 
     # server key pair
     # server certificate, no errors
-    serverkey = create_key('private/serfserverkey.pem', 'serftest')
+    serverkey = create_key('private/serfserverkey.pem', b'serftest')
 
     servercert = create_cert(subjectkey=serverkey, 
                              certfile='serfservercert.pem',
@@ -243,7 +243,7 @@ def create_cert(subjectkey, certfile, issuer=None, 
issuerkey=None, country='',
                               ocsp_signer=True)
 
     # client key pair and certificate
-    clientkey = create_key('private/serfclientkey.pem', 'serftest')
+    clientkey = create_key('private/serfclientkey.pem', b'serftest')
 
     clientcert = create_cert(subjectkey=clientkey, 
                              certfile='serfclientcert.pem',
@@ -254,7 +254,7 @@ def create_cert(subjectkey, certfile, issuer=None, 
issuerkey=None, country='',
                              email='serfcli...@example.com')
 
     clientpkcs12 = create_pkcs12(clientkey, clientcert, cacert, 
-                                 'serfclientcert.p12', 'serftest')
+                                 'serfclientcert.p12', b'serftest')
 
     # Note that this creates a v1 CRL file without extensions set, and with 
     # MD5 hash. Not ideal, but pyOpenSSL doesn't support more than this.
diff --git a/test/certs/private/serfcakey.pem b/test/certs/private/serfcakey.pem
index b8f098a3..62df0bdf 100644
--- a/test/certs/private/serfcakey.pem
+++ b/test/certs/private/serfcakey.pem
@@ -1,30 +1,30 @@
 -----BEGIN ENCRYPTED PRIVATE KEY-----
-MIIFHDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQIDIXPOFepRC0CAggA
-MAwGCCqGSIb3DQIJBQAwFAYIKoZIhvcNAwcECBdzNM1UPakbBIIEyOOvIAS8Yaqn
-OnT3weds96q26AV/V2SwIn45afgdx27qvqijcQEYPpfNz2L3/3P3FhUYYqw8SVS+
-/Kj/fAM7iK4kMDNIj7WvqWBBA7zg+5LGDkAwXfZ+J2+F/a1cPxekSeUj/FshyaJp
-eE96S4pBvyug3fgRT5joyAmLLpQOOkqc04RPu5eg7xnmzsrJCIRQndrX61Be/M6H
-JrLl5RYVKYW8s/vGVbNdqZUg0cuJSEGHxpUPEHc7aG+pgikgl57sPDgOAy2p6GTP
-IlYD/zpKK6lPfMCgz5pKUvMC5SRylg9en0X/NSWNi/xiWVP3MqDG53umODqofQ1w
-3tG1jFSQBrbsCfi0irCpYlYdqq3m2WquRu2PfPPXa5tUzVXwRhTLKQkcN+Y8v78M
-vNioNTEg5HsBcuG19jb2BlnYlDKAyZPe9skbvgJF3h0wZxsuODg7GuquhP8U07cG
-V7PrDkam8jaM7IdEt1GAzJJ7AUUzMcd+WaAMN5z4hUAuXEzuHDZBF8m0EN4sJl+0
-H2z+0IoVDDfV5WhM7sMhufn4JQzWt5KwKeasE0ellMIWtMVyUfCd8q6BKumJSbg7
-oMw0q+rtzJYPRXRePqbTGqKAmVIE9GeGNH5txY+0+2oKtt8ATBiXUT4HxipDoT1m
-dn/50SqmkyxvXjmyLL1WH9lgFantcd55KakGnJQmL4TDMTPHgioI8jr9xvOgUVNN
-cDXPEsWZ1Pj0Vv2Z072SHD3axFGeMW++fPzXDyIktLIgQn079a1bbn+rpmSSOTtn
-/sMecmWlgR4mQG9ECo1YHUtt98w3LT7dpxOBPJgpV3jYxFathro3dbJGuTBEvWGz
-5BZbDqmiN74N1wjEoyQ6mHkBUZ+FD1R39GivOlc2DQMuIQ9WeAB4pGq6oanN0xON
-LK5y/OypMGyiyI2UcJ8xYc6ZWrvq8wSI7GTWjZs9/cWs6WpRHcNpBYx6TzDwkdcp
-8PcSE9OP9jPOtZIUc6mf7eKjR9xBdua9tJSucA17j4Ie/uyWxKwNu3AC1YXIaNy5
-mgmXnhg99g6kmccN+AeKJM4fDI1ruA2j14bb1+klmr1jBgEqrr2ez3kqOapU10r9
-mfrt2tpwMi/NYsg7Pk2EZAWEyyGhotbXkOH/2a/VUtBc3qp2AMYhwQranFvdKQ6e
-w6A+an/RdTL2xOoWfqSEVwn81m/91p12xgAZfAJtwhXkGXkKBr5uvYbYqbx9Hdb7
-UIA9PxW/StjUN5atWYuxPbrGsL1jSboErkA8oXbSmVrxsksA/UB8dRAAOH5I/RON
-wfMcVvSamvt7ifzy6m1DWqWEQme9R5KyoMH976PRJaUEhtW3JRb9MuDolZY/g6Tz
-EYAJRxoeIIEWpO8d85dzFmfwjFAebhbJYspxheNzYKlpHc/LI1GljqwVE/rdoM03
-CfpE2UyLMHFbRM4ZjVQf3k/wk4p8DBBICBM5vFNOaTgrre9YpCU7XZmS45u0AuHw
-fYIvgxOvU4fR5JHZYx8MnWd6uCBSuhYwWG+pNjAM4QctmwW0t/lm53wMhjMjDWd4
-f5SWQgZqxZVjo77uj5VamFjkZzNFXyaGuwaPsE38KdtdmtpSyDigbYc2pmWE/VSG
-+PbXV3C1lCwPmDkPS9eyJw==
+MIIFJDBWBgkqhkiG9w0BBQ0wSTAxBgkqhkiG9w0BBQwwJAQQyDiZaGCV7AYkHtpo
+h1/p/AICCAAwDAYIKoZIhvcNAgkFADAUBggqhkiG9w0DBwQIgvgSmAJkt5sEggTI
+Wbht1A2StBWx6oJjTIXuQWszdDnqvoxuX0KdI1NVX+4WqyG48oO441rBp4yxR40o
+qpfOGuK64aPVtun5qHGLY3ciX60tUzihdVbtK2t52XSXPyo2bSrdt98zGumGRmGB
+l/+jyucEdqWrGJmxMYKJbEWmoxp4OpksQ0dm43Tdlk+LXlqzkoW1SCWrhZQrzZy8
+gCStRmPYGxcEVD86ARu/qmRZiKhvklyy7JMQiD5p5lpaTX/txocb2OO4ueebLsGN
+rWD+JI2OKhhEvnKfE/G6vCyFL7RA0dwZNT/AHBXxPurFRP2I7uMHmM1qK4AOYuPY
+WlWg572k94ZAy+7L0Sy9Y7SX5MRHrIpGNiShoyIsoqPI8ZKDhBrQJMB+MN0i3XdA
+CaPJkNXpWVB7Fefiwpjpy5Ec+Yeodxc4zXa5ukzhRIbhvhAwpobYHeogQ+v3YKVE
+t4AHgdd0dPwAm53jrUpoywMXfxHf4L++gxpIPAUpC1zUcbzo31G3dr+1CrPx9z1P
+CwAx3CpGb4qtmXXFFsphUVZjeYFvSUh4t7TU/43v5xAtzB3JJrVsL2v5+cRNrdX3
+lG43gH0+gosqv/BJE3LLg8dyVVgECX47Ich6j2kNy9ANW5obAbdmb6C+BvmMQ7JC
+5J3UyleudFg/lDeZ+nIrlrtNHiPpepEn8yR9rjWr/Yi9XwqIOzRegS+3zDYya+By
+UI3unl+EHJRZcNPYLym657mge8FFkceDF9tWitSvbFH32xfUo8IHy+mLRNCFNOXK
+Ly0Za+j5+NW3Zfe7Stc+D/KUnsbEH17t5cj5ZDc2zD3bVAdDFs0M1u/ETGbrQi3t
+MewcH/wG+nQs7UZ0V5bYjas6POgYCGp+OeppuLzTm9D+gTPvHtLCqXFHmcxu4XvZ
+3EzoDsItXmqVvkCNrMfjGf7N8WYlS/u/qIOP25O/i8/xXPSe6F8ZlipQ7nkQV234
+ndcbUvXS22QkSaoz0FAiDeK7G48Y7gc61igiGk9wIUrDaEOlL4K0eA7Fb8vmQFot
+8abigHme/MPLaTWNB2qSq8KMou708zx+BObgcetydoQfxNv3B34/FFSftSsMBu/E
+HCU7q47hOK3VDMV7f5XCAuJWkRLeZK7HSCLokAbabxe+6QxglnmuHwKYLwXF8SKV
+rFFF/qRB/IpWYm9BOUylyZyQEoNIH98KJoeSDh/dXLeNsiGgULJSYB4OGHH8Xbur
+rHY0kElZCPzrkKDN/h7X9QS6WggJgOqfEnvzZriXu/zCqpEMNTB6G2G9cHoOTvWz
+zHawcxbS7mO0sIEHe2w4xx724E7pnZeHfCaZjlC3N/RJmj3KmJ2286DqXZp33JmW
+BpuBOUyNNl57UuWblZWMFKI46mhgpik1jmx1T4KEspJD2B4lgiU8p7ILxaQ0486w
+V17omBKH0MgbEiOKpiyJ1rfjZZxV70tmBfQYgPFTZDbXUVFZ5qLMJbDHsMK93cwV
+Loz1RwGHZaKRCHwqQNHWzfKCNhex7C6Upz9DmcFYi0n8dc/zJ82+TSZbs0Hq45OE
+IVhFuwcny051DpWG+8+Zz10NahNXyrY3D9fpLUnJubR9ft1BsznSa2Qi8WRk89Wk
+tDcz2E2ka/wSVNbyGp2o93EnYPvXJdyF
 -----END ENCRYPTED PRIVATE KEY-----
diff --git a/test/certs/private/serfclientkey.pem 
b/test/certs/private/serfclientkey.pem
index 876d4b7d..9339fea9 100644
--- a/test/certs/private/serfclientkey.pem
+++ b/test/certs/private/serfclientkey.pem
@@ -1,30 +1,30 @@
 -----BEGIN ENCRYPTED PRIVATE KEY-----
-MIIFFDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQITwFbRLOzW/MCAggA
-MAwGCCqGSIb3DQIJBQAwFAYIKoZIhvcNAwcECBN0L8g2v56fBIIEwGTHVZKOAYzu
-QOlRaMhQMNywxHhDdL1Pw5IpIu3pwNN45nwg3SKVBav9180HheRHlL5l5AjxBr2o
-EqgjRICWzpXo+gdiWb7vALvM61mQGEj9oueIkNYHCAjcWMlWU+VGqxO8wESzZxPn
-JKxGAuyoqbVlVYE1WcBK2V30Fgm1AxqXoqAm1lIUZh/I+mJsLLHQvYKLkumCg/K+
-vTnTJEKMExMQ5qO6uSbNM8oGZTr4K4Rxtk2FnKlRGLH2Nk5R4n8A+w+hKyv3XPJh
-pKrD5fta7PP5/u5IEwgfRxrRi9wWmlkZU4d8RPCiRvm1ufc3GfgZ7KvPy0+/b6DT
-SvQkmWhifqZedU4ZLZt3lNCgAgNMRa/1harBCAAU4kskIf9WKwimMUgRhSQq1e4L
-hDm42yJEJzVjUhCDWP0BlEV5/n+eATECrwRIdm+zsXsMW8G1kObEizy5JBGQV24l
-pId7ad9+/maHGZjFGYzNmU2uJ64X9P4dDUhWv6uBRLA3vNtrgCw2b0XuQnRJ5gBn
-Unea/h1A0hqS3gVgcawXOqriaMCATAZyPO+ws20EWILmc4JqmXCMKFoPOV2cDU2E
-0TCYhL+mbrwZAp71LaN6SdZUxP6ygAS56puK5ZfnAvLj8L7N8xQC1otLAjp+D9FC
-bMc57fx3XeBC8NvzYvHZ46fBNaQpMibWGme60aePHkjU0aT9gHPv0/2Y8dhwh5lu
-XB75nD6/wc22AziVprMxr5GmcwCvKB/q6Zgn6llxDs2YRoFwTEZOAkeiIWu5nsiW
-TH9T8M2ATi/dKtC8i7gVezrhEoSfkifc4Zmh0esURkF7I0C49FeriK/6ttoBhGSi
-3TlXSTe6ynQpBwQaHz8ejQj0PMWd+hh0t01evGGNY8vgtr8dHz3HVCbDmsaxvPKw
-RLYi2cuN2I/UOpr3441pETEudJmeeyuwD6HZWfD98zWhHrndOhyj3LAl+TjJAMsZ
-b2/kbqgreTCtTY6y/TsTYWq1DzVDIqoALLK38dGnuvLv9RiBwkMq1qrvOdqsqpZr
-FqilDyFal97NmkUigtoYbmh4o0lWeRtXfQWruot70cc9tXcsQDWfwB2WLjQeIG3u
-mg6cNmAuULB6I0HvsuK07R24d32g885fruqTTqcNit2EfmIDOOU8/lSDbRlpeUAY
-IKh4x6ddTx8npI1V5E7GsMtJMB4KrD3y/YFvruy/JiyfMtnR0LZP9wF97ReqjbvL
-iaJUrDml/ow1Ja3VkLGteA0QLcHBQlLxe9JSf6SBBEhpvzAU2aU+syqvQr2Dd9oK
-C6PxKBYzxMliN2cRx4MLMLi5tXM1EmhZQSp4ZKXLKuWwesAaBBYP9wsfUFU+RBIm
-UHVH9Fpn524EhbKbf/0iOlOgXbdPA9PnuhPbvrNYXlR4zASrv55ngKNGAUYRt+t8
-V8yh+aI850tUfNayQQGv6C4CQCrCICVMxZp7tO8DRO7R5VkD5nuxwCQmPfSPrVy9
-MrJ3WfLMIQfDCSuWNNACTFbEuvEjbKnrhyiWvJUtw8I0oSisg9ldj0aNJ62eXRJz
-S/Y0sH/1qT1R8TOuX6EQSGamGu91MBAhczOMuJuRhkMdkxhFDFmb+TJUubdqht/l
-hubit4do/HY=
+MIIFHDBWBgkqhkiG9w0BBQ0wSTAxBgkqhkiG9w0BBQwwJAQQeVYw8TXMY8qPh4Lw
+fDVzNgICCAAwDAYIKoZIhvcNAgkFADAUBggqhkiG9w0DBwQI0d7MbzGmnG0EggTA
+K1tJ3s6yjoxbQgKQV7sB1Z0oHsXncztn17L8WBhXwqMPYv1dYdsHczUncp9atnp/
+5dcIPZ2Rwclc+8DyG0/Z0pW9g5Nv9dSxw2jpUjvBC4wHquyo76rIAunPZQCc01nh
+7E+n7JWmL5nRQrBjHfJ6j9TfDHCY/nNGNMR1FQGCB8A/scXUzowUagMYKE87u5kF
+xNXnnKd66qvHNvQEaoJXFDmxcMj6oM7voXeCsh+TgnNYmb5ypa2jvSbkoQKmeIzw
+oOVp10gVcS44dCRLw5qNFJFD5Blyx64N7rJ1Pgb2Gpj+4lsJCwEhT+/31SBj0aOw
+HtsD0JnAobhjVo2zYjHjrTXzi2JYns0RRoWgA7vQAIOcSnFsEfzvVfQsWch/lcaN
+QVrpbPY6pS36U0mGeLNwwaMyZz79C+nhbghmAl9v3waIODfvTIqNaMbYdp0nYKk+
+/P/ztWTZDnn9O7BnDohUuvtXVfk7xNKZASUI7QcV/mKxgEr+yFoLdg4J6LmIP07p
+tw67iFlFypyoOFYXDkea0zFxtUGTdWqmfxqxbYUBOJF18pnJ4B/RPW3snCLMjwC1
+aFD0Ehqf4Op+wI0ppboiCz+L9QcdyhSzAE0uV1KSv1jvhbOk0B8GpJJZiWhUgF1n
+lg+rZD3vX+/INno3IM5zfHd10QbBUY3BVhRJdUv9HQWhtw8A0Gw0VsM5Ox4OPV3y
+T5vJbq+pRQpnPY0dqslUwvPnODWouSq0olw2b4CATd421sWfBrekG+ec6BQvaZY2
+ZhMgcMym4KJVrxTU+BJ8obqeg+vNNwO6kY8sPy2KzEHZx+zul1AerYCC7hIC2xmU
+miJZoHLt5p3ncTznfyRaia8f8FYZ3LJhPeIJdJoGnvaDLCjkzu0Rmw68zUTovojD
+vQGony1Oliz4p4RY7l4NA4TOdRGTLbXGRkZLny0Qv//nhOP6pcnQu8JYea7WITmN
+uWTKQNdnDv9uk74JNuHFfHA+5wdQ3WVA/lrqt3a1miZP+/oOEOYipIxhAf7kNHD9
+Ai8vIw8CGIIPvIJI03GosyqP1hyGFy6KMjrPTcXBCwcWgB4rJxif/tRyeMswxjPF
+GL1eedN/pcLkg52yTa32JG4a+VVFom5IvmGOfv9LFgSFXUULeGVoNIRvjxkwtYCk
+G6ok61cGi+2kaEFAkFAa3KuYibIQ+rPxss+E7KiOjoVaBwrp9QAInjJYazEG/Mmw
+qoaDGdG4DBdj3WvlV++jHVfb+Iel0enmkO1zYhbj8uOU9+1/R9t6k7UlzHXERM+g
+WrBceX8OWnk1lxtmfu3luyzhK8uiFCWIuc3cwoi/ahab/3LzMeY2FOHm8g5KIeAy
+n3vstvhw2AIUkZtkGSTnva08Fs6Ng0oYErymN8am/FMun/Mm8ScslDGmacetasUK
+Wx6u2NHv2drFHPJ4tY9gHrZ1HanGQK8nbqs/GP63JhpHqV1APFfMfAICDz3QLIBa
+rMn919CtYyq9d43g73knjazwrIm8vJGGveP3eyS4bU0ehkLcD3LQrFUh1bim9mFz
+Ad+i72XfbKxoPkIUKaXTlqv/e+r0UWolwCsmk/THthnpkLbx9wVRfUHWR0OLxftE
+tYuSOUpif2UL+F1pm9g44A==
 -----END ENCRYPTED PRIVATE KEY-----
diff --git a/test/certs/private/serfrootcakey.pem 
b/test/certs/private/serfrootcakey.pem
index ea32cd21..5d050d6b 100644
--- a/test/certs/private/serfrootcakey.pem
+++ b/test/certs/private/serfrootcakey.pem
@@ -1,30 +1,30 @@
 -----BEGIN ENCRYPTED PRIVATE KEY-----
-MIIFHDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQImZo/0/saL4YCAggA
-MAwGCCqGSIb3DQIJBQAwFAYIKoZIhvcNAwcECMXCgDCTnOq+BIIEyFocpcOS+tZf
-vNBetrccxsiqjQI7z3modAe5qKNCyDZKG75ujeqocG5ug9vAR1vg3Vzg4uTO2g3R
-T0DhMJ5nY2ABM7/2B9c17R5vdkckOr14JrEZioGvfWDLxdW/psXBZyffptY2s9uZ
-c7tFKQqK/0+poyFzC1+FtqqZe33lg6W8IW6t2NcN1T0jbuqxKzL3bu/kRI8cMEN7
-MjolmmdrjaXfW32Fs095LJhKwzvD5oFnVPWISXUTIBmH0WatG7gqul7R79bM4Kc5
-Ab5778jANJaKj5s7nLWCFnP/+8X3TwS9olaxvl1kcrwsDMrksMc8tCiNgk4uhNc5
-ik0qkpnD4Iw6qrwTTHPoHvDobliHrsEV5Mc7IOcI6I7lNyGYD4dVj7WTRqydTrzt
-sTxmLLuoxKR7YpaidV8IdN41RELm2fp0SF1vma0AQLwpLr468baZJ92rhFAQ/Yp/
-OS9kls1WUfDF18rvuYZKKM4hymijZDMNh8YUxKa5CoUDjGqPMAmwPH1MA4DNDQUA
-CLb1zUpEd0q8EMdWGVchQoIWxlsoR4FYyA0OnGvgNr+G/k0WTewOeU5rB3Fu/bI4
-ZUMel3g7GSDaBz+PFyyxd1cZlSTWkogoM6E748Zg//LZ2sxMS9zCfG4EZu5BQnpJ
-lmdJbft97bzWESrJMUr/xeuo0MfsvfaU9hQfiMwYpcU1doCAqGYwPgxjn2TMCbSi
-CQiC0IYG66UXs4RuS4R+rY2lEC5xYXN8/4HvLMBbNXzzZaMKAhlilRbIPzLaLC8I
-efeC02mKdiTMZ4EaY8bZyGhMzGMjk24obQiYQVnb/27KP1FcPildOW3bTIB9VGT/
-hTxrScNMx+OIN6lVVRuWny4E/yOAG7pYmghHOqlN6KLr82PU/Vo1GQYHDwDuMJtH
-D+7nK0ihcLZDI0LtcLODymNyozZ0JnJZ6GYgBxX3dpDdwXjdds1ERGrpTpulZKGb
-s3uj1NFSleO/qN8G5WG2p2nAndEo0vr+8PamEh9uILE4KPqZ699HXF2ATqeZ9CI2
-FJDSjMQE15MnyrQ1ZVI1/Srkh16sE12QBVz/vEfOu2HUTZc2KTZBDfnxNVZBUgx6
-3KaFmpqbMlxLdZ2/d/9+HWjq3qFwWOavuQ785dfgmjtiku67ksDic38Dwjf3CEo+
-t6hOC49m0KDodkrlpNQcnx4zS7yKancgyAnUgECy+/exZ62se0SJmLAKZbcF0bg8
-3LJjkqzZzXqJY3Ii9X/UxCQVHgSVGDKUyX3IpBcbFIg4hwtwave5oGUueLWcVvwJ
-Yq7gKZlvyIzZyxzwxpBj+XaJfRkjuIGoBunSKK+BZt6ZdTk6DFdM19MUWPT9Rkl/
-tGG6EwsEVrV1dSqmmyKLT/wP22nP8rToURocquYfBvH7UO8qNTXM4savhki8TNyq
-vQsXK5HY2BjLSYe4+59GgOaZmhZjUCqB8ZNY0DkMo3jn5uUHaU/1bYdQluER9eqW
-+2PChCucnuamDiWmkCwx8pNd1AnQ1AdVbsMN07tEPZo5I3LBCVwJD/lezP3yB0A1
-0L4TS6yWNldrXSG9JsmoaUhLer931Kcv9pwbzwWKOtD18EQIVTeaeTe+ahxD19y3
-fd9Hdu90mnCXwD905rVMJA==
+MIIFJDBWBgkqhkiG9w0BBQ0wSTAxBgkqhkiG9w0BBQwwJAQQBHPFNjWuKmxIUj/m
+MDCB4gICCAAwDAYIKoZIhvcNAgkFADAUBggqhkiG9w0DBwQInA0Pn2qwyt4EggTI
+DfbAZqVk3B2ohJa0qmvMm+fHsmV6cgHBJ7NV7fhBAXfgegXok7abM/0QHGR95z7o
+l9NLYGA1Wy7s2LYjXYHs+NEp9PDcPQ6C1tPKzaBa2yMb5faEAD/3A7y2N78+Ycct
+u/aCSBFujVKFotuuap52+y3qs9EYP4Nc3DNa7E5+/f8RaxFPe7lro7fzsc+U5jUf
+Tg2FcpBhuWpngQBoSUtljbfm9iGCPoNOvLmd++aCo9u7+XDcbYXlFOGe6kwqjS7a
+c+60LLAYiMQXKop6rCg9EPcItcJiQikpB3inaAfd7ObZhCJwhoRz497SxY1FR/XS
+vaQ7PVUZFB3/psQTlnbGNpPi6jIwal/45rIURukjNvppEPIvPyxhVg9ICyD5FVS6
+gfvsmpWsrdS6OlNsX5A1nqA9Ny0MfJ/Ka7eq+YwPJ79vx44xzApeCL17+Of8lb/J
+7VnSKQEhczQB+CMshAq24ZraoXugKgYe3Rt4VgMGuHvR5rG6UZ3HyFDknxnFcJjh
+p1LnuSl3cpfT0zyaGv3gWle57Hq7050/L3ugD0XJG76+PJylioCiIWwtkrA98a9t
+z9EOWJfxMPNDmbEOoWwpNa6zofBNJYBKOgg/exf6tnfp+f/SXhOPUlF5UXaE5C1g
+HQTjD8/DO1jAfYLGnLys4bC/O3i9YF1Ud1b7vpqzGqLCEEbd6TLBRgDv+jL2VXs4
+N/O+2eGM5hZ9MbPc+KhjrRZIr3e1NchgxZ3eyZb9A8CvzfKEHrSppntSmwAe0Hwc
+vI5Vmcu9yFl8+3Bz3LHgSnGrXRsFkKDtM+ivxXRiOQWJeMLNNCt9jKjz5V2VZWmb
+z6dzxZ6B7ZAu8lwHIemGj3tDM2xtsGHPdXWNKXAc2e145JbqdoYzr283fssbF4v7
+IGNiJPKT2vcnO5O+iNOTU8cncaXFe9wtKKFF4ikb7nEvhO6OdKmbivVKwvLxBeE+
+8oCFDK6kqjLHW6vPMnwD9ogtXEJIhgzQhQJsVCsVeM9NXczBBbtAeqxj14gq38fC
+ygTakut75qQcUPhKqFOvdyEBSnN01o+yGDdRKihCItEBgE+iwMU6pifP9uzZgNDN
+KCOyH/2wLDYRVF1pHTXRJj84p5UG8HrVM1NAIHmRlJFJ8QTv5rKYSrQpM0hsRZjR
+u7chY8PQW1q77u52MZ1dFYTtVoxiagLP3y0mACKYXYTrxJS03EBlG+mftjn175eI
+HGhK/ohyjMtoI06KkVYNBGUTz/PZb6f0WUd06ep7zrB0UvqglOzCs6Qw7ORwxhDd
+hIWQXaM7NlW14ssnuF+N/s5vaYcqNoq+jCkM+buDF8ViUDQmUKb5dhu5AKh+5+rb
+ixKQgE84vmKqnhUwvdO5XPC3rv/Y6dHFTu5St5l1Hkn8yTQo46X/hqYQ/3vZl6hZ
+0fwoPW+mp8SDAHCQsgm388QExjSJQEnAeFXiZ8zkWL/tfQKZ+0tSZQ2wkouZId1k
+Fm3xJHhC2GgcsKmPiEMjK06M69ofVeEH4f0NAmIM4ZKUsFkMVCvt+vMuzRioLiDD
+EEO4DLBT7mYPGNwnzO1Lo/7viRr+8WlM2MjU64Cdcxvn1ol2lCV2uXGY+m6ElREQ
+K/0rSGvnvXDTypMfiY65H+YumakJdhWa
 -----END ENCRYPTED PRIVATE KEY-----
diff --git a/test/certs/private/serfserverkey.pem 
b/test/certs/private/serfserverkey.pem
index dd3801ac..c7eaa52b 100644
--- a/test/certs/private/serfserverkey.pem
+++ b/test/certs/private/serfserverkey.pem
@@ -1,30 +1,30 @@
 -----BEGIN ENCRYPTED PRIVATE KEY-----
-MIIFHDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQIGJFDf32EGxcCAggA
-MAwGCCqGSIb3DQIJBQAwFAYIKoZIhvcNAwcECD7lJn7uvJmOBIIEyEP/6D6L5ddd
-I1xC8yzBTYRuON7FnvpUpTJEsdQqvpIfkRAI0wldMzzyIoA5ypf/W3I0FIaxTWkL
-BMGfdVV0+KhX/aStq8Qv2wEfP6OCGDayjEHzkOIm7KliUfYJOSK7hWEB5mLGx166
-u7zacnnx225SQcurOYGQ44VVnUX7PkluJGVXXNwrHiZMoyx0SL1JPM8V2Y27n0HK
-zgg3Puf3bHDESHEq3aUGrxwsGKmC2IUTCDDlB/r2R3IVm+XIFMTiMY7xq/vkASMt
-IRJhwtDp4OrW+Iq4v9TXAG1Bpgia1gO5e1ZAcQm38XXfESHcmmbbiFKfuGH7GveS
-PvzQ2Rf3KbQORhgL/FKP951iMYC94r6/oC7jbc3nFSX56jzLQgD/QIxZM3tTbXjP
-qEcvUgglA368zJxx+7JmRRuR9R3Yy8RYJqe4Rx4iVGxK5lrfcnFR8b7VcLMREDtE
-P80hcZQltPJ/xpacS7H3z8OWu4Bg85j6yiV0LdrPdQQiwbNaLE66RO6wZ+Y+L3D7
-mivo6jQAwkBIXefYMTGOk61Cc/XzVZjWjs/K7WNOEEGNbzrPczbIPZFBaaVxtys0
-60/seK6+wHCLleKN6Y8zjm4pmpuKtQKBCF4SM+d54HFfvg7RG6+ql3v0fowC6nhp
-AvUJGbXUtU5FldEXFOxQaXb2cXbya2CiPMyrqruIUNDgnfH2HZc22M9YxDKP99xt
-3FrLYUOE0KFB0KgIBvRYIsmprreAW5mZLIVDL/3o47ym+8gy5OK88XC9qRmRX2oS
-YW3rY2g7or3ZZxvaULCIjbj/4B6FPNE+Z01wpoeRZXCjnkGRaoi4kxTBbiM66fpl
-V9TgFTFlRd4g/r55Xh1qwo2UlhYtvMTFoIkEPJYZH0899B7YxLUrF2MvZ70tM2q2
-g2DrI46I+mcsvsKHD8zyYWFctSotimzw0ZsQ2uPWthb1JowA0GhyGspzjn+rVlKU
-Iexx3ve3E4Si8SRtAK8vUDIMVcGvIwP4YbW/dyClzOgEOLFJWCeQMEqBFGxY4sxC
-rANcbJV94Ba0K4pLmuNOz/m0MrdftLbxTchXOYMK9yHM0zC0y6XrWgg1rVJImKUW
-tHWE/K9Fm1BmQYasDaFN2c3uzx3PtxQ06iYNxHytK9XmLW8PjFXJbyVXNkmMuRhq
-6wLoLRBOPxgTV35zOuhWEOuLr5apNB8faASvaJeDwvf3E9GxVUt/UpUj/TL9mf2m
-1itKk2az0XSEizgQ+TX4eZVs8cjWlwXC/Nxv6CvF6eYm2PW3wTN70x+UiyVKB46W
-YryyRIs/2SxcgWptJ2duKCpvLprBHQgkmyaabxeO4FCr+c0i7QRf+/hLbAJfxUrz
-bOHwXi0cQ5nLio4xDd/rhRSTJ55EcxsLJupKSOt9OzJSEl+WCt4DAnWsFTKunuuA
-IaEdjPFVoAykzTOpzC1ZJPEOAEwOpKbqNA/mcj8VywgqGEIcYiYDsHWf6OWNxd89
-OgIWhVWrvhOYq6MYNHTaYZlEdTEXrF2vY/ZRJrxaXp8ew9kvdzibNvuQMc+Nk/BQ
-uaPDeP0eLGV0xQFB9we8ZFimAtO+2xV/sDqzDCTMe/lUzj38yYUVjwl4bS2UhByn
-IZttXz5GF3D+BemUB0dDVw==
+MIIFJDBWBgkqhkiG9w0BBQ0wSTAxBgkqhkiG9w0BBQwwJAQQQQqoCeXfh006Q1IA
+MnzsjQICCAAwDAYIKoZIhvcNAgkFADAUBggqhkiG9w0DBwQIsZbdgNmiwykEggTI
+hoSy1jxmMrlWtzzl73mhRdbvnqD/8SoaFHUv0yFuNOBLx/RPQrEiqnoplKH2faeJ
+wJy6cbjvV+rNS4ZnYKv6cxhSYL5nqsRIK3iNX/12A+/TZS8ZuifqSBsPOW77qlwJ
+ckMVGtVRShaK8wzJaBVZlaH755rg4ragJVBOm4XhnncOrRwm6GgIIGOE1P49pKMy
+6hxxvi5EkrYCgaHAOP4z9VfFb8afdZD9sXXATG9jnOMXnzdclO6KXME7ib7Pc0Gc
+H8tnJwqCZp20GdFqTll+/WvQOVq+bhFwIGDXiP9vFkmOdFRJY9Cs8svp510C2oWQ
+ZYuwVGAHNSndyOLURVARO9vNTnitJgCR1Wg8I/NELkad3D9fjrHxxQbhbLsPEw/s
+X0xtWu4/mAbfCNaibDq23TMfgeCxadrG9igIv7UH37O4GtQVIk3jIMk33zA8YxXZ
+PHYSb0gICtOJkrAW/JR8sc7Hp9O1NvsvbCJwl/vkGenJtfh+FdsExQUpH64N75LT
+er/2Iikf2lZSidrTVZrKQVaEYIQIaDO3nso36IAxxkfT3kAHRy2lWuLqV7kzCwj9
+Wzp6vv/T813KXXf2iKZMWXdHWNa2sKBBPYUt2SSeLCt+LOYfDIA/VrLw8FXoejwG
+dUHazgUECXWVGNJqsytG1pSP/GIgztdAETyBXWGjgNFIy/5VnRZzPsG7t4VS8dsR
+gyK2agCUF1gZpSJxjeFSEie0mN/n9v6ga6W7CV+y2S+LjaeElcn+UvPxOqbucYQY
+oyD3tB1UXdCgYuDMdyF+KKASANQUrYLMTVf6E4PTBTOEEfQVaMAlJ2r41QrpfKNN
+myo34FB7+2KF8WPuQpp/utDQVh/ZnpsouIGWKt7A66OOIBrbuWsasCH7n6a/4qIa
+2LAG5CQuE8+nyQnQiJvqL0+Z4YXzGclJZtod7bgSv9Cf9vjhwP4sADX8ABY0CNZ6
+oRGE/zAO24CM28h+rofnS0UnVCE2Wxc6kj3RJGPdbRNwXoxv4MBPOeCgLoxWPYzQ
+J6lPYgmRgk5iBQcHs/4izZtAMLrf91l8xrV49DeW9mI8PdScOJ4g+Sy194jJ2gdu
+JcXxlhuH69j71hwGEZgRAR+P9jpECUAjGHwUg++uCE4xvrwlcMkAMLMUEG14Rmy2
+bJ3ythEMmuY3J7z/FkP1/+9Zv4kEvfOxHbIuo5airj1hir4oaxvKV0ZLKksVaKJY
+u1lf71PWmZ9ro9VZaIuVAeHYuN+Vz9MuYP4FsSMEuQ3jhaUfHmPWqySGNVbfrfCr
+IJxBuSFoh89/TWCq3BoBlgnKhunwJ62rbYD95TPr57N3Cw65AY+jce8bc3SKpV5C
+ZfiAwRck3AYl6nMzVPc3IXROWm5NQaF+RwipTPwqUNuFU2GB+MxvrtV1yCH9I5Ky
+zkx+tgBLdJsB9HEg0QdWkJ6oOp3FyKWqdp3m7g2HSleQnKnhB5QT+qv0IMbnnwrP
+CMBZlK8pTuFVJgH59vdBKBHV0mAvVPIA0lWiWJyJqhco6BqIxyu/xHyi6iiYCdKv
+M/hlvkg+ygbQo40WtgbjRkJi2Bappb53+n9PAP21abCVsnSiUN5IOEAHWmdsZXrZ
+JHT6EWlh5ML4pzRzfv9IiDJaNXi8hApN
 -----END ENCRYPTED PRIVATE KEY-----
diff --git a/test/certs/serfcacert.pem b/test/certs/serfcacert.pem
index 76e0bbc8..a6af7a21 100644
--- a/test/certs/serfcacert.pem
+++ b/test/certs/serfcacert.pem
@@ -3,23 +3,23 @@ 
MIIEHzCCAwegAwIBAgIDAYa0MA0GCSqGSIb3DQEBCwUAMIGuMQswCQYDVQQGEwJC
 RTEQMA4GA1UECAwHQW50d2VycDERMA8GA1UEBwwITWVjaGVsZW4xHzAdBgNVBAoM
 FkluIFNlcmYgd2UgdHJ1c3QsIEluYy4xGzAZBgNVBAsMElRlc3QgU3VpdGUgUm9v
 dCBDQTEVMBMGA1UEAwwMU2VyZiBSb290IENBMSUwIwYJKoZIhvcNAQkBFhZzZXJm
-cm9vdGNhQGV4YW1wbGUuY29tMCAXDTIxMTAwNDIyNDQ1MloYDzIxMjEwOTEwMjI0
-NDUyWjCBoDELMAkGA1UEBhMCQkUxEDAOBgNVBAgMB0FudHdlcnAxETAPBgNVBAcM
+cm9vdGNhQGV4YW1wbGUuY29tMCAXDTI1MDYxODEwMzkxNFoYDzIxMjUwNTI1MTAz
+OTE0WjCBoDELMAkGA1UEBhMCQkUxEDAOBgNVBAgMB0FudHdlcnAxETAPBgNVBAcM
 CE1lY2hlbGVuMR8wHQYDVQQKDBZJbiBTZXJmIHdlIHRydXN0LCBJbmMuMRYwFAYD
 VQQLDA1UZXN0IFN1aXRlIENBMRAwDgYDVQQDDAdTZXJmIENBMSEwHwYJKoZIhvcN
 AQkBFhJzZXJmY2FAZXhhbXBsZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
-ggEKAoIBAQDF7F+MfBDiTD4q/9XO5A1m/D9ZW1/3zgSyXldVrxb4bHBty6EKyWtM
-PbGAENS6Lt6JyuzgNtX9Qxp2slO1UB6zZS2SE6qMw81V/td4+NuyFssQIjMexINx
-cmvkg9OOOxEnkWVEpzf6cwHZKIPnT2Z/jrAXVIc2eery+fBDQ9qncUSmWMKKASHD
-h9DN38DqHdxkwyFhOpo3ag0ARxK5kNFzn6T3jXo2c0AC+eFhqTW04ZxQ1Lv3Rmdi
-jSACge/0DcWDhYpW3hSpNM9RlggHn48s8NVqN/YbQ4x3qk4zGLSgFXuVKcUTIHy3
-3Din/Nr2VNLSVK4Th4KapJOKO59qG1BxAgMBAAGjUDBOMAwGA1UdEwQFMAMBAf8w
-HQYDVR0OBBYEFBX4uVoH+c83XDA765aLBA9CNO30MB8GA1UdIwQYMBaAFDd9r2kG
-qmu3sBEddrdQuRXCMNgjMA0GCSqGSIb3DQEBCwUAA4IBAQCY+TcCh2rGLv7+rT4g
-PelB1U1xVVgMp7tOLb56CNJfEKi/KIVYJxNMwyivvNQgDWcX4TCoH7WbQsaSVTyB
-sz7w9udD8U9A4urz3hiTRTBXCghzlxiIggAmj7/E+QsoxF7QX0HZnGwqqSVS//rc
-c0G3u/rzaWWlzNHJDT7TofT4qgRxO8oz/rTH2z5V0c5oH1iVXlSsu9HduxVseV/M
-K/3NpZ33cj3b/eosjnTYSbxO7OWEydWHvi5pss9Pb2GzyFpoDiG4u62G7TPvHwG8
-WvQ/z7bDAcikrDrFr5xjtEbeUbmMq2xTRHqkbs2cENUNcJoKZypM2JNaVPbXpT24
-+3bJ
+ggEKAoIBAQDKn5OvUXA6Bv8oU0QzLiJMAlHPREKy6Ev0Zgl8KIVEu7FPkCEMJ7FB
+oeISlIBZHY4c2zRXmd4/64KM6iGxp/mvFymD5AP8QNsOfPxc6kZUwh8Cfib0ps1u
+E8Y6OFOD86BO7UaDWHfzh6eQM4Wm/hhjOaQZ19by0a7NBJ6cYs+8v4Tz/eB5RCWp
+m0Bhuau36iYel6oaqkJBy2gJScD3vSA4l/mzfNSJQMVNwgI8J2M3S6WHh2Eit/JG
+yFZVZm1XYD20f0BY5xtg1ffkML2+M0I3lx6Q8D7py/U5FwqOl4EMYUbP2ihQEQLO
+7Ip134n9JnfWsXT/L8iVfuYa3WeIo5LbAgMBAAGjUDBOMAwGA1UdEwQFMAMBAf8w
+HQYDVR0OBBYEFElBK9GXOGq55y29GBTbuVOripT7MB8GA1UdIwQYMBaAFDuAl90B
+7Jw3KHINNJ2OtV1Y6Cy4MA0GCSqGSIb3DQEBCwUAA4IBAQAQCqJLFmQ0N9u3Akud
+LrayjzaH2yqi+xT68I/rgJ/NhHD3kpkCYuoulf2K5irmPNS++pv0W14OyWiB3wMY
++Ti+eWQ/hDRbTrbQppPoK4eUe9Gjt1AFENZgZfs4vR60hTHLUz5+GRIMJOUTg66+
+3ulU/6LbBaiVMFikRGvEbJbPlnsLdFjYZX2LJ2V74XqZ/MmksT4Bvx+Tv404TsX9
+39rlZcXOcwAYqMuuag2OOzAOWWJgHtxAKNdasa4RFKIRAsxU3ZeDFCr9hp6a7e93
+6Xi+Ii84twk8D8/qwHvZ/6ZwSFHukGXySMJ8YS1VR1wgCE2W3dJUdp4noalvJBQv
+kzTt
 -----END CERTIFICATE-----
diff --git a/test/certs/serfclientcert.p12 b/test/certs/serfclientcert.p12
index 091eb7f6..624a7118 100644
Binary files a/test/certs/serfclientcert.p12 and 
b/test/certs/serfclientcert.p12 differ
diff --git a/test/certs/serfclientcert.pem b/test/certs/serfclientcert.pem
index aedf5888..97b4a865 100644
--- a/test/certs/serfclientcert.pem
+++ b/test/certs/serfclientcert.pem
@@ -3,21 +3,21 @@ 
MIIDyzCCArOgAwIBAgIDAYa0MA0GCSqGSIb3DQEBCwUAMIGgMQswCQYDVQQGEwJC
 RTEQMA4GA1UECAwHQW50d2VycDERMA8GA1UEBwwITWVjaGVsZW4xHzAdBgNVBAoM
 FkluIFNlcmYgd2UgdHJ1c3QsIEluYy4xFjAUBgNVBAsMDVRlc3QgU3VpdGUgQ0Ex
 EDAOBgNVBAMMB1NlcmYgQ0ExITAfBgkqhkiG9w0BCQEWEnNlcmZjYUBleGFtcGxl
-LmNvbTAgFw0yMTEwMDQyMjQ0NTNaGA8yMTIxMDkxMDIyNDQ1M1owgawxCzAJBgNV
+LmNvbTAgFw0yNTA2MTgxMDM5MTRaGA8yMTI1MDUyNTEwMzkxNFowgawxCzAJBgNV
 BAYTAkJFMRAwDgYDVQQIDAdBbnR3ZXJwMREwDwYDVQQHDAhNZWNoZWxlbjEfMB0G
 A1UECgwWSW4gU2VyZiB3ZSB0cnVzdCwgSW5jLjEaMBgGA1UECwwRVGVzdCBTdWl0
 ZSBDbGllbnQxFDASBgNVBAMMC1NlcmYgQ2xpZW50MSUwIwYJKoZIhvcNAQkBFhZz
 ZXJmY2xpZW50QGV4YW1wbGUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
-CgKCAQEAo1rYJesqFYE6VO7LjeGKBeOBZDhCTAC9a/Qaaz39PkFbt5dNF++NHF94
-VOt1KhomZcGx8Tlfz4dcSkb8/6ben9IXu0ZFsWY+Gqdi6G2UwBlmLTPRYGrJen5Q
-4ySmTEAoNlaIcvatCCgZ+5Y/6s4WmAwbdbu6nZQ+jR6skMqmtwW3B15K/Se4z3kw
-BIT2GOce+ZmGE7wlVo/Omg5VmEDSTQM7Rnt+K11a8PEMoywDnrIlfio9/kHJ7NOv
-MTqpekr+7/4Hyk9lVvqhWTnupCa1Fk17LG1ZAVSD/ybyVLsT+XPtWkLFnJsLaEN9
-jMckxUvQs/mYBaQj38h3NAkyjvv0TQIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQA6
-fnSxE9db7LRFauay0I1gvDtzPvb2SsUDQv6iPNPNghKBGFA9amXPjZJtf9fAlT6R
-JkDPOEQ2fhz3h+0/YMd68JxlggQ7SKzbejWqXlxd/ANH1YjvlTrPWPSYDDtNCEu2
-JkoqzCta/Fhigq2AllQxkp5EYgZmSJ6S1R8dvmDI4tLbUjr+FDwLK8qbjfSVCOIF
-g+GtpoT9EamoiFvGzXhE/AHfAXX4N33zp6nofyJA5SaJma0a3tzXB8KwhKPzusls
-z3dE6H/fXxRIj07fLQC1NwAYqeYdDpyVXCWBjBsNdxFYFE4eC0t0S8+UvxLT0Ce3
-u/a3YVPq42B9rcoIKUwz
+CgKCAQEAwMFdSiiRrVKKE9uwwOtSSHa88sIj0hakI+lnQEWm23FgxWPt+thv5GQb
+EDX3xbTOyBrWAE8e2icS5BRjwslgoZ39DGPPtaL+8ole5sO2dur8hGV5xogDORQJ
+p4fGAzA2nDMsWqMYTl0Yro50g1JowCb1RTRZ+1fbzEDpCgvu9jDSdBIBJ3jz3nWR
+QMfA5Fb4GplhAkL5qZW0Ddv+4e+qVMoieuP6EJGhW+X5tgTfJpq4WUQGKuxiqEan
+L9hC1sb1UY1spBLWmwKHLoJ4MaptRH+U2X/3afjB7SgNQ0ukJiPkkcjTF1/TSe6q
+/VDBsF4zDm8qHK3FK4kb9PmpxIq84QIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQDE
+2zmQl/FqR9tb0yjuDY5MVWDJwp8fCGnXNcCaG6Yg9sMfH73vYJARXCgICseAktwc
+zQ5FR9J9ByI89C6br/SkH+AQSrwwNBWiT4XDcppcyb9H6yZ1QvLczt/vr+QYYqub
+Ovii2T8JaY2wlUbLXbctPdMV+/go3PtozZOG+ceVJ6hgLPlvvUi6+wR7hKPMWJKU
+y+ecHewZC23c6nXbcRXB5JB43Djuo6FYU5kvwg0e6RLDaAQg61VmbGiw5IPlJLhZ
+ojefro68M3s6AtwzCxgkHnoVu+Zf5RgX/ss8yfTWuuqfgH5TXjJPyn0DiEASq/aZ
+yH4ejL3WCGFwVYMxb/fC
 -----END CERTIFICATE-----
diff --git a/test/certs/serfocspresponder.pem b/test/certs/serfocspresponder.pem
index 6ade57ca..34011e34 100644
--- a/test/certs/serfocspresponder.pem
+++ b/test/certs/serfocspresponder.pem
@@ -3,21 +3,21 @@ 
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
-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
+LmNvbTAgFw0yNTA2MTgxMDM5MTRaGA8yMTI1MDUyNTEwMzkxNFowgaoxCzAJBgNV
 BAYTAkJFMRAwDgYDVQQIDAdBbnR3ZXJwMREwDwYDVQQHDAhNZWNoZWxlbjEfMB0G
 A1UECgwWSW4gU2VyZiB3ZSB0cnVzdCwgSW5jLjEaMBgGA1UECwwRVGVzdCBTdWl0
 ZSBTZXJ2ZXIxEjAQBgNVBAMMCWxvY2FsaG9zdDElMCMGCSqGSIb3DQEJARYWc2Vy
 ZnNlcnZlckBleGFtcGxlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
-ggEBAMo45t59reaBbEkeAchNVc2PkqY9tvwHiug6rvl1togHapnXz6uFx+BIRwys
-pgbAcMknI4jxlPzQmG+r35TWjLHKvtflw5+5MkajQF7ZKqCtNhwkj/JPFL7iE0oM
-BS5XC7DOyIH1Bz615rvLvbUKVB/3+wkJjf0Lm4QuEYfC3Zi1oZWmOHMLW6eBqNEm
-ii/hBliifLlT9GOW9KERLjZ8YMolKszPKSG6DsSQ7jlpVSdNPA9kUnLpEEH0ln5b
-NGuYMOKZDFDw1GCfgL31Sn34TVURS08DdH653RMHKS1VqbKpcErvojfYMWiqv4b0
-Csv4DRUfKwDJQs9SRNPS9bRdgUcCAwEAAaMaMBgwFgYDVR0lAQH/BAwwCgYIKwYB
-BQUHAwkwDQYJKoZIhvcNAQELBQADggEBABTmXDvRlvIwWr0u+YNoDxcVoB3DpmnT
-JcQdKdvz0aHM0Pku6aLF97F1K7O6mHUXNEhU7mAzywIpxEz9iCiptVSvqjqGzVyZ
-Ufva9IILrLW5Ier+hR7kUa00GLudolEXFgOW19z/4bpZGaPVAa6TThoCajAUxx54
-QVGuCf3Dtiy5mQejHw2AxlhNbKdXng3EpqpyXhshENFqrjiJ2D5Zh04QoqkWoSXh
-u0GLe8ThaDeAeiDZu5XLlvYkqYYVuOm9aoHNNFblRsgDZ7nnmoP0lyIECNtOmiEJ
-8MDy5HbLlxuHkgzotKQ2KuX48lqZ8qL/5nhCeoKpNEdOaTA183GtWDc=
+ggEBANoFEsNDEZw5FaKiAUa0nK/nxw25DXkq4dXcL4r1azbbA2TOEWwgvrq3fp7S
+zvP/IMhF+r/ZzN6PSAoZam4rFcLHDNgbQ9NrMB2rZ7+g6u6E6yY9P9zCfaSpssni
+9ef+Aw4BdRRo14ND/X1oGSeF8bmASssIvguNvGKptYCG8CU0gZpBIc+pf4Am9W/s
+PIzyyad58UhTkNZPakUQdH/Ml1qvBzjBQfAu6mZFuP+whTYfnjYbBCrmRiP6Aftb
+uFeNmxQblhBy1XCswV0YmzsCDXhKmGyF+wdfadcrZHGuOAs2QEGycFuuPBW5HlsT
+dZYGV8N4GbZTRiLOBTDeu436V3MCAwEAAaMaMBgwFgYDVR0lAQH/BAwwCgYIKwYB
+BQUHAwkwDQYJKoZIhvcNAQELBQADggEBAMC1OtrjvgAQm38nv/SowY3lDbHp0Rfy
+OkJsZPXAHv0/ptxt9gI+VM47hQ+w1TGQqtEK7GMYIcFedJcj8GJ0+R/W7NiwsPlG
+KBtXa0Nx2IgTbWblmnwb5eoofVWJFc9XM0X+dtPsNhYHOfLyLtcLBHQQB5SYz7oD
+qFeEp56r05o9ps+Edpp1VTiPeXpjz4L1Z1TpSaEkECzSEla9SvlV4fbVfM4mxA04
+/a6G3baf5tWY+FWurSbe+a2rj2f2a379ecN95wRDlh4SHTJyFDYgLRe63rjtjK1B
+OXbvEWkr8OK9uFfJFQGyvFyU+7tdIC0UT4pI7JDOoCTHWAtCOg1eXII=
 -----END CERTIFICATE-----
diff --git a/test/certs/serfrootcacert.pem b/test/certs/serfrootcacert.pem
index a37b0d78..ae186088 100644
--- a/test/certs/serfrootcacert.pem
+++ b/test/certs/serfrootcacert.pem
@@ -3,23 +3,23 @@ 
MIIELTCCAxWgAwIBAgIDAYa0MA0GCSqGSIb3DQEBCwUAMIGuMQswCQYDVQQGEwJC
 RTEQMA4GA1UECAwHQW50d2VycDERMA8GA1UEBwwITWVjaGVsZW4xHzAdBgNVBAoM
 FkluIFNlcmYgd2UgdHJ1c3QsIEluYy4xGzAZBgNVBAsMElRlc3QgU3VpdGUgUm9v
 dCBDQTEVMBMGA1UEAwwMU2VyZiBSb290IENBMSUwIwYJKoZIhvcNAQkBFhZzZXJm
-cm9vdGNhQGV4YW1wbGUuY29tMCAXDTIxMTAwNDIyNDQ1MloYDzIxMjEwOTEwMjI0
-NDUyWjCBrjELMAkGA1UEBhMCQkUxEDAOBgNVBAgMB0FudHdlcnAxETAPBgNVBAcM
+cm9vdGNhQGV4YW1wbGUuY29tMCAXDTI1MDYxODEwMzkxNFoYDzIxMjUwNTI1MTAz
+OTE0WjCBrjELMAkGA1UEBhMCQkUxEDAOBgNVBAgMB0FudHdlcnAxETAPBgNVBAcM
 CE1lY2hlbGVuMR8wHQYDVQQKDBZJbiBTZXJmIHdlIHRydXN0LCBJbmMuMRswGQYD
 VQQLDBJUZXN0IFN1aXRlIFJvb3QgQ0ExFTATBgNVBAMMDFNlcmYgUm9vdCBDQTEl
 MCMGCSqGSIb3DQEJARYWc2VyZnJvb3RjYUBleGFtcGxlLmNvbTCCASIwDQYJKoZI
-hvcNAQEBBQADggEPADCCAQoCggEBAMHRLqkhe4RGOq5PNkXFc7pvxA8AaEpSJNDu
-3YE2JSBuXUWjcchFy90L4IYg6Ars2QLUpT4QvvavtCUub0ACMUkA8vKqSRsL1T+m
-xySXduaKCF04VQDIdaxW7DBAWNLdW6SOx+IG5DFe4FFOtPUWedxSdfcky1v8fG0U
-Dl3Ic5TXEfB9sQNks+5OtxnPnIJq+uXJCg2sBLJxdGgZbFnHZ7+x1KXeyfZYA4k1
-6XGxiGhZHQb/FkuZiI62gGfAjyNoF6tX/OvxH7oViRPzR4GGeD5vzpbI/SP6QkEJ
-XeOUb2R5UbDmvrSWbSSV+l4B/bCEwdbF1OgPH7K5+LzQ7Klw7FMCAwEAAaNQME4w
-DAYDVR0TBAUwAwEB/zAdBgNVHQ4EFgQUN32vaQaqa7ewER12t1C5FcIw2CMwHwYD
-VR0jBBgwFoAUN32vaQaqa7ewER12t1C5FcIw2CMwDQYJKoZIhvcNAQELBQADggEB
-AFAH3BvIMrBy9rSkWTtztHzEmqC+w/zohBw7Z3owA5K6P4UVAwEYOU6ayMf+HNN0
-UtoGwSqdvi7j2S2n1Q9t+l2fe4lzzpsjM3TFAdtfWKc87X315lW5xBe6WM68Cdxv
-Xxw1KRFfejdSUiRea+2KeHBYBOyaRjaYU0pfsm52qVVhRBw6EGs/5p6oRVx0PS58
-Fs73YwDmj/lu+VH99IzTMU/fiGQXyHPVtnBEBGFblbeJU/B+Mk5DQrEm24gZ/n9P
-Gh9ZJDTmPZyUSlSzyWC6AWBrc9wBz3orMNIimx59QVBQl78rYhHS19VgZJN68WtQ
-MwWOqBs37qKlzj0NS1AYtDo=
+hvcNAQEBBQADggEPADCCAQoCggEBALF11NKpPT0yqH+UH2pJxf0f0buVHVFJ7jXj
+dYv0aZOay6V7G57ZfAL9OIniy8cozUsN40P9R5PkbduMctRYU44Z0Ctz28ACGtTU
+tJOxzR8Wn+Gm5xzknIbEBB3nPQctniL8D8R+c6xe5cc50CmuIrbL4D+2Dk4Dh/AE
+kJYJ3W229ue1YHun1p2yrU23XTYC2AaGmUzdMbbhV8WhpBe5OfzIXZzkKhgACwiO
+r6U5/q/6MvY92LE3L6VWWHehxR/eskTCBMGlQEBrW3G4Y/hU68ASuVDlqMuCK2Gx
+N7A8061HDIdDIju1MwNv4ZNPgrVRKLbrpZh7g1PLYoEjfcfSUiMCAwEAAaNQME4w
+DAYDVR0TBAUwAwEB/zAdBgNVHQ4EFgQUO4CX3QHsnDcocg00nY61XVjoLLgwHwYD
+VR0jBBgwFoAUO4CX3QHsnDcocg00nY61XVjoLLgwDQYJKoZIhvcNAQELBQADggEB
+ACplA5PRKgKaioRlntUTtfz1IRRxeLPryLh7NupOZxDXqVQs4CM4y3gE9SP+3lRe
++2gehvi83sy30zKsh9obQ2Zi8zHPuQNEovDNWnxPsMerYrZAECnp5KAk49S+ihmn
+EnDnwBN/jqtk1V0gPUwnduA7b0MRd5Esa5/py6KMh9gNiymOYBHMyR6sSvu7Oqr/
+wvLcIGQiXz3XmYdG+xBo12Ljm6yZ1Ob+KlNh4WdiFsZn6n0SqtyaMFyIOJu1RBGk
+tl4APwu6BW8oa7+XDEnTW5b94mF6bDEhVo7xgAlboRNQ7ag930GL1xoWSdeDLMin
+Zn6QyJepDOGZDL2ydAuRccU=
 -----END CERTIFICATE-----
diff --git a/test/certs/serfserver_expired_cert.pem 
b/test/certs/serfserver_expired_cert.pem
index db9f2c50..6d940cb6 100644
--- a/test/certs/serfserver_expired_cert.pem
+++ b/test/certs/serfserver_expired_cert.pem
@@ -3,21 +3,21 @@ 
MIIDxzCCAq+gAwIBAgIDAYa0MA0GCSqGSIb3DQEBCwUAMIGgMQswCQYDVQQGEwJC
 RTEQMA4GA1UECAwHQW50d2VycDERMA8GA1UEBwwITWVjaGVsZW4xHzAdBgNVBAoM
 FkluIFNlcmYgd2UgdHJ1c3QsIEluYy4xFjAUBgNVBAsMDVRlc3QgU3VpdGUgQ0Ex
 EDAOBgNVBAMMB1NlcmYgQ0ExITAfBgkqhkiG9w0BCQEWEnNlcmZjYUBleGFtcGxl
-LmNvbTAeFw0yMTEwMDQyMjQ0NTJaFw0yMDEwMDQyMjQ0NTJaMIGqMQswCQYDVQQG
+LmNvbTAeFw0yNTA2MTgxMDM5MTRaFw0yNDA2MTgxMDM5MTRaMIGqMQswCQYDVQQG
 EwJCRTEQMA4GA1UECAwHQW50d2VycDERMA8GA1UEBwwITWVjaGVsZW4xHzAdBgNV
 BAoMFkluIFNlcmYgd2UgdHJ1c3QsIEluYy4xGjAYBgNVBAsMEVRlc3QgU3VpdGUg
 U2VydmVyMRIwEAYDVQQDDAlsb2NhbGhvc3QxJTAjBgkqhkiG9w0BCQEWFnNlcmZz
 ZXJ2ZXJAZXhhbXBsZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
-AQDKOObefa3mgWxJHgHITVXNj5KmPbb8B4roOq75dbaIB2qZ18+rhcfgSEcMrKYG
-wHDJJyOI8ZT80Jhvq9+U1oyxyr7X5cOfuTJGo0Be2SqgrTYcJI/yTxS+4hNKDAUu
-VwuwzsiB9Qc+tea7y721ClQf9/sJCY39C5uELhGHwt2YtaGVpjhzC1ungajRJoov
-4QZYony5U/RjlvShES42fGDKJSrMzykhug7EkO45aVUnTTwPZFJy6RBB9JZ+WzRr
-mDDimQxQ8NRgn4C99Up9+E1VEUtPA3R+ud0TByktVamyqXBK76I32DFoqr+G9ArL
-+A0VHysAyULPUkTT0vW0XYFHAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAJBm4EPk
-d42ahVlmd+EdT5YoGAuJP9NeTBTPnPsPnHvH8IiIn5G/UzARI/jqjEAFxNwMm+bX
-YjuzH+mIpVMBBsDDmaiNJCdRIMArQPJs6cR3udt86bBZjgdfTywagjLykYgtC19n
-G5/oNgdsIcsWIujj/2LpQLnXjT8CZrDrtaJ1j41wHNvFnePhN1YDUur6Ig8r/LpD
-i28mcLbcV7kneLgw/RDRxiLwdyFPuT3pL/R2ejF4XXPHTzmo4aDPSv0j+GOwsKPE
-K6yx7bkmk/SbSkbbiD6GKLmGlCURa4F1o3RDF0+QrAyqqR2Gw/OMWY+ouYKYYl15
-mIaumWPYV5ZcR7I=
+AQDaBRLDQxGcORWiogFGtJyv58cNuQ15KuHV3C+K9Ws22wNkzhFsIL66t36e0s7z
+/yDIRfq/2czej0gKGWpuKxXCxwzYG0PTazAdq2e/oOruhOsmPT/cwn2kqbLJ4vXn
+/gMOAXUUaNeDQ/19aBknhfG5gErLCL4LjbxiqbWAhvAlNIGaQSHPqX+AJvVv7DyM
+8smnefFIU5DWT2pFEHR/zJdarwc4wUHwLupmRbj/sIU2H542GwQq5kYj+gH7W7hX
+jZsUG5YQctVwrMFdGJs7Ag14SphshfsHX2nXK2RxrjgLNkBBsnBbrjwVuR5bE3WW
+BlfDeBm2U0YizgUw3ruN+ldzAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAAAo2qei
+oBM8jGvlLQxRWVWqm1g/BBhby4YsW7RE0CZ3WjfWM0XJ8JGZNbd7AeABFSLDJjBw
+kRulQ8d92971jwS6XdL5Hn4lMZ7YS/LgNwiWi4QREFv9F1uy4iYhXFq6vr8LKfka
+ec8f90QyEYXWoOsjgwqkojrYUCtqwyX8xS47TW546m4IwQz0l7n9oTYl0uLXpu2x
+IoZGct/oFznF3GGL5udCzqd9BkCHoHHVnNwgjEvpTlpBdVA8Bd4pQPvPA3WHdnVP
+iWA2uXACBEKdig+BX26PKhNkWCex2JGI9Gm6X4jhAjnV2VEUSwH4c7gjcypKlO0y
+U21bOQICcNOFjt4=
 -----END CERTIFICATE-----
diff --git a/test/certs/serfserver_future_cert.pem 
b/test/certs/serfserver_future_cert.pem
index 7850228d..52837ae7 100644
--- a/test/certs/serfserver_future_cert.pem
+++ b/test/certs/serfserver_future_cert.pem
@@ -3,21 +3,21 @@ 
MIIDyTCCArGgAwIBAgIDAYa0MA0GCSqGSIb3DQEBCwUAMIGgMQswCQYDVQQGEwJC
 RTEQMA4GA1UECAwHQW50d2VycDERMA8GA1UEBwwITWVjaGVsZW4xHzAdBgNVBAoM
 FkluIFNlcmYgd2UgdHJ1c3QsIEluYy4xFjAUBgNVBAsMDVRlc3QgU3VpdGUgQ0Ex
 EDAOBgNVBAMMB1NlcmYgQ0ExITAfBgkqhkiG9w0BCQEWEnNlcmZjYUBleGFtcGxl
-LmNvbTAgFw0zMTEwMDIyMjQ0NTJaGA8yMTIxMDkxMDIyNDQ1MlowgaoxCzAJBgNV
+LmNvbTAgFw0zNTA2MTYxMDM5MTRaGA8yMTI1MDUyNTEwMzkxNFowgaoxCzAJBgNV
 BAYTAkJFMRAwDgYDVQQIDAdBbnR3ZXJwMREwDwYDVQQHDAhNZWNoZWxlbjEfMB0G
 A1UECgwWSW4gU2VyZiB3ZSB0cnVzdCwgSW5jLjEaMBgGA1UECwwRVGVzdCBTdWl0
 ZSBTZXJ2ZXIxEjAQBgNVBAMMCWxvY2FsaG9zdDElMCMGCSqGSIb3DQEJARYWc2Vy
 ZnNlcnZlckBleGFtcGxlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
-ggEBAMo45t59reaBbEkeAchNVc2PkqY9tvwHiug6rvl1togHapnXz6uFx+BIRwys
-pgbAcMknI4jxlPzQmG+r35TWjLHKvtflw5+5MkajQF7ZKqCtNhwkj/JPFL7iE0oM
-BS5XC7DOyIH1Bz615rvLvbUKVB/3+wkJjf0Lm4QuEYfC3Zi1oZWmOHMLW6eBqNEm
-ii/hBliifLlT9GOW9KERLjZ8YMolKszPKSG6DsSQ7jlpVSdNPA9kUnLpEEH0ln5b
-NGuYMOKZDFDw1GCfgL31Sn34TVURS08DdH653RMHKS1VqbKpcErvojfYMWiqv4b0
-Csv4DRUfKwDJQs9SRNPS9bRdgUcCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAM0Ex
-GfLuzQ6S75JvVj1YxRvRoY2ZNL0aXenJ40CAhrOvTGFTr5r2uOTfYh61Fnw0VUbE
-c/aH7812yhhxBNv71Zgt6zAt+jwuvHec6NBchA2hZgp9aAGLwcWBbdtlAPK+PkTa
-YZRJmhe++PlspFjnEeKjTjWkUf+3QAzY0QW5GGas1z7WD5Z6goFRRO83M/J9BGVr
-1V2EtCk9YvC/SOnZ2R7I2bwaRD4YdIha3ifw8eJaVrYIvMEKCAKEoXBuseuZnitE
-MTmgPQdzPlGgyevstMu0HXD3ejHB0TWTwVFzqVQxh3YahgdW3GcJOPlGZCI9G1w7
-A5R/DdQ0s/t0FiYHeQ==
+ggEBANoFEsNDEZw5FaKiAUa0nK/nxw25DXkq4dXcL4r1azbbA2TOEWwgvrq3fp7S
+zvP/IMhF+r/ZzN6PSAoZam4rFcLHDNgbQ9NrMB2rZ7+g6u6E6yY9P9zCfaSpssni
+9ef+Aw4BdRRo14ND/X1oGSeF8bmASssIvguNvGKptYCG8CU0gZpBIc+pf4Am9W/s
+PIzyyad58UhTkNZPakUQdH/Ml1qvBzjBQfAu6mZFuP+whTYfnjYbBCrmRiP6Aftb
+uFeNmxQblhBy1XCswV0YmzsCDXhKmGyF+wdfadcrZHGuOAs2QEGycFuuPBW5HlsT
+dZYGV8N4GbZTRiLOBTDeu436V3MCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAbFbn
+GBMQOuLFtrYnRL59vcOH89wgXfuKpW4J5dQNguoxpJuoobOUvTf6bicrZduJYG5Y
+lgZThoyh0rNqWh6NENHhAhOsCEvJAZ+61o0CMc1acW3TZGHU/7yNc/st0Ot6N2vP
+44uY9IcS9TlIvnj28mRj58EHBSeY7tgUIwMRsqaZhOdDZ8zAkdx7Ytz1Lc2ZS5q7
+/pxdltsxnTrItYRIuXtdpen8ZYxad/9lfggPLZDTErbUgG3U9kTGoYMT+CKj4ane
+8WOL5vx4zGb94TFQWWGNnvcfjQT3ueTeG5M7ggReAjJp4/YFr7x40S74OxnapRb9
+8VM963jxWKGExBm1MA==
 -----END CERTIFICATE-----
diff --git a/test/certs/serfserver_san_nocn_cert.pem 
b/test/certs/serfserver_san_nocn_cert.pem
index c37297db..1a677ddc 100644
--- a/test/certs/serfserver_san_nocn_cert.pem
+++ b/test/certs/serfserver_san_nocn_cert.pem
@@ -3,21 +3,21 @@ 
MIID0jCCArqgAwIBAgIDAYa0MA0GCSqGSIb3DQEBCwUAMIGgMQswCQYDVQQGEwJC
 RTEQMA4GA1UECAwHQW50d2VycDERMA8GA1UEBwwITWVjaGVsZW4xHzAdBgNVBAoM
 FkluIFNlcmYgd2UgdHJ1c3QsIEluYy4xFjAUBgNVBAsMDVRlc3QgU3VpdGUgQ0Ex
 EDAOBgNVBAMMB1NlcmYgQ0ExITAfBgkqhkiG9w0BCQEWEnNlcmZjYUBleGFtcGxl
-LmNvbTAgFw0yMTEwMDQyMjQ0NTJaGA8yMTIxMDkxMDIyNDQ1MlowgZYxCzAJBgNV
+LmNvbTAgFw0yNTA2MTgxMDM5MTRaGA8yMTI1MDUyNTEwMzkxNFowgZYxCzAJBgNV
 BAYTAkJFMRAwDgYDVQQIDAdBbnR3ZXJwMREwDwYDVQQHDAhNZWNoZWxlbjEfMB0G
 A1UECgwWSW4gU2VyZiB3ZSB0cnVzdCwgSW5jLjEaMBgGA1UECwwRVGVzdCBTdWl0
 ZSBTZXJ2ZXIxJTAjBgkqhkiG9w0BCQEWFnNlcmZzZXJ2ZXJAZXhhbXBsZS5jb20w
-ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDKOObefa3mgWxJHgHITVXN
-j5KmPbb8B4roOq75dbaIB2qZ18+rhcfgSEcMrKYGwHDJJyOI8ZT80Jhvq9+U1oyx
-yr7X5cOfuTJGo0Be2SqgrTYcJI/yTxS+4hNKDAUuVwuwzsiB9Qc+tea7y721ClQf
-9/sJCY39C5uELhGHwt2YtaGVpjhzC1ungajRJoov4QZYony5U/RjlvShES42fGDK
-JSrMzykhug7EkO45aVUnTTwPZFJy6RBB9JZ+WzRrmDDimQxQ8NRgn4C99Up9+E1V
-EUtPA3R+ud0TByktVamyqXBK76I32DFoqr+G9ArL+A0VHysAyULPUkTT0vW0XYFH
+ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaBRLDQxGcORWiogFGtJyv
+58cNuQ15KuHV3C+K9Ws22wNkzhFsIL66t36e0s7z/yDIRfq/2czej0gKGWpuKxXC
+xwzYG0PTazAdq2e/oOruhOsmPT/cwn2kqbLJ4vXn/gMOAXUUaNeDQ/19aBknhfG5
+gErLCL4LjbxiqbWAhvAlNIGaQSHPqX+AJvVv7DyM8smnefFIU5DWT2pFEHR/zJda
+rwc4wUHwLupmRbj/sIU2H542GwQq5kYj+gH7W7hXjZsUG5YQctVwrMFdGJs7Ag14
+SphshfsHX2nXK2RxrjgLNkBBsnBbrjwVuR5bE3WWBlfDeBm2U0YizgUw3ruN+ldz
 AgMBAAGjGzAZMBcGA1UdEQEB/wQNMAuCCWxvY2FsaG9zdDANBgkqhkiG9w0BAQsF
-AAOCAQEAAVRaE3LQsKIVWq9kY8nDocRNVH/b4a7MCsrltx8ExDS71EvejmfRAk44
-TeNl/uSs50Qf02ReBKj+Ad/nxBDnWNVgmLwnP6FCL9qmV0fdkSA2cIFpvheeUyYA
-aKw5Bze1rNCszbHlVCFE8zmHUuTqORvNI/4fHWnuzPM9xQ7ryV1ZFhulQ2M50jSn
-5CBahcPLQcmH+/CphYZH5pKxDb5ANANy/Ff33VMfWOkKk9onaeyjgz5cTJGr8Seb
-dsRIKjXsld451TKpdjvFInMj/s8vVEdmcqS+ojHK/IyUCL3lHmVsglOLwlZ/yzTk
-U/0My03XTmz2AiC5MSJF71Ciq+so+w==
+AAOCAQEAbrFPX+sE1XJjUhpEM6c6C90zylbzx09cmqLuOAmneN/2WbUM0PDvnXKm
+x7ftG9McR4zkgtHrVZvuzsvB12ImVkfBCgYhyheXtZRFsOlOgruDOlfXAiSYWnEi
+jMbdhIswg7LMqeCgfvQHnK9QSfLKrgtL6I5au0AAyrqcWfRSG7lN4hmJ9kplquuR
+/pxTZHie+WsbjdvfGN9xi/aWH5nD6gwW5TpbYtA1kM+8nznz2ZsvunDDYtPPdrhz
+MGooD8O2jTPv1R5hg0ISfn7CUS2YJ+TyyVSkx6JTbr32DlXoXmNOrqV3rdvoZ2PM
+E+kyfhVT6yCZOQJs32WylvPRjPZXIw==
 -----END CERTIFICATE-----
diff --git a/test/certs/serfserver_san_ocsp_cert.pem 
b/test/certs/serfserver_san_ocsp_cert.pem
index 6ecf4e77..cb0addd9 100644
--- a/test/certs/serfserver_san_ocsp_cert.pem
+++ b/test/certs/serfserver_san_ocsp_cert.pem
@@ -3,22 +3,22 @@ 
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
-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
+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
-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
+ggEBANoFEsNDEZw5FaKiAUa0nK/nxw25DXkq4dXcL4r1azbbA2TOEWwgvrq3fp7S
+zvP/IMhF+r/ZzN6PSAoZam4rFcLHDNgbQ9NrMB2rZ7+g6u6E6yY9P9zCfaSpssni
+9ef+Aw4BdRRo14ND/X1oGSeF8bmASssIvguNvGKptYCG8CU0gZpBIc+pf4Am9W/s
+PIzyyad58UhTkNZPakUQdH/Ml1qvBzjBQfAu6mZFuP+whTYfnjYbBCrmRiP6Aftb
+uFeNmxQblhBy1XCswV0YmzsCDXhKmGyF+wdfadcrZHGuOAs2QEGycFuuPBW5HlsT
+dZYGV8N4GbZTRiLOBTDeu436V3MCAwEAAaNMMEowFAYDVR0RBA0wC4IJbG9jYWxo
 b3N0MDIGCCsGAQUFBwEBBCYwJDAiBggrBgEFBQcwAYYWaHR0cDovL2xvY2FsaG9z
-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
+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
 -----END CERTIFICATE-----
diff --git a/test/certs/serfservercert.pem b/test/certs/serfservercert.pem
index d3fcf093..de5dc115 100644
--- a/test/certs/serfservercert.pem
+++ b/test/certs/serfservercert.pem
@@ -3,21 +3,21 @@ 
MIIDyTCCArGgAwIBAgIDAYa0MA0GCSqGSIb3DQEBCwUAMIGgMQswCQYDVQQGEwJC
 RTEQMA4GA1UECAwHQW50d2VycDERMA8GA1UEBwwITWVjaGVsZW4xHzAdBgNVBAoM
 FkluIFNlcmYgd2UgdHJ1c3QsIEluYy4xFjAUBgNVBAsMDVRlc3QgU3VpdGUgQ0Ex
 EDAOBgNVBAMMB1NlcmYgQ0ExITAfBgkqhkiG9w0BCQEWEnNlcmZjYUBleGFtcGxl
-LmNvbTAgFw0yMTEwMDQyMjQ0NTJaGA8yMTIxMDkxMDIyNDQ1MlowgaoxCzAJBgNV
+LmNvbTAgFw0yNTA2MTgxMDM5MTRaGA8yMTI1MDUyNTEwMzkxNFowgaoxCzAJBgNV
 BAYTAkJFMRAwDgYDVQQIDAdBbnR3ZXJwMREwDwYDVQQHDAhNZWNoZWxlbjEfMB0G
 A1UECgwWSW4gU2VyZiB3ZSB0cnVzdCwgSW5jLjEaMBgGA1UECwwRVGVzdCBTdWl0
 ZSBTZXJ2ZXIxEjAQBgNVBAMMCWxvY2FsaG9zdDElMCMGCSqGSIb3DQEJARYWc2Vy
 ZnNlcnZlckBleGFtcGxlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
-ggEBAMo45t59reaBbEkeAchNVc2PkqY9tvwHiug6rvl1togHapnXz6uFx+BIRwys
-pgbAcMknI4jxlPzQmG+r35TWjLHKvtflw5+5MkajQF7ZKqCtNhwkj/JPFL7iE0oM
-BS5XC7DOyIH1Bz615rvLvbUKVB/3+wkJjf0Lm4QuEYfC3Zi1oZWmOHMLW6eBqNEm
-ii/hBliifLlT9GOW9KERLjZ8YMolKszPKSG6DsSQ7jlpVSdNPA9kUnLpEEH0ln5b
-NGuYMOKZDFDw1GCfgL31Sn34TVURS08DdH653RMHKS1VqbKpcErvojfYMWiqv4b0
-Csv4DRUfKwDJQs9SRNPS9bRdgUcCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAlaKG
-fkZcJZSocY0W/UKuf9v6Ml8i4Qe6jwDHTlrMutn9FCWe9Ln3a7cIaNxP3sFExiP3
-epWMLcH0MBS593fdl/whnlQDJntTfVZWv0/qirmRB7kDfC0hBeYHuGp8LSec63Sl
-gv4EC3nFgN16g87X8dZ6h5lfaV7oxTGg0873c+hqaC2utgqZ3KbNyzvmkCmWZGyI
-L0IYXfqGnOCxyjY72Z2Mhym6DKF0O3JxTr3UpesWs4g4Rqvwr2BRB+p02D3PFb5S
-rPrHRfYdALTQv25pbF5ZZ194DN3Wg4Mw47LTlbpeDu/ktC5OxuTmxAB12PXEM66n
-eg5rIib3GXgNkIRKlA==
+ggEBANoFEsNDEZw5FaKiAUa0nK/nxw25DXkq4dXcL4r1azbbA2TOEWwgvrq3fp7S
+zvP/IMhF+r/ZzN6PSAoZam4rFcLHDNgbQ9NrMB2rZ7+g6u6E6yY9P9zCfaSpssni
+9ef+Aw4BdRRo14ND/X1oGSeF8bmASssIvguNvGKptYCG8CU0gZpBIc+pf4Am9W/s
+PIzyyad58UhTkNZPakUQdH/Ml1qvBzjBQfAu6mZFuP+whTYfnjYbBCrmRiP6Aftb
+uFeNmxQblhBy1XCswV0YmzsCDXhKmGyF+wdfadcrZHGuOAs2QEGycFuuPBW5HlsT
+dZYGV8N4GbZTRiLOBTDeu436V3MCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAf5lv
+VaR2lwEpPwfNTZqmxPNi1R1FZCH4LVPn2ZZlpVT19NVC51UgZlNSz9ZClPKgZjJQ
+MyUqgvrBuJ3Wl72razwVODO1WsFHnnVv0BVi50kGW00kEusZMnPFrSa/tDWRQxUm
+5mlWWEbSdcZgGVU3zRuggM62DlISgaTA/MejlKV7t+av00vzYQrNX9/6eIoBOW0M
+r6VrLH/8oWmoQtvEXg/cBbpfPSbSIyszRyDUN+qXqhZ3lI3NoRf+KoNYHeCzdEoG
+B8+7SSbn7TYpV8JI12NyCP93J6FWrbGETJWFCO4xFR2hnMUiH5TbrX+nABK9lwqN
+kVxw36u3ymKfJY99Rw==
 -----END CERTIFICATE-----
diff --git a/test/certs/serfservercrl.pem b/test/certs/serfservercrl.pem
index 8ab17ca3..862629e3 100644
--- a/test/certs/serfservercrl.pem
+++ b/test/certs/serfservercrl.pem
@@ -1,14 +1,14 @@
 -----BEGIN X509 CRL-----
-MIICETCB+jANBgkqhkiG9w0BAQQFADCBoDELMAkGA1UEBhMCQkUxEDAOBgNVBAgM
+MIICETCB+jANBgkqhkiG9w0BAQsFADCBoDELMAkGA1UEBhMCQkUxEDAOBgNVBAgM
 B0FudHdlcnAxETAPBgNVBAcMCE1lY2hlbGVuMR8wHQYDVQQKDBZJbiBTZXJmIHdl
 IHRydXN0LCBJbmMuMRYwFAYDVQQLDA1UZXN0IFN1aXRlIENBMRAwDgYDVQQDDAdT
-ZXJmIENBMSEwHwYJKoZIhvcNAQkBFhJzZXJmY2FAZXhhbXBsZS5jb20XDTIxMTAw
-NDIyNDQ1M1oYDzIxMjEwOTEwMjI0NDUzWjAmMCQCAwGGtBgPMjAyMTEwMDQyMjQ0
-NTNaMAwwCgYDVR0VBAMKAQAwDQYJKoZIhvcNAQEEBQADggEBADdKNu31cSJ1ugZ0
-bgH2pxxXIU3v+ibNBzji257Ak+h1+ghSWo3tvbjtAVYutmvB/OPuoy1ctC5b0NVp
-d7CPqNKWQbHBRC6S8Y7/g6ZbzY/BLyxMrWjRkxzIIJJ16hHJ/ayhqTkS9dZlCPAx
-KeB48f9HEbFSoG++xNbJu0+n7N+3q1KHbh7zzOBWWvVPMrUff9J362KbTEwudY8a
-3K6R+JvoTYoKGdqCJFrA5E/9HCpoufzgEV3i9zkdY9jzR7aeB6oYxLQslGvvzgfY
-EV8LTC5iPcggbPu5nGjeQOlbqL9OF6JsrcTPluU8WAmzqm/ALOXQhzAYXbbDvkKI
-m1ELvsw=
+ZXJmIENBMSEwHwYJKoZIhvcNAQkBFhJzZXJmY2FAZXhhbXBsZS5jb20XDTI1MDYx
+ODEwMzkxNFoYDzIxMjUwNTI1MTAzOTE0WjAmMCQCAwGGtBgPMjAyNTA2MTgxMDM5
+MTRaMAwwCgYDVR0VBAMKAQAwDQYJKoZIhvcNAQELBQADggEBAFCNSfyJY0BSZdYD
+zbFSYjiQsCJs08YmqoejyLNBMGWrYDYkiCvM0tenWE3VXTarP0Tx7oqhgTYWH0qr
+i1KBYEE4M1nRBfYQ8W3Tvl7dMyXtAW5zYQSMu/1H5Mcu93WRknNR0sFrAlICNr3L
++QFFbVtBOruqn0WCxRVi15BqfJzk3T6bCEa8063Ja4NjDYtkKz23g8BIqi9afsjl
+2QgF+0z2nDDOIKiCjgFkMGF2cbKY2tjPgha+DEO4bHaYWJiLVnMuVnh4yTnbWWLO
+PI6TqFFJAF9as0SKhjpwyf1m6NqLQ0FCIGImmFlR++KcQePbGKGyEa8CBHuaOFsX
++xCPZXU=
 -----END X509 CRL-----
diff --git a/test/test_ssl.c b/test/test_ssl.c
index 05c6cbd2..d20113eb 100644
--- a/test/test_ssl.c
+++ b/test/test_ssl.c
@@ -175,11 +175,11 @@ static void test_ssl_cert_certificate(CuTest *tc)
     kv = serf_ssl_cert_certificate(cert, tb->pool);
     CuAssertPtrNotNull(tc, kv);
 
-    CuAssertStrEquals(tc, 
"A1:E1:41:81:30:B5:D0:7F:13:BC:AB:FD:48:0C:48:FF:F9:D1:F5:63",
+    CuAssertStrEquals(tc, 
"11:07:27:BA:82:70:08:38:76:4D:F7:17:94:99:61:F0:46:04:F3:6D",
                       apr_hash_get(kv, "sha1", APR_HASH_KEY_STRING));
-    CuAssertStrEquals(tc, "Oct  4 22:44:52 2021 GMT",
+    CuAssertStrEquals(tc, "Jun 18 10:39:14 2025 GMT",
                       apr_hash_get(kv, "notBefore", APR_HASH_KEY_STRING));
-    CuAssertStrEquals(tc, "Sep 10 22:44:52 2121 GMT",
+    CuAssertStrEquals(tc, "May 25 10:39:14 2125 GMT",
                       apr_hash_get(kv, "notAfter", APR_HASH_KEY_STRING));
 
     san_arr = apr_hash_get(kv, "subjectAltName", APR_HASH_KEY_STRING);
@@ -502,6 +502,11 @@ static const char *format_cert_failures(int failures, 
apr_pool_t *pool)
         failures &= ~SERF_SSL_OCSP_RESPONDER_UNKNOWN_FAILURE;
     }
 
+    if (failures & SERF_SSL_SIGNATURE_FAILURE) {
+        str = apr_pstrcat(pool, str, *str ? "|" : "", "SIGNATURE_FAILURE", 
NULL);
+        failures &= ~SERF_SSL_SIGNATURE_FAILURE;
+    }
+
     if (failures) {
         /* Unexpected or unknown cert failure. */
         REPORT_TEST_SUITE_ERROR();


Reply via email to