Hi,

Thank you Graham, I've posted some comments on the PR. I believe I
understand enough to split this into separate commits but I'd like to make
sure I understand it properly before doing so. And I'd appreciate a review
from someone else in the community as well, I'm not confident enough to
approve this myself.

Cheers,
Daniel


Den ons 18 juni 2025 kl 13:39 skrev Graham Leggett <minf...@sharp.fm.invalid
>:

> 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=
> +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
>  -----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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
> -LmNvbTAgFw0yMTEwMDQyMjQ0NTJaGA8yMTIxMDkxMDIyNDQ1MlowgaoxCzAJBgNV
> +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
> -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
> +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
> -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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