diff -Nru puma-6.6.0/debian/changelog puma-6.6.0/debian/changelog
--- puma-6.6.0/debian/changelog	2025-07-16 16:51:16.000000000 -0300
+++ puma-6.6.0/debian/changelog	2025-07-17 07:20:19.000000000 -0300
@@ -1,3 +1,16 @@
+puma (6.6.0-4) unstable; urgency=medium
+
+  * Team upload.
+  * Do not generate example certificates in build time to avoid build
+    depending on Java
+  * d/p/0019-adapt-test-certs-generation.patch: adjust example certificates
+    generation script
+  * d/p/0020-update-ex-certs.patch: update example certificates to avoid a
+    regression for #1078640
+  * debian/README.source: document test certificates generation
+
+ -- Athos Ribeiro <athos@debian.org>  Thu, 17 Jul 2025 07:20:19 -0300
+
 puma (6.6.0-3) unstable; urgency=medium
 
   * Team upload.
diff -Nru puma-6.6.0/debian/control puma-6.6.0/debian/control
--- puma-6.6.0/debian/control	2025-07-16 16:51:16.000000000 -0300
+++ puma-6.6.0/debian/control	2025-07-17 07:20:19.000000000 -0300
@@ -16,10 +16,7 @@
                ruby-nio4r (>= 2),
                ruby-rack,
                ruby-rackup | ruby-rack (<< 3),
-               ruby-sd-notify,
-	       default-jre-headless <!nocheck>,
-	       openssl <!nocheck>,
-	       ruby-certificate-authority <!nocheck>,
+               ruby-sd-notify
 Standards-Version: 4.7.0
 Vcs-Git: https://salsa.debian.org/ruby-team/puma.git
 Vcs-Browser: https://salsa.debian.org/ruby-team/puma
diff -Nru puma-6.6.0/debian/.gitattributes puma-6.6.0/debian/.gitattributes
--- puma-6.6.0/debian/.gitattributes	2025-07-16 16:51:16.000000000 -0300
+++ puma-6.6.0/debian/.gitattributes	1969-12-31 21:00:00.000000000 -0300
@@ -1,4 +0,0 @@
-.gitattributes export-ignore
-gbp.conf export-ignore
-salsa-ci.yml export-ignore
-kali-ci.yml export-ignore
diff -Nru puma-6.6.0/debian/patches/0019-adapt-test-certs-generation.patch puma-6.6.0/debian/patches/0019-adapt-test-certs-generation.patch
--- puma-6.6.0/debian/patches/0019-adapt-test-certs-generation.patch	1969-12-31 21:00:00.000000000 -0300
+++ puma-6.6.0/debian/patches/0019-adapt-test-certs-generation.patch	2025-07-17 07:20:19.000000000 -0300
@@ -0,0 +1,80 @@
+From: Athos Ribeiro <athos@debian.org>
+Date: Thu, 17 Jul 2025 06:35:51 -0300
+Subject: Adapt test certificates generation
+
+Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1078640
+Forwarded: not-needed
+Last-Update: 2025-07-15
+
+Adapt the test certificates generation process to Debian. For that, we extend
+the validity of the certificates to 11 years to try to cover the Debian support
+(and hopefully the LTS/eLTS) window as long as a build is performed 1 year
+before a release. We also require certificate_authority from the installed
+package so we can generate this certificates without external packages.
+Last-Update: 2025-07-15
+---
+ examples/generate_chain_test.rb  | 9 ++++-----
+ examples/generate_client_test.rb | 2 +-
+ examples/generate_server_test.rb | 2 +-
+ 3 files changed, 6 insertions(+), 7 deletions(-)
+
+diff --git a/examples/generate_chain_test.rb b/examples/generate_chain_test.rb
+index 2676760..d84c7ae 100644
+--- a/examples/generate_chain_test.rb
++++ b/examples/generate_chain_test.rb
+@@ -11,10 +11,7 @@ certs before date will be the first of the current month
+ =end
+ 
+ require 'bundler/inline'
+-gemfile(true) do
+-  source 'https://rubygems.org'
+-  gem 'certificate_authority'
+-end
++require 'certificate_authority'
+ 
+ module GenerateChainCerts
+ 
+@@ -39,7 +36,7 @@ module GenerateChainCerts
+ 
+         {
+           not_before: Time.new(yr, mo, 1, 0, 0, 0, zone),
+-          not_after:  Time.new(yr+4, mo, 1, 0, 0, 0, zone)
++          not_after:  Time.new(yr+11, mo, 1, 0, 0, 0, zone)
+         }
+       )
+     end
+@@ -83,6 +80,8 @@ module GenerateChainCerts
+       cert.subject.common_name  = common_name
+       cert.serial_number.number = parent.serial_number.number + 100
+       cert.parent               = parent
++      cert.not_before          = before_after[:not_before]
++      cert.not_after           = before_after[:not_after]
+ 
+       cert.key_material.generate_key
+       cert.sign!
+diff --git a/examples/generate_client_test.rb b/examples/generate_client_test.rb
+index f875916..e197428 100644
+--- a/examples/generate_client_test.rb
++++ b/examples/generate_client_test.rb
+@@ -107,7 +107,7 @@ module GenerateClientCerts
+       zone = '+00:00'
+ 
+       @before = Time.new yr  , mo, 1, 0, 0, 0, zone
+-      @after  = Time.new yr+4, mo, 1, 0, 0, 0, zone
++      @after  = Time.new yr+11, mo, 1, 0, 0, 0, zone
+ 
+       @b_exp  = Time.new yr-1, mo, 1, 0, 0, 0, zone
+       @a_exp  = Time.new yr  , mo, 1, 0, 0, 0, zone
+diff --git a/examples/generate_server_test.rb b/examples/generate_server_test.rb
+index cf9364a..f73e660 100644
+--- a/examples/generate_server_test.rb
++++ b/examples/generate_server_test.rb
+@@ -33,7 +33,7 @@ module GenerateServerCerts
+       zone = '+00:00'
+ 
+       cert.not_before = Time.new yr  , mo, 1, 0, 0, 0, zone
+-      cert.not_after  = Time.new yr+4, mo, 1, 0, 0, 0, zone
++      cert.not_after  = Time.new yr+11, mo, 1, 0, 0, 0, zone
+       cert.public_key = key.public_key
+       cert.sign ca_key, SIGN_ALGORITHM.new
+       puts "New:", cert.to_text, ""
diff -Nru puma-6.6.0/debian/patches/0019-do-not-download-ca-gem.patch puma-6.6.0/debian/patches/0019-do-not-download-ca-gem.patch
--- puma-6.6.0/debian/patches/0019-do-not-download-ca-gem.patch	2025-07-16 16:51:16.000000000 -0300
+++ puma-6.6.0/debian/patches/0019-do-not-download-ca-gem.patch	1969-12-31 21:00:00.000000000 -0300
@@ -1,24 +0,0 @@
-From: =?utf-8?q?Timo_R=C3=B6hling?= <roehling@debian.org>
-Date: Wed, 16 Jul 2025 18:35:43 +0200
-Subject: Do not download certificate_authority gem
-
----
- examples/generate_chain_test.rb | 5 +----
- 1 file changed, 1 insertion(+), 4 deletions(-)
-
-diff --git a/examples/generate_chain_test.rb b/examples/generate_chain_test.rb
-index 2676760..dbe89ab 100644
---- a/examples/generate_chain_test.rb
-+++ b/examples/generate_chain_test.rb
-@@ -11,10 +11,7 @@ certs before date will be the first of the current month
- =end
- 
- require 'bundler/inline'
--gemfile(true) do
--  source 'https://rubygems.org'
--  gem 'certificate_authority'
--end
-+require 'certificate_authority'
- 
- module GenerateChainCerts
- 
diff -Nru puma-6.6.0/debian/patches/0020-update-ex-certs.patch puma-6.6.0/debian/patches/0020-update-ex-certs.patch
--- puma-6.6.0/debian/patches/0020-update-ex-certs.patch	1969-12-31 21:00:00.000000000 -0300
+++ puma-6.6.0/debian/patches/0020-update-ex-certs.patch	2025-07-17 07:20:19.000000000 -0300
@@ -0,0 +1,1499 @@
+From: Athos Ribeiro <athos.ribeiro@canonical.com>
+Date: Tue, 15 Jul 2025 10:38:43 -0300
+Subject: Update example certificates
+
+Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1078640
+Forwarded: not-needed
+Last-Update: 2025-07-15
+
+Update the example certificates so that the upstream unit tests keep
+passing throughout the next Debian release (trixie) support cycle.  This
+is done by updating the certificates validity to 11 years (possibly
+covering LTS/eLTS).
+Last-Update: 2025-07-15
+---
+ examples/puma/cert_puma.pem                     |  30 ++++----
+ examples/puma/chain_cert/ca.crt                 |  33 ++++----
+ examples/puma/chain_cert/ca.key                 |  50 ++++++------
+ examples/puma/chain_cert/ca_chain.pem           |  65 ++++++++--------
+ examples/puma/chain_cert/cert.crt               |  32 ++++----
+ examples/puma/chain_cert/cert.key               |  50 ++++++------
+ examples/puma/chain_cert/cert_chain.pem         |  97 ++++++++++++------------
+ examples/puma/chain_cert/intermediate.crt       |  32 ++++----
+ examples/puma/chain_cert/intermediate.key       |  50 ++++++------
+ examples/puma/client_certs/ca.crt               |  28 +++----
+ examples/puma/client_certs/ca.key               |  50 ++++++------
+ examples/puma/client_certs/ca_store.jks         | Bin 848 -> 848 bytes
+ examples/puma/client_certs/ca_store.p12         | Bin 2568 -> 2584 bytes
+ examples/puma/client_certs/client.crt           |  30 ++++----
+ examples/puma/client_certs/client.key           |  50 ++++++------
+ examples/puma/client_certs/client_expired.crt   |  30 ++++----
+ examples/puma/client_certs/client_expired.key   |  50 ++++++------
+ examples/puma/client_certs/client_unknown.crt   |  30 ++++----
+ examples/puma/client_certs/client_unknown.key   |  50 ++++++------
+ examples/puma/client_certs/keystore.jks         | Bin 4392 -> 4392 bytes
+ examples/puma/client_certs/server.crt           |  30 ++++----
+ examples/puma/client_certs/server.key           |  50 ++++++------
+ examples/puma/client_certs/server.p12           | Bin 3408 -> 3424 bytes
+ examples/puma/client_certs/unknown_ca.crt       |  28 +++----
+ examples/puma/client_certs/unknown_ca.key       |  50 ++++++------
+ examples/puma/client_certs/unknown_ca_store.p12 | Bin 2592 -> 2608 bytes
+ examples/puma/encrypted_puma_keypair.pem        |  56 +++++++-------
+ examples/puma/keystore.jks                      | Bin 2253 -> 2252 bytes
+ examples/puma/puma_keypair.pem                  |  50 ++++++------
+ examples/puma/server.p12                        | Bin 2700 -> 2716 bytes
+ 30 files changed, 509 insertions(+), 512 deletions(-)
+
+diff --git a/examples/puma/cert_puma.pem b/examples/puma/cert_puma.pem
+index 6cbb9c1..cace838 100644
+--- a/examples/puma/cert_puma.pem
++++ b/examples/puma/cert_puma.pem
+@@ -1,21 +1,21 @@
+ -----BEGIN CERTIFICATE-----
+ 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
+ -----END CERTIFICATE-----
+diff --git a/examples/puma/chain_cert/ca.crt b/examples/puma/chain_cert/ca.crt
+index 9acfe79..bcc8e26 100644
+--- a/examples/puma/chain_cert/ca.crt
++++ b/examples/puma/chain_cert/ca.crt
+@@ -1,20 +1,19 @@
+ -----BEGIN CERTIFICATE-----
+-MIIDOTCCAiGgAwIBAgIBATANBgkqhkiG9w0BAQ0FADAcMRowGAYDVQQDDBFjYS5w
+-dW1hLmxvY2FsaG9zdDAeFw0yNDA4MDEwMDAwMDBaFw0yODA4MDEwMDAwMDBaMBwx
++MIIDEjCCAfqgAwIBAgIBATANBgkqhkiG9w0BAQ0FADAcMRowGAYDVQQDDBFjYS5w
++dW1hLmxvY2FsaG9zdDAeFw0yNTA3MDEwMDAwMDBaFw0zNjA3MDEwMDAwMDBaMBwx
+ GjAYBgNVBAMMEWNhLnB1bWEubG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOC
+-AQ8AMIIBCgKCAQEAuKZ43p+68AFTSVno4p8rxk2Ixngw9CR9K5/11LCS+nM9jPph
+-E0aWluwRAdWNs0CLN9A9ZKqJq+G67Y6CAw87g4RfUaZUkBkClwH76WUYzMTo9P3e
+-UMpwzVtdrijW2Y/9MnxMCyt14WVfoY0itjEyfeGT3FbP8yKuk2qYoz3YecrhiRGu
+-xv5gFZOd0hxIL0HkRe0lrpgWDj4MrvsBqUnb4aeqDgjz4lPUWo/GSvgU7xcV5Q6c
+-Ti8FB9k3HZfphb2JHydZfxIqCCeflZlAQBBKNevWbSxhfsfjzqHmC64M9ELoJ/1J
+-JFoX+zdlv9DqOn2k67N4rZcfptoEKPQThPmX+wIDAQABo4GFMIGCMB0GA1UdDgQW
+-BBQuEpl4C66N1A3ZvoVOcO8k6G21nTAOBgNVHQ8BAf8EBAMCAgQwEwYDVR0lBAww
+-CgYIKwYBBQUHAwEwDAYDVR0TBAUwAwEB/zAuBgNVHSMEJzAloSCkHjAcMRowGAYD
+-VQQDDBFjYS5wdW1hLmxvY2FsaG9zdIIBATANBgkqhkiG9w0BAQ0FAAOCAQEAOy3A
+-9GPAQvTeqbmvMlkJh8jtTRUOKmcGUNPFQqJ4aTx/BXh8x415zjW9ZSjLN7ZSNxjJ
+-nFm1XeD9I1EB1JjXwnkNTgC7zUn+kyuIMBxEvfsM0Pfdumr8VOrlidIJeTLBs029
+-tYd/kVlaZfoDS/cSu8ezS7urwY/usHRuku6MUCs4L1WZlDptweGUCWsESpIEGF7d
+-ZJC8f6C8rwQimOyhhouVSlOh1NxC338TvQSflhRtWiP4lIgDVNMmb4MRDAUzbkrg
+-SH4+Oho7EeoK2VSmgqSAyIpOTBBhIcdEgib7Hz+Uq+Y6KekuD8Y8SslbXitBqgS3
+-8uByucqDNovFjYNMKw==
++AQ8AMIIBCgKCAQEArOhy3ADotcJ0F7rl0KpWlm/a6wkyeSbTNPd+gaccACR1wd92
++kXs2/S5day5/lP6uVUxrrKU2fhFXSy+aI5bng5cQl0ita6sVZCThs9k683w/fobc
++OMIKk3MFPxF4QJTa4iNb21g8olKYT/L2b0MUTq+AvnlC3mAAJkLrXjML3wrhwORa
++VmTdsepqMOkQD3EcuggbkfkUK3p3xfVcHJ2iEfRhGY/7JxNcm1o6YLbj8WPqAKcH
++0f8KNjzr0IJuMDKy/jArV7VdA9TeGoq6ECMkIIx7y9lwu0gfkJNkmmEYJbU7c0ik
++UzwIko3qxlvB9nugrzzsG11aTwYkLu2WE1BhcQIDAQABo18wXTAdBgNVHQ4EFgQU
++3ZgoXoMYzlhYDr93B73HJUlsQXgwDgYDVR0PAQH/BAQDAgIEMBMGA1UdJQQMMAoG
++CCsGAQUFBwMBMAwGA1UdEwQFMAMBAf8wCQYDVR0jBAIwADANBgkqhkiG9w0BAQ0F
++AAOCAQEAjwWu4jaf6ybB4BVNuNvvFFCa40iRsjYH7W9LSjtkObEDyOAr4GK3j83b
++3r23HVE4y/Aiz502DlENUdhLw3rPqfY6efHG1k6W0RiKbL++0BLQOmta3e8fpgaq
++DDkmGGt60hpizfftkkGoZUVs+MabuJwCezs5n+KcyztGhGKCTtLJfv+1N1aevrFF
++50E7rkqTkhHsCjMvL/dnmDVzuXDkqJ2SGeWC9fSwWEKmVEA6QDCXPc8RyGEgJPgF
++gK7Q+5JF6zd3ZSVlcX8lCivXw4GX6Mh2ZjE3DtDIaGpuQIFV/y3vo0c/8RVMBiMo
++dGuf7tB1eQn0vSFRUc3UrZIMBspK7Q==
+ -----END CERTIFICATE-----
+diff --git a/examples/puma/chain_cert/ca.key b/examples/puma/chain_cert/ca.key
+index c884487..8de2968 100644
+--- a/examples/puma/chain_cert/ca.key
++++ b/examples/puma/chain_cert/ca.key
+@@ -1,27 +1,27 @@
+ -----BEGIN RSA PRIVATE KEY-----
+-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
+ -----END RSA PRIVATE KEY-----
+diff --git a/examples/puma/chain_cert/ca_chain.pem b/examples/puma/chain_cert/ca_chain.pem
+index 7d500ef..7196332 100644
+--- a/examples/puma/chain_cert/ca_chain.pem
++++ b/examples/puma/chain_cert/ca_chain.pem
+@@ -1,40 +1,39 @@
+ -----BEGIN CERTIFICATE-----
+ MIIDMjCCAhqgAwIBAgIBCzANBgkqhkiG9w0BAQ0FADAcMRowGAYDVQQDDBFjYS5w
+-dW1hLmxvY2FsaG9zdDAeFw0yNDA4MDEwMDAwMDBaFw0yODA4MDEwMDAwMDBaMCYx
++dW1hLmxvY2FsaG9zdDAeFw0yNTA3MDEwMDAwMDBaFw0zNjA3MDEwMDAwMDBaMCYx
+ JDAiBgNVBAMMG2ludGVybWVkaWF0ZS5wdW1hLmxvY2FsaG9zdDCCASIwDQYJKoZI
+-hvcNAQEBBQADggEPADCCAQoCggEBAKe0Vb0OyhNyWi4/u1jwLOkDYGx7+aXOJJyN
+-5ExJNS0goWy8+OQKVBwFgZZ5jqqfrXlLheOpAEpRm7TIJVTIwD1/gi/zrNN1ec3D
+-uJMBvlTzNVozfBncQ9EJ62JRC3I/56W1xYMekCIG2SjzSnAfNSojyN6SLxGmtT89
+-xN6parFq/GcvEtssDRVVUm6pyIOgpDOgTuUcqT3qUgOkN9w+5ZgjKWAc1BuMipR9
+-f8wwjuhXx2XlH2lodVWl94xo4ipY7sd2frF/oil9SXDC3ZrwGdkt9TQaCMYlt74V
+-yNxPAX5XwRH8b2OAsIGkPNh7TvIkKR33JkKcXXpZbxlRP6PDWR0CAwEAAaN1MHMw
+-HQYDVR0OBBYEFNVfAg8SLxqTN54wYWiWfxVic+iHMA4GA1UdDwEB/wQEAwICBDAT
+-BgNVHSUEDDAKBggrBgEFBQcDATAMBgNVHRMEBTADAQH/MB8GA1UdIwQYMBaAFC4S
+-mXgLro3UDdm+hU5w7yTobbWdMA0GCSqGSIb3DQEBDQUAA4IBAQAOdOtD3py2k4OO
+-0Q5KvmvyybaeSlFPM6/iXNakmqJY3lELnJgjWYgBXlOK91M7F2xG8YRFoBrUipXd
+-rMAburoWjnKvMoPaGZqbpligfkPIueo+ON/Q27UhvH2EYFzTOGjfnCiSCzpekesC
+-32MhK7mB9Uzu9yxDgtRu0IRqCk9WbU35qDzx7mUEZwCHe11T6tV4k9ZHAvhqEvaq
+-sqAgA+OoXBev6wx1tWgiqf40vuKZBRutWUSTHgGIXqain2l5b7Jv6TkCNI4HttHN
+-43oME4M6P1/iH+l99Y7fZBkLGnkGYPiWXQH9NyydQVHOBm3dN26QJzAmV06ZLxEm
+-iX6YKGNd
++hvcNAQEBBQADggEPADCCAQoCggEBAI1oWjP0qqF7UZqnmfU2nTVC+IotygpP2jFe
++bd+navwcWLoizHEy/h5QdmiEUu9L/kR9krMfhcOL7z0mETBVQpfN3JsYkn/gLyJd
++6XES3dwHXINAp6LMfwQXOYCbv+yC5KRJ/kER/PIrY2/bwLR8eT5mOZJqtmpE3LiQ
++UUEXcEX5ycQ+xdwYmKgGJCjmDdBhSgMSMY1dhZM5nk/HI8jRT10iJ/g6GKwsoveu
++B8WSA4iX1ZUxRFGhaXbkDo+6ldzPPERa9yQELy8iQHW3hC35v0xFSfirL2DOvSRf
++p3Vf/7zHn3EEF8QBO6FHCnDuHUqYXnjjv1k2f+pAQQLQQXT2yhsCAwEAAaN1MHMw
++HQYDVR0OBBYEFAx+NE6dAvT7H5QU+yyK9wV64l/OMA4GA1UdDwEB/wQEAwICBDAT
++BgNVHSUEDDAKBggrBgEFBQcDATAMBgNVHRMEBTADAQH/MB8GA1UdIwQYMBaAFN2Y
++KF6DGM5YWA6/dwe9xyVJbEF4MA0GCSqGSIb3DQEBDQUAA4IBAQBsxxIbUQvJEYsu
++jGmNVXTbB3h9yh8u0pYEBbPSTKo38Ah4OAtrpnzn3SaniRdahFegn4wmcNJr2BAj
++8EFkNdLfHzB/NnDfzmHAfZlkf2OLgDotKTT2psL6wgWFLIu47MFoge4z4zVFLaNp
++ESJUiHDoFIms6DXDFoKiCO0IA6sCrYEkaOBfC8IMaPyDcnIrrdEuTuZd/5DxhAih
++jlNUPszXAh7wGVoFyKiEjbACmQXAWKvTtALNl5Z3aXeucR3iamrUDVmJyKKYsdvh
++24dNlMF6beMl8v8tIQ0iQBbkD/jsp3SjzrANMNhgOQHKcXQ84j1C3AAkNwTL0M7o
++05PKNc+5
+ -----END CERTIFICATE-----
+ -----BEGIN CERTIFICATE-----
+-MIIDOTCCAiGgAwIBAgIBATANBgkqhkiG9w0BAQ0FADAcMRowGAYDVQQDDBFjYS5w
+-dW1hLmxvY2FsaG9zdDAeFw0yNDA4MDEwMDAwMDBaFw0yODA4MDEwMDAwMDBaMBwx
++MIIDEjCCAfqgAwIBAgIBATANBgkqhkiG9w0BAQ0FADAcMRowGAYDVQQDDBFjYS5w
++dW1hLmxvY2FsaG9zdDAeFw0yNTA3MDEwMDAwMDBaFw0zNjA3MDEwMDAwMDBaMBwx
+ GjAYBgNVBAMMEWNhLnB1bWEubG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOC
+-AQ8AMIIBCgKCAQEAuKZ43p+68AFTSVno4p8rxk2Ixngw9CR9K5/11LCS+nM9jPph
+-E0aWluwRAdWNs0CLN9A9ZKqJq+G67Y6CAw87g4RfUaZUkBkClwH76WUYzMTo9P3e
+-UMpwzVtdrijW2Y/9MnxMCyt14WVfoY0itjEyfeGT3FbP8yKuk2qYoz3YecrhiRGu
+-xv5gFZOd0hxIL0HkRe0lrpgWDj4MrvsBqUnb4aeqDgjz4lPUWo/GSvgU7xcV5Q6c
+-Ti8FB9k3HZfphb2JHydZfxIqCCeflZlAQBBKNevWbSxhfsfjzqHmC64M9ELoJ/1J
+-JFoX+zdlv9DqOn2k67N4rZcfptoEKPQThPmX+wIDAQABo4GFMIGCMB0GA1UdDgQW
+-BBQuEpl4C66N1A3ZvoVOcO8k6G21nTAOBgNVHQ8BAf8EBAMCAgQwEwYDVR0lBAww
+-CgYIKwYBBQUHAwEwDAYDVR0TBAUwAwEB/zAuBgNVHSMEJzAloSCkHjAcMRowGAYD
+-VQQDDBFjYS5wdW1hLmxvY2FsaG9zdIIBATANBgkqhkiG9w0BAQ0FAAOCAQEAOy3A
+-9GPAQvTeqbmvMlkJh8jtTRUOKmcGUNPFQqJ4aTx/BXh8x415zjW9ZSjLN7ZSNxjJ
+-nFm1XeD9I1EB1JjXwnkNTgC7zUn+kyuIMBxEvfsM0Pfdumr8VOrlidIJeTLBs029
+-tYd/kVlaZfoDS/cSu8ezS7urwY/usHRuku6MUCs4L1WZlDptweGUCWsESpIEGF7d
+-ZJC8f6C8rwQimOyhhouVSlOh1NxC338TvQSflhRtWiP4lIgDVNMmb4MRDAUzbkrg
+-SH4+Oho7EeoK2VSmgqSAyIpOTBBhIcdEgib7Hz+Uq+Y6KekuD8Y8SslbXitBqgS3
+-8uByucqDNovFjYNMKw==
++AQ8AMIIBCgKCAQEArOhy3ADotcJ0F7rl0KpWlm/a6wkyeSbTNPd+gaccACR1wd92
++kXs2/S5day5/lP6uVUxrrKU2fhFXSy+aI5bng5cQl0ita6sVZCThs9k683w/fobc
++OMIKk3MFPxF4QJTa4iNb21g8olKYT/L2b0MUTq+AvnlC3mAAJkLrXjML3wrhwORa
++VmTdsepqMOkQD3EcuggbkfkUK3p3xfVcHJ2iEfRhGY/7JxNcm1o6YLbj8WPqAKcH
++0f8KNjzr0IJuMDKy/jArV7VdA9TeGoq6ECMkIIx7y9lwu0gfkJNkmmEYJbU7c0ik
++UzwIko3qxlvB9nugrzzsG11aTwYkLu2WE1BhcQIDAQABo18wXTAdBgNVHQ4EFgQU
++3ZgoXoMYzlhYDr93B73HJUlsQXgwDgYDVR0PAQH/BAQDAgIEMBMGA1UdJQQMMAoG
++CCsGAQUFBwMBMAwGA1UdEwQFMAMBAf8wCQYDVR0jBAIwADANBgkqhkiG9w0BAQ0F
++AAOCAQEAjwWu4jaf6ybB4BVNuNvvFFCa40iRsjYH7W9LSjtkObEDyOAr4GK3j83b
++3r23HVE4y/Aiz502DlENUdhLw3rPqfY6efHG1k6W0RiKbL++0BLQOmta3e8fpgaq
++DDkmGGt60hpizfftkkGoZUVs+MabuJwCezs5n+KcyztGhGKCTtLJfv+1N1aevrFF
++50E7rkqTkhHsCjMvL/dnmDVzuXDkqJ2SGeWC9fSwWEKmVEA6QDCXPc8RyGEgJPgF
++gK7Q+5JF6zd3ZSVlcX8lCivXw4GX6Mh2ZjE3DtDIaGpuQIFV/y3vo0c/8RVMBiMo
++dGuf7tB1eQn0vSFRUc3UrZIMBspK7Q==
+ -----END CERTIFICATE-----
+diff --git a/examples/puma/chain_cert/cert.crt b/examples/puma/chain_cert/cert.crt
+index 8467b47..89010e8 100644
+--- a/examples/puma/chain_cert/cert.crt
++++ b/examples/puma/chain_cert/cert.crt
+@@ -1,20 +1,20 @@
+ -----BEGIN CERTIFICATE-----
+ MIIDLjCCAhagAwIBAgIBbzANBgkqhkiG9w0BAQ0FADAmMSQwIgYDVQQDDBtpbnRl
+-cm1lZGlhdGUucHVtYS5sb2NhbGhvc3QwHhcNMjQwODExMDAwMDAwWhcNMjUwODEx
++cm1lZGlhdGUucHVtYS5sb2NhbGhvc3QwHhcNMjUwNzAxMDAwMDAwWhcNMzYwNzAx
+ MDAwMDAwWjAeMRwwGgYDVQQDDBN0ZXN0LnB1bWEubG9jYWxob3N0MIIBIjANBgkq
+-hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkH1hQqC0EFwYxi5+Ihqat9Yqebpk0A9x
+-ZzdO68eBSw4glnhh/+8VNB238q3nVD+0oL5oOBFVPAA34jUrrngS3LSl7tx4y1tj
+-jqn2LwKkdjAaaQn7uNKf/Ow6JX8dsaFpEUmabOzQBbhQtUDdbHmX1jgJYy8siSdU
+-ExXtNHAA+kqlif0Hcj1Xx8dlXQlLiDgdO1I5h84rjfdX+TUGwnJO5MkIZ5X5r6tE
+-hk8s/2dvbrU2AKcP+pTY4jw/fyDNd9q8OdW186RlBdS+uyX3D2hh+8aVLONQIJOx
+-wRyQaImYzHPWMDO6MuQ5/5LAxFFYWCGSLvUTdrillB0Snmppe9uGhwIDAQABo28w
+-bTAdBgNVHQ4EFgQUQT/iPOTx/zDEIgWHiraGJdrud74wCwYDVR0PBAQDAgbAMBMG
+-A1UdJQQMMAoGCCsGAQUFBwMBMAkGA1UdEwQCMAAwHwYDVR0jBBgwFoAU1V8CDxIv
+-GpM3njBhaJZ/FWJz6IcwDQYJKoZIhvcNAQENBQADggEBADHQ75un1UtxDI9oluXu
+-wEJL0515nIAKjaWFCl0Z/CGaAWkkJERk0JBxTe9J/MrYY68NYCCAusRoUoRbvcA2
+-GQ8vKae5V6/md+npZpKQznmUk+nZMzNKr+QoMY/nvtLA5tZ85fsU40H4nbvb23EY
+-3o6IiEbLD0G3FbIFtkgQ7+j9w6bvvMwd+3Ed0jSjRl4wKi4cXgD1UIyce/MVzAzT
+-bXW2SLWjfRzcTsrAnrbno5S3g+KMD1w9zGNppYiFH0zydpatKjJW18r/6XgJqoim
+-Rl5OGVnMNgIAw+S8/G3+/IIPXWHFE29R3j3oXjm/F8570TpQTYyx8wOmEr+zJPv0
+-8gU=
++hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnweGJw3HXhvtIAFL6i3hzFdD5F3UG2Nm
++hIGaiKyDy71b25rkXFduG8R9i4s5rVBUdafA2OlrRDWMMrlYSudJnlB6P2jtBRxB
++7iw66vBVCBstDiKEr5xWFceG+2WpHU1peLCj72Ujuy/Xc/85S+70a9ISXItDRuyY
++tNTLi1HROioH6A0MfpvoLKxHYyoJ1dxu/eXikY8uk+J1cKogOP0jjn0VieJXptqc
++nHICV5/LmX3KC7ZxowexrQhTw81cKtx0fVeyZAHlM0rmIj23iajLqLtE+tq07P50
++OP8uABiK53L9RH55SlM/7PjDss6/VZDG7xsRBhEzaU39jOuSmZdrewIDAQABo28w
++bTAdBgNVHQ4EFgQUBt0gNG2VFq4KeC5rPkvqxlxUZpgwCwYDVR0PBAQDAgbAMBMG
++A1UdJQQMMAoGCCsGAQUFBwMBMAkGA1UdEwQCMAAwHwYDVR0jBBgwFoAUDH40Tp0C
++9PsflBT7LIr3BXriX84wDQYJKoZIhvcNAQENBQADggEBAIsh0gAB91/phH0XSbaV
++5X7bOvUQZBkF6VU3FMSKz1qeP7zhxhHnsTQVAWRCT4QdQ0bXzWDaUubUfS1uL9fW
++hMS6qJ/X56WjYvzUqr6Haxxc6nF2SzaZfNHC02uBOBqZaOWsf0rEv4M9A1PPPyy4
++ZO5nCLsLvReiAXViAyRO2HjXej/820fXh0uwEZgR8tUaQEt5frphr9cT/Q70kn+M
++XfpXvhGmLZ9C+0pXS0ILJRb8DccdfL6UMmQEPyfuW2OJrCDwvK3aG4KA2mdAg9Ca
++OvxCQ9WgAkMR2P7dHovoYaMsl8Nipiy/i0YeVG1rJAledWOO05xiVPdiTPkJk8JC
++PPU=
+ -----END CERTIFICATE-----
+diff --git a/examples/puma/chain_cert/cert.key b/examples/puma/chain_cert/cert.key
+index ed2bd0d..790455c 100644
+--- a/examples/puma/chain_cert/cert.key
++++ b/examples/puma/chain_cert/cert.key
+@@ -1,27 +1,27 @@
+ -----BEGIN RSA PRIVATE KEY-----
+-MIIEowIBAAKCAQEAkH1hQqC0EFwYxi5+Ihqat9Yqebpk0A9xZzdO68eBSw4glnhh
+-/+8VNB238q3nVD+0oL5oOBFVPAA34jUrrngS3LSl7tx4y1tjjqn2LwKkdjAaaQn7
+-uNKf/Ow6JX8dsaFpEUmabOzQBbhQtUDdbHmX1jgJYy8siSdUExXtNHAA+kqlif0H
+-cj1Xx8dlXQlLiDgdO1I5h84rjfdX+TUGwnJO5MkIZ5X5r6tEhk8s/2dvbrU2AKcP
+-+pTY4jw/fyDNd9q8OdW186RlBdS+uyX3D2hh+8aVLONQIJOxwRyQaImYzHPWMDO6
+-MuQ5/5LAxFFYWCGSLvUTdrillB0Snmppe9uGhwIDAQABAoIBAAP+IvjnXfJxyRF4
+-6W1h1NKtrWDNwMlrE9QpWBn12mHLkyT1UKf04F4fUBz5p0HRvNkQSer6t6M/0kuC
+-8qEQmlzU9RzjpMbh0J95nN7xsL+/Vot+hiE2WMtxb63nlFd7QV8D7KuD47+0ty47
+-C6NavNJjnAbMn+tuVcltOq/PRIemC8j2IypizQfeOh/1TKtetotPkCiIZnl32UJe
+-TH2Z3y7Ig9N6bUerYFUkH1Olri2SvZf20Xy1gpARqh2kRz+VaCZjEbAubSu4GOtG
+-xMQq7ZL4GYjYQt3e0rOHeFCMc6N2UdzC5vW8dRNBLRWbUCaqqCoe9iYgkzNMqhny
+-rvUhdxkCgYEAxW/4LoF0piecrUAXoqd2K+ojAvYqExgsO0BMdphGt//lQu9bl6qo
+-kZDGwHZuDweFrdRA0p85FhwZqpv26kri5MAsuywr5f7OUF9ZJM7GusGoU3ND78yO
+-NYJOhwV+MTksTTyQW3MGGM5HisEvW2m+s1SpNTQh6wO7TuKk/5dUvQsCgYEAu1jv
+-M55gdC56ckF+7ehWPV1TedeIz/Y+Ezh55kQhBKMPOT48QTX4GM4rxKJGuWxJPE5E
+-ZCfnhp1kSYAEBNalm9nk56kP+4soRFKDu6Tl0xAKHNahQTX0uWdZuIb7i8Z1AakI
+-w3KghinEKnOZC8bVQNhw3a6gJ0lMOLEO7u/qsfUCgYEAsklF51jnKRMkHB6AOVTX
+-FRi8vPPlUpDFgEuzwHQJiCX/tM3H+9ETnz8I+sr234N/Z1T/pDI7rod5deKYuUEe
+-WkpfGjXs/id1zoYLTX2bXxF5GsI/Ws9wq0kb+Dkxlul149kI0kuv+b5sRBPm27lF
+-h1Kv6WdGKZ6ZCccID/Vrg7kCgYAic9RpVbK/KtzxrgG9loBlgIgdW/mY5Nu9hSFF
+-qzm3NJVUHZHPHDGnviJmYsFG0BcXs/z3vi7hnogWzCfxC9ggtQ1XXMvHomuhRNtc
+-4pIxIj35166H43hBsDPbr1cK+VADIiauaqICiiO8+s0mUUZeSm9XFQn2r5AIzObG
+-IfCzEQKBgHpa6qjC9HMG1JFfM/I9piFPurtTVcdA+o8fPymUERX4S6B9H4vUY2L/
+-jgR/ckxJbje7OU9TkBBKQPDLXXvm2Ut2qe20FrrQhDVazAtgPm4XonRivc0+SMop
+-e4omuh48CV4OUKYdYFNsswZhUnuiJNYnZ7oQSC/e3HCWooVDUJkz
++MIIEpAIBAAKCAQEAnweGJw3HXhvtIAFL6i3hzFdD5F3UG2NmhIGaiKyDy71b25rk
++XFduG8R9i4s5rVBUdafA2OlrRDWMMrlYSudJnlB6P2jtBRxB7iw66vBVCBstDiKE
++r5xWFceG+2WpHU1peLCj72Ujuy/Xc/85S+70a9ISXItDRuyYtNTLi1HROioH6A0M
++fpvoLKxHYyoJ1dxu/eXikY8uk+J1cKogOP0jjn0VieJXptqcnHICV5/LmX3KC7Zx
++owexrQhTw81cKtx0fVeyZAHlM0rmIj23iajLqLtE+tq07P50OP8uABiK53L9RH55
++SlM/7PjDss6/VZDG7xsRBhEzaU39jOuSmZdrewIDAQABAoIBAACoafoaDH2IEAsP
++LzPgzLZTsMGK3kTevGXVQ2u5w9x6IIDuSVONzJeyl4CWDmmxIZoXcVd0X74c7+3C
++O9wozFYN/WVAbIjPGY+ccskO6QQHkaOzjUyFkQru6UK0iBE7aL/X9BzE+B40VyC4
++KSAS2Iqra81bia5gimhKbmYEQYTghC2lrnC2yXG+tmRuwptaqDA3Ybdy66VswsBP
++O9cmLfSUIcVRt7lLs8P031VVWEq0P+O8GHt6gn+EsctxJBTSB6v8cEsTrda7bIdj
++ym2RksvyfYxzLEz/yMbuxnjvGtXMf03QZGa03uF3u5Np+3ZOUtXZuqceAPYoPFqu
++axkp78ECgYEA4FU3YqbXRtMaHWYFqcMj+lnw6W7Lr0g/VS1B8ys8TVOw3qD9AaLX
++LE0gZItimiTk+vbcR8I8Ft328pSzugERhDLF1to+jKJxWxxWZM3iERDE4zGPMUpN
++2UU66NYxTO9LdMP8UzGW/Rs4852TJ3GEyQLvINYkx6dlRAF8VmWyLp8CgYEAtXpq
++kH+8t4KM/5HgdL0sTCgj1Hgx4tnxBNA4nIjogIe5oPm/ABM+cyZtkM2ybQCtBadU
++7CswjtJZKaiNEuG2v83SpJlRK3uDXmYgXFyCZaSYpEF6peLRwsYGgrXX7qMr8phM
++BIjYjxcLoKBaCBc9RlyHynT4GO4aZIjRBFx3QaUCgYEAmm9v8pVDLLnVh5mdmnIB
++ya6zYDBrPp8xInVGqp4AJIfSAmG367FsCk6KV01xswZlMLRTj38TGPbzs6pVVF65
++7VV6x191oiGOghevDjSCRhdSQ8nxdxBdKY80b+hNBlbSjm8BvVAtTs+31FaNYKEQ
++tcU0VFm39k6yMzAGpf/au6cCgYBYyzbM0NNDbssSWQvb0puT/6fYU58FAeHdmwu3
+++3zXNpFq5AfCP6g0qz68tQhyMPx3YbI5g8BUgTNDIMc1z96c5lYEV0fR4LMcQxfe
++WR0sImbVJ3ydIefERyP0XIj0qD3eiwnWxiY/jOURiKPEhapjfO6r7qNdf1LGkfLD
++EYMASQKBgQCIgg9p0jwzdaI2zbu1k/l1Dw920ivF2poItuVEQ5pqt+tcs7zAmi8K
++3jteddtgTgP77FIAUgR+/va7Bq+lmzkLAdSvkpNTD6IiY9T+O8JuKsZ3LZCmakmC
++kmzkOX6bNuRHEvppOcPpX/5sup+IDT4CZX/LN8Nqssx5HY2fyHgMBw==
+ -----END RSA PRIVATE KEY-----
+diff --git a/examples/puma/chain_cert/cert_chain.pem b/examples/puma/chain_cert/cert_chain.pem
+index 5f391f3..40ed0f5 100644
+--- a/examples/puma/chain_cert/cert_chain.pem
++++ b/examples/puma/chain_cert/cert_chain.pem
+@@ -1,60 +1,59 @@
+ -----BEGIN CERTIFICATE-----
+ MIIDLjCCAhagAwIBAgIBbzANBgkqhkiG9w0BAQ0FADAmMSQwIgYDVQQDDBtpbnRl
+-cm1lZGlhdGUucHVtYS5sb2NhbGhvc3QwHhcNMjQwODExMDAwMDAwWhcNMjUwODEx
++cm1lZGlhdGUucHVtYS5sb2NhbGhvc3QwHhcNMjUwNzAxMDAwMDAwWhcNMzYwNzAx
+ MDAwMDAwWjAeMRwwGgYDVQQDDBN0ZXN0LnB1bWEubG9jYWxob3N0MIIBIjANBgkq
+-hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkH1hQqC0EFwYxi5+Ihqat9Yqebpk0A9x
+-ZzdO68eBSw4glnhh/+8VNB238q3nVD+0oL5oOBFVPAA34jUrrngS3LSl7tx4y1tj
+-jqn2LwKkdjAaaQn7uNKf/Ow6JX8dsaFpEUmabOzQBbhQtUDdbHmX1jgJYy8siSdU
+-ExXtNHAA+kqlif0Hcj1Xx8dlXQlLiDgdO1I5h84rjfdX+TUGwnJO5MkIZ5X5r6tE
+-hk8s/2dvbrU2AKcP+pTY4jw/fyDNd9q8OdW186RlBdS+uyX3D2hh+8aVLONQIJOx
+-wRyQaImYzHPWMDO6MuQ5/5LAxFFYWCGSLvUTdrillB0Snmppe9uGhwIDAQABo28w
+-bTAdBgNVHQ4EFgQUQT/iPOTx/zDEIgWHiraGJdrud74wCwYDVR0PBAQDAgbAMBMG
+-A1UdJQQMMAoGCCsGAQUFBwMBMAkGA1UdEwQCMAAwHwYDVR0jBBgwFoAU1V8CDxIv
+-GpM3njBhaJZ/FWJz6IcwDQYJKoZIhvcNAQENBQADggEBADHQ75un1UtxDI9oluXu
+-wEJL0515nIAKjaWFCl0Z/CGaAWkkJERk0JBxTe9J/MrYY68NYCCAusRoUoRbvcA2
+-GQ8vKae5V6/md+npZpKQznmUk+nZMzNKr+QoMY/nvtLA5tZ85fsU40H4nbvb23EY
+-3o6IiEbLD0G3FbIFtkgQ7+j9w6bvvMwd+3Ed0jSjRl4wKi4cXgD1UIyce/MVzAzT
+-bXW2SLWjfRzcTsrAnrbno5S3g+KMD1w9zGNppYiFH0zydpatKjJW18r/6XgJqoim
+-Rl5OGVnMNgIAw+S8/G3+/IIPXWHFE29R3j3oXjm/F8570TpQTYyx8wOmEr+zJPv0
+-8gU=
++hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnweGJw3HXhvtIAFL6i3hzFdD5F3UG2Nm
++hIGaiKyDy71b25rkXFduG8R9i4s5rVBUdafA2OlrRDWMMrlYSudJnlB6P2jtBRxB
++7iw66vBVCBstDiKEr5xWFceG+2WpHU1peLCj72Ujuy/Xc/85S+70a9ISXItDRuyY
++tNTLi1HROioH6A0MfpvoLKxHYyoJ1dxu/eXikY8uk+J1cKogOP0jjn0VieJXptqc
++nHICV5/LmX3KC7ZxowexrQhTw81cKtx0fVeyZAHlM0rmIj23iajLqLtE+tq07P50
++OP8uABiK53L9RH55SlM/7PjDss6/VZDG7xsRBhEzaU39jOuSmZdrewIDAQABo28w
++bTAdBgNVHQ4EFgQUBt0gNG2VFq4KeC5rPkvqxlxUZpgwCwYDVR0PBAQDAgbAMBMG
++A1UdJQQMMAoGCCsGAQUFBwMBMAkGA1UdEwQCMAAwHwYDVR0jBBgwFoAUDH40Tp0C
++9PsflBT7LIr3BXriX84wDQYJKoZIhvcNAQENBQADggEBAIsh0gAB91/phH0XSbaV
++5X7bOvUQZBkF6VU3FMSKz1qeP7zhxhHnsTQVAWRCT4QdQ0bXzWDaUubUfS1uL9fW
++hMS6qJ/X56WjYvzUqr6Haxxc6nF2SzaZfNHC02uBOBqZaOWsf0rEv4M9A1PPPyy4
++ZO5nCLsLvReiAXViAyRO2HjXej/820fXh0uwEZgR8tUaQEt5frphr9cT/Q70kn+M
++XfpXvhGmLZ9C+0pXS0ILJRb8DccdfL6UMmQEPyfuW2OJrCDwvK3aG4KA2mdAg9Ca
++OvxCQ9WgAkMR2P7dHovoYaMsl8Nipiy/i0YeVG1rJAledWOO05xiVPdiTPkJk8JC
++PPU=
+ -----END CERTIFICATE-----
+ -----BEGIN CERTIFICATE-----
+ MIIDMjCCAhqgAwIBAgIBCzANBgkqhkiG9w0BAQ0FADAcMRowGAYDVQQDDBFjYS5w
+-dW1hLmxvY2FsaG9zdDAeFw0yNDA4MDEwMDAwMDBaFw0yODA4MDEwMDAwMDBaMCYx
++dW1hLmxvY2FsaG9zdDAeFw0yNTA3MDEwMDAwMDBaFw0zNjA3MDEwMDAwMDBaMCYx
+ JDAiBgNVBAMMG2ludGVybWVkaWF0ZS5wdW1hLmxvY2FsaG9zdDCCASIwDQYJKoZI
+-hvcNAQEBBQADggEPADCCAQoCggEBAKe0Vb0OyhNyWi4/u1jwLOkDYGx7+aXOJJyN
+-5ExJNS0goWy8+OQKVBwFgZZ5jqqfrXlLheOpAEpRm7TIJVTIwD1/gi/zrNN1ec3D
+-uJMBvlTzNVozfBncQ9EJ62JRC3I/56W1xYMekCIG2SjzSnAfNSojyN6SLxGmtT89
+-xN6parFq/GcvEtssDRVVUm6pyIOgpDOgTuUcqT3qUgOkN9w+5ZgjKWAc1BuMipR9
+-f8wwjuhXx2XlH2lodVWl94xo4ipY7sd2frF/oil9SXDC3ZrwGdkt9TQaCMYlt74V
+-yNxPAX5XwRH8b2OAsIGkPNh7TvIkKR33JkKcXXpZbxlRP6PDWR0CAwEAAaN1MHMw
+-HQYDVR0OBBYEFNVfAg8SLxqTN54wYWiWfxVic+iHMA4GA1UdDwEB/wQEAwICBDAT
+-BgNVHSUEDDAKBggrBgEFBQcDATAMBgNVHRMEBTADAQH/MB8GA1UdIwQYMBaAFC4S
+-mXgLro3UDdm+hU5w7yTobbWdMA0GCSqGSIb3DQEBDQUAA4IBAQAOdOtD3py2k4OO
+-0Q5KvmvyybaeSlFPM6/iXNakmqJY3lELnJgjWYgBXlOK91M7F2xG8YRFoBrUipXd
+-rMAburoWjnKvMoPaGZqbpligfkPIueo+ON/Q27UhvH2EYFzTOGjfnCiSCzpekesC
+-32MhK7mB9Uzu9yxDgtRu0IRqCk9WbU35qDzx7mUEZwCHe11T6tV4k9ZHAvhqEvaq
+-sqAgA+OoXBev6wx1tWgiqf40vuKZBRutWUSTHgGIXqain2l5b7Jv6TkCNI4HttHN
+-43oME4M6P1/iH+l99Y7fZBkLGnkGYPiWXQH9NyydQVHOBm3dN26QJzAmV06ZLxEm
+-iX6YKGNd
++hvcNAQEBBQADggEPADCCAQoCggEBAI1oWjP0qqF7UZqnmfU2nTVC+IotygpP2jFe
++bd+navwcWLoizHEy/h5QdmiEUu9L/kR9krMfhcOL7z0mETBVQpfN3JsYkn/gLyJd
++6XES3dwHXINAp6LMfwQXOYCbv+yC5KRJ/kER/PIrY2/bwLR8eT5mOZJqtmpE3LiQ
++UUEXcEX5ycQ+xdwYmKgGJCjmDdBhSgMSMY1dhZM5nk/HI8jRT10iJ/g6GKwsoveu
++B8WSA4iX1ZUxRFGhaXbkDo+6ldzPPERa9yQELy8iQHW3hC35v0xFSfirL2DOvSRf
++p3Vf/7zHn3EEF8QBO6FHCnDuHUqYXnjjv1k2f+pAQQLQQXT2yhsCAwEAAaN1MHMw
++HQYDVR0OBBYEFAx+NE6dAvT7H5QU+yyK9wV64l/OMA4GA1UdDwEB/wQEAwICBDAT
++BgNVHSUEDDAKBggrBgEFBQcDATAMBgNVHRMEBTADAQH/MB8GA1UdIwQYMBaAFN2Y
++KF6DGM5YWA6/dwe9xyVJbEF4MA0GCSqGSIb3DQEBDQUAA4IBAQBsxxIbUQvJEYsu
++jGmNVXTbB3h9yh8u0pYEBbPSTKo38Ah4OAtrpnzn3SaniRdahFegn4wmcNJr2BAj
++8EFkNdLfHzB/NnDfzmHAfZlkf2OLgDotKTT2psL6wgWFLIu47MFoge4z4zVFLaNp
++ESJUiHDoFIms6DXDFoKiCO0IA6sCrYEkaOBfC8IMaPyDcnIrrdEuTuZd/5DxhAih
++jlNUPszXAh7wGVoFyKiEjbACmQXAWKvTtALNl5Z3aXeucR3iamrUDVmJyKKYsdvh
++24dNlMF6beMl8v8tIQ0iQBbkD/jsp3SjzrANMNhgOQHKcXQ84j1C3AAkNwTL0M7o
++05PKNc+5
+ -----END CERTIFICATE-----
+ -----BEGIN CERTIFICATE-----
+-MIIDOTCCAiGgAwIBAgIBATANBgkqhkiG9w0BAQ0FADAcMRowGAYDVQQDDBFjYS5w
+-dW1hLmxvY2FsaG9zdDAeFw0yNDA4MDEwMDAwMDBaFw0yODA4MDEwMDAwMDBaMBwx
++MIIDEjCCAfqgAwIBAgIBATANBgkqhkiG9w0BAQ0FADAcMRowGAYDVQQDDBFjYS5w
++dW1hLmxvY2FsaG9zdDAeFw0yNTA3MDEwMDAwMDBaFw0zNjA3MDEwMDAwMDBaMBwx
+ GjAYBgNVBAMMEWNhLnB1bWEubG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOC
+-AQ8AMIIBCgKCAQEAuKZ43p+68AFTSVno4p8rxk2Ixngw9CR9K5/11LCS+nM9jPph
+-E0aWluwRAdWNs0CLN9A9ZKqJq+G67Y6CAw87g4RfUaZUkBkClwH76WUYzMTo9P3e
+-UMpwzVtdrijW2Y/9MnxMCyt14WVfoY0itjEyfeGT3FbP8yKuk2qYoz3YecrhiRGu
+-xv5gFZOd0hxIL0HkRe0lrpgWDj4MrvsBqUnb4aeqDgjz4lPUWo/GSvgU7xcV5Q6c
+-Ti8FB9k3HZfphb2JHydZfxIqCCeflZlAQBBKNevWbSxhfsfjzqHmC64M9ELoJ/1J
+-JFoX+zdlv9DqOn2k67N4rZcfptoEKPQThPmX+wIDAQABo4GFMIGCMB0GA1UdDgQW
+-BBQuEpl4C66N1A3ZvoVOcO8k6G21nTAOBgNVHQ8BAf8EBAMCAgQwEwYDVR0lBAww
+-CgYIKwYBBQUHAwEwDAYDVR0TBAUwAwEB/zAuBgNVHSMEJzAloSCkHjAcMRowGAYD
+-VQQDDBFjYS5wdW1hLmxvY2FsaG9zdIIBATANBgkqhkiG9w0BAQ0FAAOCAQEAOy3A
+-9GPAQvTeqbmvMlkJh8jtTRUOKmcGUNPFQqJ4aTx/BXh8x415zjW9ZSjLN7ZSNxjJ
+-nFm1XeD9I1EB1JjXwnkNTgC7zUn+kyuIMBxEvfsM0Pfdumr8VOrlidIJeTLBs029
+-tYd/kVlaZfoDS/cSu8ezS7urwY/usHRuku6MUCs4L1WZlDptweGUCWsESpIEGF7d
+-ZJC8f6C8rwQimOyhhouVSlOh1NxC338TvQSflhRtWiP4lIgDVNMmb4MRDAUzbkrg
+-SH4+Oho7EeoK2VSmgqSAyIpOTBBhIcdEgib7Hz+Uq+Y6KekuD8Y8SslbXitBqgS3
+-8uByucqDNovFjYNMKw==
++AQ8AMIIBCgKCAQEArOhy3ADotcJ0F7rl0KpWlm/a6wkyeSbTNPd+gaccACR1wd92
++kXs2/S5day5/lP6uVUxrrKU2fhFXSy+aI5bng5cQl0ita6sVZCThs9k683w/fobc
++OMIKk3MFPxF4QJTa4iNb21g8olKYT/L2b0MUTq+AvnlC3mAAJkLrXjML3wrhwORa
++VmTdsepqMOkQD3EcuggbkfkUK3p3xfVcHJ2iEfRhGY/7JxNcm1o6YLbj8WPqAKcH
++0f8KNjzr0IJuMDKy/jArV7VdA9TeGoq6ECMkIIx7y9lwu0gfkJNkmmEYJbU7c0ik
++UzwIko3qxlvB9nugrzzsG11aTwYkLu2WE1BhcQIDAQABo18wXTAdBgNVHQ4EFgQU
++3ZgoXoMYzlhYDr93B73HJUlsQXgwDgYDVR0PAQH/BAQDAgIEMBMGA1UdJQQMMAoG
++CCsGAQUFBwMBMAwGA1UdEwQFMAMBAf8wCQYDVR0jBAIwADANBgkqhkiG9w0BAQ0F
++AAOCAQEAjwWu4jaf6ybB4BVNuNvvFFCa40iRsjYH7W9LSjtkObEDyOAr4GK3j83b
++3r23HVE4y/Aiz502DlENUdhLw3rPqfY6efHG1k6W0RiKbL++0BLQOmta3e8fpgaq
++DDkmGGt60hpizfftkkGoZUVs+MabuJwCezs5n+KcyztGhGKCTtLJfv+1N1aevrFF
++50E7rkqTkhHsCjMvL/dnmDVzuXDkqJ2SGeWC9fSwWEKmVEA6QDCXPc8RyGEgJPgF
++gK7Q+5JF6zd3ZSVlcX8lCivXw4GX6Mh2ZjE3DtDIaGpuQIFV/y3vo0c/8RVMBiMo
++dGuf7tB1eQn0vSFRUc3UrZIMBspK7Q==
+ -----END CERTIFICATE-----
+diff --git a/examples/puma/chain_cert/intermediate.crt b/examples/puma/chain_cert/intermediate.crt
+index cc9895e..501d1ad 100644
+--- a/examples/puma/chain_cert/intermediate.crt
++++ b/examples/puma/chain_cert/intermediate.crt
+@@ -1,20 +1,20 @@
+ -----BEGIN CERTIFICATE-----
+ MIIDMjCCAhqgAwIBAgIBCzANBgkqhkiG9w0BAQ0FADAcMRowGAYDVQQDDBFjYS5w
+-dW1hLmxvY2FsaG9zdDAeFw0yNDA4MDEwMDAwMDBaFw0yODA4MDEwMDAwMDBaMCYx
++dW1hLmxvY2FsaG9zdDAeFw0yNTA3MDEwMDAwMDBaFw0zNjA3MDEwMDAwMDBaMCYx
+ JDAiBgNVBAMMG2ludGVybWVkaWF0ZS5wdW1hLmxvY2FsaG9zdDCCASIwDQYJKoZI
+-hvcNAQEBBQADggEPADCCAQoCggEBAKe0Vb0OyhNyWi4/u1jwLOkDYGx7+aXOJJyN
+-5ExJNS0goWy8+OQKVBwFgZZ5jqqfrXlLheOpAEpRm7TIJVTIwD1/gi/zrNN1ec3D
+-uJMBvlTzNVozfBncQ9EJ62JRC3I/56W1xYMekCIG2SjzSnAfNSojyN6SLxGmtT89
+-xN6parFq/GcvEtssDRVVUm6pyIOgpDOgTuUcqT3qUgOkN9w+5ZgjKWAc1BuMipR9
+-f8wwjuhXx2XlH2lodVWl94xo4ipY7sd2frF/oil9SXDC3ZrwGdkt9TQaCMYlt74V
+-yNxPAX5XwRH8b2OAsIGkPNh7TvIkKR33JkKcXXpZbxlRP6PDWR0CAwEAAaN1MHMw
+-HQYDVR0OBBYEFNVfAg8SLxqTN54wYWiWfxVic+iHMA4GA1UdDwEB/wQEAwICBDAT
+-BgNVHSUEDDAKBggrBgEFBQcDATAMBgNVHRMEBTADAQH/MB8GA1UdIwQYMBaAFC4S
+-mXgLro3UDdm+hU5w7yTobbWdMA0GCSqGSIb3DQEBDQUAA4IBAQAOdOtD3py2k4OO
+-0Q5KvmvyybaeSlFPM6/iXNakmqJY3lELnJgjWYgBXlOK91M7F2xG8YRFoBrUipXd
+-rMAburoWjnKvMoPaGZqbpligfkPIueo+ON/Q27UhvH2EYFzTOGjfnCiSCzpekesC
+-32MhK7mB9Uzu9yxDgtRu0IRqCk9WbU35qDzx7mUEZwCHe11T6tV4k9ZHAvhqEvaq
+-sqAgA+OoXBev6wx1tWgiqf40vuKZBRutWUSTHgGIXqain2l5b7Jv6TkCNI4HttHN
+-43oME4M6P1/iH+l99Y7fZBkLGnkGYPiWXQH9NyydQVHOBm3dN26QJzAmV06ZLxEm
+-iX6YKGNd
++hvcNAQEBBQADggEPADCCAQoCggEBAI1oWjP0qqF7UZqnmfU2nTVC+IotygpP2jFe
++bd+navwcWLoizHEy/h5QdmiEUu9L/kR9krMfhcOL7z0mETBVQpfN3JsYkn/gLyJd
++6XES3dwHXINAp6LMfwQXOYCbv+yC5KRJ/kER/PIrY2/bwLR8eT5mOZJqtmpE3LiQ
++UUEXcEX5ycQ+xdwYmKgGJCjmDdBhSgMSMY1dhZM5nk/HI8jRT10iJ/g6GKwsoveu
++B8WSA4iX1ZUxRFGhaXbkDo+6ldzPPERa9yQELy8iQHW3hC35v0xFSfirL2DOvSRf
++p3Vf/7zHn3EEF8QBO6FHCnDuHUqYXnjjv1k2f+pAQQLQQXT2yhsCAwEAAaN1MHMw
++HQYDVR0OBBYEFAx+NE6dAvT7H5QU+yyK9wV64l/OMA4GA1UdDwEB/wQEAwICBDAT
++BgNVHSUEDDAKBggrBgEFBQcDATAMBgNVHRMEBTADAQH/MB8GA1UdIwQYMBaAFN2Y
++KF6DGM5YWA6/dwe9xyVJbEF4MA0GCSqGSIb3DQEBDQUAA4IBAQBsxxIbUQvJEYsu
++jGmNVXTbB3h9yh8u0pYEBbPSTKo38Ah4OAtrpnzn3SaniRdahFegn4wmcNJr2BAj
++8EFkNdLfHzB/NnDfzmHAfZlkf2OLgDotKTT2psL6wgWFLIu47MFoge4z4zVFLaNp
++ESJUiHDoFIms6DXDFoKiCO0IA6sCrYEkaOBfC8IMaPyDcnIrrdEuTuZd/5DxhAih
++jlNUPszXAh7wGVoFyKiEjbACmQXAWKvTtALNl5Z3aXeucR3iamrUDVmJyKKYsdvh
++24dNlMF6beMl8v8tIQ0iQBbkD/jsp3SjzrANMNhgOQHKcXQ84j1C3AAkNwTL0M7o
++05PKNc+5
+ -----END CERTIFICATE-----
+diff --git a/examples/puma/chain_cert/intermediate.key b/examples/puma/chain_cert/intermediate.key
+index 9269949..a1d0df4 100644
+--- a/examples/puma/chain_cert/intermediate.key
++++ b/examples/puma/chain_cert/intermediate.key
+@@ -1,27 +1,27 @@
+ -----BEGIN RSA PRIVATE KEY-----
+-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
+ -----END RSA PRIVATE KEY-----
+diff --git a/examples/puma/client_certs/ca.crt b/examples/puma/client_certs/ca.crt
+index c3d39dc..599b16a 100644
+--- a/examples/puma/client_certs/ca.crt
++++ b/examples/puma/client_certs/ca.crt
+@@ -1,19 +1,19 @@
+ -----BEGIN CERTIFICATE-----
+ MIIDDjCCAfagAwIBAgIBAzANBgkqhkiG9w0BAQsFADA4MRMwEQYKCZImiZPyLGQB
+-GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTELMAkGA1UEAwwCQ0EwHhcNMjQw
+-ODAxMDAwMDAwWhcNMjgwODAxMDAwMDAwWjA4MRMwEQYKCZImiZPyLGQBGRYDbmV0
++GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTELMAkGA1UEAwwCQ0EwHhcNMjUw
++NzAxMDAwMDAwWhcNMzYwNzAxMDAwMDAwWjA4MRMwEQYKCZImiZPyLGQBGRYDbmV0
+ MRQwEgYKCZImiZPyLGQBGRYEcHVtYTELMAkGA1UEAwwCQ0EwggEiMA0GCSqGSIb3
+-DQEBAQUAA4IBDwAwggEKAoIBAQDPVFa7U4cqfq2Nux7VuXIUhYtaiQwxEEZuDvGI
+-tlSVzpENnqFLbqH0QsOuxGgIZofsrSf4BrCzh4AoL3qY+HgVRCmkD09FnoWjFTfT
+-X6v7QaCtUsrb7RNASrrgyP7rB9y7sp9oc8FNJQA3gtJQxghffO9zGhnEvPt8EGGU
+-axh29BYVxvQpX1Av0SkYjTgpRus1s7r50tpoDHXhKyAHP6WEEVaN/8x1p9eXqVCT
+-XIhlJJ+dgwZz/Hfnb6gr97W5G16Ceo7ybS8syKBJf2D20DOL8kLAiNpjWm9spoJi
+-oxHvFMdDB3nUqZyRO+QU8gSoQBVYYqRlEnOXvouzqslUVdbLAgMBAAGjIzAhMA8G
++DQEBAQUAA4IBDwAwggEKAoIBAQCxatlqNB98n2Huwg4TNhTx81t4RDUHyRH5YUCT
++808QrxqqhNJGOSTfLDoobeObZqm8DzhZgeiMI8TQjGoQUPntARrfmS0qwBKpERJ7
++Se2mY7J5EFZtIR4dtTlD6CPzEC1cxdgF8+2BXCb/DdSRmgEMseC32cimYZt4uumA
++ckJfmGJst18nc8R9EPZdsW1mFjGSYrfigtqEcm4UOKnBRilMhacIXHJqUKcV6oIh
++KXWraHLex62Mzfp+g9MQ2xEmOz6j/nJ/54xqmFNoIR2mZBAOvsKMQVph/EWFF8Ei
+++NMkzXYbePkKaQBLMsKnonfIpfPzm4Sg8V51oSOG5KsW4JLzAgMBAAGjIzAhMA8G
+ A1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4IB
+-AQC9iO5jvBDNgDmUq8+NfsAZngWLOG7IR+Ez5h3CzGU9yzcJgn8y6PMjzhgc20le
+-WYzAHEG/KXFIfubUW/9iA8E6We0hm0LM1s9o7A9JAqsHcZ/pK2QmDW71JupU8o1z
+-3Qcu7jRzPc7zYgNwaD4/ccpJTAPGg6keV3YGN2Z5RpWykOFzP7WswaMIcKQE869c
+-Tyi8i71XkVrL+xx2pRiiNDOmfMkmm8TZ9tBP7n6BcRd556TTIxhjONvmamCraBQP
+-msPnMtb8+H3/IsMsUw02/fQTJ91FVa3t914Y24+q5xmkasyrhinTNmsa/S939P6I
+-JNNoAM6TUZrskKPtb/pMzaqn
++AQAayMxMY4+PRsjODW49e8YM+NfLIypZB9+QV432q6BTT+5KQh9DSBt1Bz5RaU1g
++tsz0sS7x0Iv7CvRwR1iDZOv8annHcjuEgxfWJ0+PBhFi2Tz1eF4EnpZt2RcJ/IMW
++xnsDLjRMASdmQxOLvxqz19fAQMAVw7ThkzicuW0ZMBX3baAf88m7w1Mu/V7P6rj5
++yw+SfZv/qNakUv2yc/2xEDRcfrYuimZAmGhM/HaPsta2BpvWJDpYe1Hq8AFWniz0
++C2epSzW+CdkpQZD/DIQmfWrWcBeb/XQ6hmouyJ6IWrgL45x7xcTLBOSAecBeZGMp
++npnO0PJN8Z/PQWz4sd8e2dIN
+ -----END CERTIFICATE-----
+diff --git a/examples/puma/client_certs/ca.key b/examples/puma/client_certs/ca.key
+index c689bd4..16a86af 100644
+--- a/examples/puma/client_certs/ca.key
++++ b/examples/puma/client_certs/ca.key
+@@ -1,27 +1,27 @@
+ -----BEGIN RSA PRIVATE KEY-----
+-MIIEpAIBAAKCAQEAz1RWu1OHKn6tjbse1blyFIWLWokMMRBGbg7xiLZUlc6RDZ6h
+-S26h9ELDrsRoCGaH7K0n+Aaws4eAKC96mPh4FUQppA9PRZ6FoxU301+r+0GgrVLK
+-2+0TQEq64Mj+6wfcu7KfaHPBTSUAN4LSUMYIX3zvcxoZxLz7fBBhlGsYdvQWFcb0
+-KV9QL9EpGI04KUbrNbO6+dLaaAx14SsgBz+lhBFWjf/MdafXl6lQk1yIZSSfnYMG
+-c/x352+oK/e1uRtegnqO8m0vLMigSX9g9tAzi/JCwIjaY1pvbKaCYqMR7xTHQwd5
+-1KmckTvkFPIEqEAVWGKkZRJzl76Ls6rJVFXWywIDAQABAoIBAEBT3K02l2OZ9mNZ
+-QZHyffDcFoa6quu2LwQK4uoWGFx6wQrGwyjSZLGS3YAmNFkW5umKODJ+cOjjC+Js
+-CM/Zl/iRM5JRpbjmHHSjKrUMpCHLFP1yCLr/7c8u4JjKBD4MLHKYU1lnQPyclFqk
+-3nhtWT+3VdwSpxghwq2Vr5ELQYX2WoHBDKj67yb2+yRVewjrmWd0f3Lm3KrPYDy2
+-McOOOB6HcZNsyXDihPYviCOmthv0AEb+HUmEwYn5A/TcTL1IVpt8YG51/VrYWysl
+-A4rD3t6L5yp3hTv05dezm+hU88hSv8w2M0CQDqrxVN6zMyQ7ixj4cCbTqBJwVjmj
+-IxkWyzECgYEA2My20inP2nai+ANkY56QF+2Mvof1qEpZh9J7oPjzStG3jqfjqVWT
+-ZkY25SLLGO7SB06XRAgFVrq5Xyb72pXENhV2KUzOHN+osERaAyZroFlRbJxfCL8s
+-p24JKVN7oJPDOJnYYv/cEEKAT1/ocxKHbi6oDZb/tJA7UHfT3NBIuV0CgYEA9NFD
+-uGuV53XfuyaGh/dHurGBKu8HBjt16COasSqMxH3U7rb4JRF56wB2pVAAE8AFivNd
+-A2om4b0CQK/F7TJvQY6lBKUcy4lOshwoYR2Ga7x58BJNbS6Da1OTwmk12BKxt10x
+-NgThGNjRL/A7x1M2r1CPvp9+WiJF9hdWWRy3RkcCgYBX1rGn+wrdD7490FoHRsJI
+-/5VLyRhOJDmcHzq54MPqJ4hAg2NpQ2PiR0aMlglFw9VS4pPFG57WIfdjRw854/5I
+-j299kkHcTv4w1LDHn/RxVl74K28Rwytbdui9Vra7O8MYFrUmf1XxPJByGIC8xuAa
+-U0sBnpFh3iI6GyK6z6T3fQKBgQCWofvNCUVe+UQD3xx/pELaOEWFqTTlPMi7YMzZ
+-nZinfdT6XFIqXKprUgmuhZ7GiCvg5wSgCTyLQMSWEJDz9UhHSgF27jDde0qUhIbD
+-2mrO91T/xgMl3qy16OLNh/a9UCNQ82JIHpBxvVZY7LObXTQUgrkvTOttghER7iIP
+-CoAqGQKBgQC+26VjLWtLGRqJvWnvDW5jS3/lFB/AZPvfeLNsSs4G9Fgrqx6qNoQu
+-dVI39k/kMLSqLP1iMIR5cbujF5akpWTX0dJReoeOYXJuf9hkm1+kWNiHBbNTbfqN
+-htxGidymslRrSsOv9zJys5zosfHvbcKbi1dPLlV+gPN1v4eXjtLOLw==
++MIIEowIBAAKCAQEAsWrZajQffJ9h7sIOEzYU8fNbeEQ1B8kR+WFAk/NPEK8aqoTS
++Rjkk3yw6KG3jm2apvA84WYHojCPE0IxqEFD57QEa35ktKsASqRESe0ntpmOyeRBW
++bSEeHbU5Q+gj8xAtXMXYBfPtgVwm/w3UkZoBDLHgt9nIpmGbeLrpgHJCX5hibLdf
++J3PEfRD2XbFtZhYxkmK34oLahHJuFDipwUYpTIWnCFxyalCnFeqCISl1q2hy3set
++jM36foPTENsRJjs+o/5yf+eMaphTaCEdpmQQDr7CjEFaYfxFhRfBIvjTJM12G3j5
++CmkASzLCp6J3yKXz85uEoPFedaEjhuSrFuCS8wIDAQABAoIBACStHfzigY/Vsv0U
++iKxYBcRutn4KO5w8aMbQ3/S126ZrTGvrwTxbG9A26F7rOJ4rfvMtgkyemmA+FLW4
++EUUGOGRSUiffFoM76Z+hs9xg0AwRmBeG1RcCPaOOjyQGnUfmFDqVe67fWj3fuwAG
++7+aZm5XwP7BCCUS78NPob9TpyebQ1QO1bLRR/JQdWBjCxQTnOaaV32e+/U9STBof
++NnlTclbLtM5Gq5JeFMhlLhiq24+GEUonJuxWZa15xZRsQSDLWSrUK5UGLLkEFuk/
++g804ORd2vzajfpOXVehrmRUWNKBSgL0jwxDdxrOgiOX1lZPIKVrzsuAKjl15lLiz
++0L2tbkECgYEA7cKxawJyRqyBLdmpqzXDfRT6jJLAQi7IAIuQ63ojwlAuEV8YekIm
++5n30DAu0cJ4foZ6UYf6B7Y0WbNhmCi+FRu2Av6JJBblm8oNnGzb25FRC1NW3aWoq
++GrwgrlGg1aXx5W84ntdddDQB4VjGFCGLUNmYxAjrWHFH7DBE44aJQfkCgYEAvwcY
++drgdhAxjHBIl4fCaFTO47g8EB7NSFQSf3xIdRNr4qOW97PNzT4zQn2STGPX5XTn+
++hI4e9wbAjv5zQm2EudhAWvCiC6h8SGEXLwPyYVKizaO+OMoOmvR4+PSUMpUr0HjF
++EojkQI55u3gob0RIuKjXyV3MKC4SRxeT4r7b90sCgYAXVpIVv/K5rzsq5f+6l5dt
++0r5ZSBppJLBrJUf/ZUjXTQmImP4NGis5Wsm22PtIRq0yLx+/krzsNXorCv7RJyL8
+++Fk39lUWo8FQMsfPKxEHDqJUw/mx9kLVxvuqQMb50cUx0T4MkXVR77zzgsRGu5gy
++Qnm1XG7FirEVpRNOBim4+QKBgQCdK1hcbVWTjKGKuf/DKrOLmDeiXmZhc4+oTVrA
++LWY5fbQzOnsOVqtcGy6Wxigk1FRr+MhJBanCcyLBQ+dPE06tnZgtemjJEMHYx1FM
++1IF6w4PBj+R1UwG7SkOyCYFZMNSQvJzgiBLMbq0HqnASQ+tVS03nlq3frTBKn8KE
++P6Y5iwKBgGMiT5pvkCTS30r2gy8WtUXyCwTKDsBF6NI246H9EFqXdrhm07ePBbU/
++4+VbUlVjxS405lmDwZmkjyspiuqqp4KQslHkw/qJnbRXBcxLWWgPez4Nj6WkXcn8
++ahCWp5H458iCM65m/76eUQxTqUj7j9/tPW1WexeWlw/LiIYhQCND
+ -----END RSA PRIVATE KEY-----
+diff --git a/examples/puma/client_certs/ca_store.jks b/examples/puma/client_certs/ca_store.jks
+index f522926..9071747 100644
+--- a/examples/puma/client_certs/ca_store.jks
++++ b/examples/puma/client_certs/ca_store.jks
+@@ -1,6 +1,8 @@
+-          mykey  C5 X.509  000	*H 0810
++          mykey  k X.509  000	*H 0810
+ 	&,dnet10
+-	&,dpuma10	UCA0240801000000Z280801000000Z0810
++	&,dpuma10	UCA0250701000000Z360701000000Z0810
+ 	&,dnet10
+ 	&,dpuma10	UCA0"0	*H  0
+- TVS*~չrZ1FnTΑKnBîhf'(/zxD)OE7_AR@JܻhsM% 7P_|sļ|akv)_P/)8)F5hu+ ?VuחP\e$swo+^zm/,ȠI`3BcZolbCyԩ;@XbesTU #0!0U00U0	*H  c̀9ύ~8nG3e=7	2#I^YA)qH~[b:Y!BhIq+d&n&Ts.4s=bph>?qILƃWv7fyFs?p\O(WZv43|&O~qy#c8j`h2}",S6'EU^ۏj̫)6k/w$h ΓQ쐣oLͪN	;~E$ywy[XLV
+\ No newline at end of file
++ jj4|a6[xD5a@OF9$,:(mf8Y#ЌjPߙ-*{IcyVm!9C#-\\&ԑȦaxrB_bl_'s}]mf1bڄrn8F)L\rjP!)uhrǭ~&;>rjSh!dAZaE"$vx
++i K2§wȥ󛄠^u# #0!0U00U0	*H  LcFn={#*YߐWSOJBCHu>QiM`.Ћ
++pGXdjyr;'Ob<x^m	{.4L'fC@ô8m0mɻS.^}֤Rs4\~.f@hLvֶ$:X{QV,gK5	)A&}jpt:j.ȞZ{y^dc)MAl-qlZqL6
+\ No newline at end of file
+diff --git a/examples/puma/client_certs/ca_store.p12 b/examples/puma/client_certs/ca_store.p12
+index 2af10d9..9b7934a 100644
+--- a/examples/puma/client_certs/ca_store.p12
++++ b/examples/puma/client_certs/ca_store.p12
+@@ -1,11 +1,13 @@
+ 0
+-0		*H		0	0	*H0 0	*H0W	*H0J0)	*H0GNӮF 0*H	 0	`He*!
+-ER_̀	H>x\`/-<-P"1|9OMO7lF)b[ ݥ~HkhLkQo2ݶ?Ek!QVNμP?>Bo|KJ| |#p@$!M480/gQ̧6.]CAmf3Xc[~Wpd{SooJsQfFm]b{51oVНǙYMXeR
+-ٚ/1!KL_'QT45yfN/&?ֶPw.;j),%"C)4o[)4؟Un7k/.kd2%rOwF+xkVn`~}s:]ٰtTq_ZLс:W!|*d^vэل^VaAPI"@rFIf*㞶Rэ{J`bB.}ӂJV@Ѕ.$5A4ߪ 6wnof2V-$^?4Ao-+K:-l}7S4abe<X$FuBy?zq9GHآoEnٷ~&Qtʣ
+-.BƼ>OjJm݈S-|v59GEbvVW}1U+Pd9q^|E%}u;zFQJZ&Q,T	S^AXϜBt5_.$~<fv=DNv|i4l\N\edk[h+گ=UED|',ܱ'CR.-41gmK 0	*H00~*H
+-10-0W	*H0J0)	*H0` 0*H	 0	`He*}/(YEqtМ*4TuAo`L!9^r!	d*A+=tܿ>))1,iJ5sDsq-ӈD[D[=8QB1D!$.L^`4-cx'xi7ճ~CxX[ot'|,DASGqɟV*Ȫ*EwgGH)X1B	JV! @6ÝEͣ^(絛;Q~Q/<ܵ<}2a˘0<IXԋ@PZO<=E saz5	Աad:PXuo2l;cVRn@q/nlr3rݽztr.ƃ:\EW0ҠZvU}XbuD'A(|4][	6s|(v1!IpP>:m-KTW2QXNpeohpT5!e5`9/<kz7hXΈ*<UyF*p/a4WUVSJژ/3?Xk5EDbSU;F-U.(A"5R1m/6y@zj_+փp8T!&'a13*qtBhX˼F{}eAj5/1s;R
+-i(>:mMN)";Ա7Y&
+-=ș5FiOKgL^s@Sn"Bpe~</VTӀX K2wm`*$p/n=J2]0G
+-Ni͞Ewl;yݡ3LLG)3 U^f0!Ԁy29Uo[bѱ7+.*E0j%h®7/y-_%֗UGu* ej֞XCD2t:11Moԃ7'ƴߜa\k!2cC)8FWoÎj7ј"PZH4o@zJ9̰jUT "aYGB$
+-25͚,'*\H8V)*q;@}u/F 'Au_ke5pZSP O8"eY#>< x
+-eX6t)>ǁ|3Z9_1:0	*H	1 c a0#	*H	1iԻXň%W0A010	`He  D:8T!W=7c~PW#*O-z'M" 
+\ No newline at end of file
++0		*H		0	0
++	*H0 0	*H0_	*H0R01	*H0$<5_LXcm 0*H	 0	`He*īrWug"Acf!Ơg[WDW(c.7х.㉷XJ)wt]V5>-Z&=Kah`] JZT:qcd1Maq,EAOV$d6Kh<)5I7Kc յ2u)N"$/2G.!A4#@,G:]cv!5ami3PG0ȋ~**V6*`䪬?*"iJ3F=!D:Yp1<ID$Q?&1QPRmML	j0s*[OsPi ;Bxd>˗ؼs!lE <sDz] H FD٢.	53/&9= AiPB!GT̝9q_\0OqykU)]+"tF)alv]{+k _bB\dw^8sq[n!Vєb55gKΥV"{;55+m]M|F]f;$:=ٚF[y<%pz\~[t;'IJ53|Ga{\㕼s)W;=N0r,Zwo	.	Qr|LyL^8zYLx,s$0 W#UqJ9_c>6|"m=iGpLR0m{J-&bMcwxm=⣱{"Ppնmէm|w9[B٤dhÞ/ܐxH>eyn][R1_bNQ2n}%z	ofAE$r/@'"%V'A3R7,`0	*H00*H
++9050_	*H0R01	*H0$:ЬL2>#H 1 0*H	 0	`He*߮M2"4KЂ"xz3xg#A{*%1:/.N9\W,i=&oREtBEx!/:w
++pacu =S"|Fth!N_C^JX6
++I1t^*qc	1o$~]`;<؟*=/۹ݕ,TCUu7`n=&gZ2(LfG%_aS&5҈
++}!RhCߖ
++7NO.*?mϓn1Iۜ	}R&j0fWU*a+uE|M}_(Z4z/zQtϸ P̅Clj|# C**D[^IgT1j{i{Y?f	a&Y4 jʸ+eq.HxNɇ߂亻i!᥷>u#C<xҾ
++EN{/ZͰʀ)K결|{pLtz^Z0>6#MF*jiY[4K	*#`O71b;n/j3<#5>3APz?-|pg?x,#HNl+Od=Meht}h׎0e>0~kcHc"<1[8EoXc)6U/' I>,H吮!nr/$0FZs%zGpnnrV`,f09h4.kc%rttFRDdXTܒ"ڄ3̋J!5;bmOd=7T)Bp_ ;U.|̟^\;DS"]K5%(qf0݌>d#R
++C% ظYճD
++lds"Z؃K<o9xln]W}y"As֫Un[qZ6,^s/ UL6t:q-BJ!0kYUn=MVkmzlU*G+<M}Кyų,6n`_v0ǭ!$.%/ ϶d:&~ۤmA
++@dFQBC~~pR ̈TgD?/o[9E@K-*[WUE	ğLDAiy21:0	*H	1 c a0#	*H	1/9]#Nlsd0A010	`He  1
++k'ARtpd(6\	4:V>`4~	 
+\ No newline at end of file
+diff --git a/examples/puma/client_certs/client.crt b/examples/puma/client_certs/client.crt
+index 79e7f6f..14eb1dc 100644
+--- a/examples/puma/client_certs/client.crt
++++ b/examples/puma/client_certs/client.crt
+@@ -1,19 +1,19 @@
+ -----BEGIN CERTIFICATE-----
+ MIIDBDCCAeygAwIBAgIBCzANBgkqhkiG9w0BAQsFADA4MRMwEQYKCZImiZPyLGQB
+-GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTELMAkGA1UEAwwCQ0EwHhcNMjQw
+-ODAxMDAwMDAwWhcNMjgwODAxMDAwMDAwWjA/MRMwEQYKCZImiZPyLGQBGRYDbmV0
++GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTELMAkGA1UEAwwCQ0EwHhcNMjUw
++NzAxMDAwMDAwWhcNMzYwNzAxMDAwMDAwWjA/MRMwEQYKCZImiZPyLGQBGRYDbmV0
+ MRQwEgYKCZImiZPyLGQBGRYEcHVtYTESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjAN
+-BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzl14vsZCU7E1qf/a4Yxs/SbIf/Pz
+-PW3Thbhno3JAbsTUpf9zkdDRB8fCn+R8SnJVZhCRYhUA3lNdZIskQp1h2Ix9TZxj
+-QSo29ixzik0fTd7nd4KC8WOpZUyDs0U2ugmqomJXP0e/AiFpN+3HmgTWJpDx2oET
+-Lcdl70+wRBkF2FDRJU/5KvArUnaGXrqW645GH3iXMadQRpEWBxFP/+aiz0FXqd9Z
+-IWSoobf03dY/tIaxCrFe2+yljBB6eI/oHWs7Y861JN+nRcJrtp4LmeCdDXzQN7/y
+-xDg+NVQy0sEltIMTgMyoIsb1UPD+IkepT9GKd09M6p63BX0SXr5YPhz9iQIDAQAB
+-oxIwEDAOBgNVHQ8BAf8EBAMCBLAwDQYJKoZIhvcNAQELBQADggEBAHKYzIAjmllB
+-n+CRjYjtwPrkVT8azecL9efdBvE90KkGnIvRzNe4vQdH0mT4R+RUOXO4mbhAT6tX
+-zOpO2gPldBAQ1GAcjs1XJPGxSqKUO8B69Nv3mXqwR3FKR4ZGseC5MXjQb5dZc3An
+-NJZy6t+7gO0nDfV361JJjXvNdHd0cfx0aCWdTgQWxt9RSnH3QxvVbdXLAPvYyb1g
+-Ueao9M5PMMx5cAgq4ORM+TxPJxTRj2BuRj5coHsPn7R4dkwWP59+h6Vgdf0AmeUG
+-Jmdrul5ESeACbs2GixZdtqLT9QUJhTAFaXpJd3IUYyML1V7qRk1FJqRvatYxhBxQ
+-gjZp0ouJRCY=
++BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvAuT6k08rCxgTQtwtZ1PB2iaVTAE
++Z/DTKp1bUP+A06DslWT9tng5bxUNMD/8z/D4sOKzNTds9JP9QmJsgme1qlm+pIRQ
++qgejLw6hG3v4ZdTe2CTvfE08lJlwWVU2hoDLDnurXWoQE3SSAzfuoeg48EZ8tjug
++3KkxbCR0GUzk5aof8fskCapybRGvIek/xBkVKwEVhrvNwCvIwvw2SRgGuxHuZNCk
++kq3pptuVC4e14RglByVV0C6MkNMP9CDMXILZfTQRnsqgq67MuB7IUbVPH6VUYqwB
++IIR0MW7lLFLkB6x9QOkCdAXrzqKFeNeWxw2eyV2ueTDQIqsx0fx+SylDPwIDAQAB
++oxIwEDAOBgNVHQ8BAf8EBAMCBLAwDQYJKoZIhvcNAQELBQADggEBAKlWE0BFzumd
++XtXSiD8AESuDWHAdJ5l+lzwGJ5/qJHQMTYg+7IwVumlf9z2rwTyCRNVCU3t68D7/
++8d4l52+DcmZExa8PXnkAotNcV4cDps/ZJt+k3stYSAL2zzxOCKEaysd7UvL/b61g
++t0Xyg3jlg5svhJomHuevB/db9oRUCxlSuSTxjeanVyvgXlURBOLT1MaN3tNhtBJM
++RmkpGupNeS6Zwuzi+Ina2/TfmKSwtoKMyiP/QuzH7wAV0BCDsDPT32CYkvuJ9ARh
++QsMK9a3oromDxKx98l9FScYsH6SkPlywXF4ZkimZj4Wtni5kHkeFAbc6KuPanYIL
++eypAAM0Zm4w=
+ -----END CERTIFICATE-----
+diff --git a/examples/puma/client_certs/client.key b/examples/puma/client_certs/client.key
+index 371a4a1..9a511c3 100644
+--- a/examples/puma/client_certs/client.key
++++ b/examples/puma/client_certs/client.key
+@@ -1,27 +1,27 @@
+ -----BEGIN RSA PRIVATE KEY-----
+-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
+ -----END RSA PRIVATE KEY-----
+diff --git a/examples/puma/client_certs/client_expired.crt b/examples/puma/client_certs/client_expired.crt
+index 6a6fefa..58e9c98 100644
+--- a/examples/puma/client_certs/client_expired.crt
++++ b/examples/puma/client_certs/client_expired.crt
+@@ -1,19 +1,19 @@
+ -----BEGIN CERTIFICATE-----
+ MIIDBDCCAeygAwIBAgIBFzANBgkqhkiG9w0BAQsFADA4MRMwEQYKCZImiZPyLGQB
+-GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTELMAkGA1UEAwwCQ0EwHhcNMjMw
+-ODAxMDAwMDAwWhcNMjQwODAxMDAwMDAwWjA/MRMwEQYKCZImiZPyLGQBGRYDbmV0
++GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTELMAkGA1UEAwwCQ0EwHhcNMjQw
++NzAxMDAwMDAwWhcNMjUwNzAxMDAwMDAwWjA/MRMwEQYKCZImiZPyLGQBGRYDbmV0
+ MRQwEgYKCZImiZPyLGQBGRYEcHVtYTESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjAN
+-BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzl14vsZCU7E1qf/a4Yxs/SbIf/Pz
+-PW3Thbhno3JAbsTUpf9zkdDRB8fCn+R8SnJVZhCRYhUA3lNdZIskQp1h2Ix9TZxj
+-QSo29ixzik0fTd7nd4KC8WOpZUyDs0U2ugmqomJXP0e/AiFpN+3HmgTWJpDx2oET
+-Lcdl70+wRBkF2FDRJU/5KvArUnaGXrqW645GH3iXMadQRpEWBxFP/+aiz0FXqd9Z
+-IWSoobf03dY/tIaxCrFe2+yljBB6eI/oHWs7Y861JN+nRcJrtp4LmeCdDXzQN7/y
+-xDg+NVQy0sEltIMTgMyoIsb1UPD+IkepT9GKd09M6p63BX0SXr5YPhz9iQIDAQAB
+-oxIwEDAOBgNVHQ8BAf8EBAMCBLAwDQYJKoZIhvcNAQELBQADggEBAHclwiffmiFl
+-uMlhnVbcw5UILFnZLhrT5Ufxg+dpPVpd0s6vZ/emw0QgQHSUwBfo0l4De3rA4ZfK
+-wqXv87c38tA9fZ6Schj+0m/pGFbixX3ptw9jm05V79broPgzSflEUKpJiyYJmjnK
+-3ZfN1JoxYsd3WUrcbxnoOhNEbHuImyFn6sd1Aw7o4+Zs7GcKvKfY5n+anATy42bL
+-ODnB/XJf8sZtevb57ceiKGIoGbVzrdi62QY3uQS8Jv1CAVzGHogW8mAw1yjE94v0
+-vcV7U4/v2KNt2UqWLHjIpeefnN+7scbX4YAz+UXbBZ+1DwAgSZq+oyzrBn2RKggM
+-LSUeS8vdfds=
++BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvAuT6k08rCxgTQtwtZ1PB2iaVTAE
++Z/DTKp1bUP+A06DslWT9tng5bxUNMD/8z/D4sOKzNTds9JP9QmJsgme1qlm+pIRQ
++qgejLw6hG3v4ZdTe2CTvfE08lJlwWVU2hoDLDnurXWoQE3SSAzfuoeg48EZ8tjug
++3KkxbCR0GUzk5aof8fskCapybRGvIek/xBkVKwEVhrvNwCvIwvw2SRgGuxHuZNCk
++kq3pptuVC4e14RglByVV0C6MkNMP9CDMXILZfTQRnsqgq67MuB7IUbVPH6VUYqwB
++IIR0MW7lLFLkB6x9QOkCdAXrzqKFeNeWxw2eyV2ueTDQIqsx0fx+SylDPwIDAQAB
++oxIwEDAOBgNVHQ8BAf8EBAMCBLAwDQYJKoZIhvcNAQELBQADggEBAJMDA1om9i0I
++uRNtBBYk0k6/E0Tu08VPzJNsBuO16x6wpG3icESNIBoC04Vt/POxcJGUCxJhs9z6
++k69lY/hXW7tLDSbKVTetV77j+zzZoHo6W/Hh2hCOwXJwVc1qKc2Aj8of42dSH2vd
++eXL8PCc9Yk+nRCs9R6xUAdE9t06dVUxvRb4B67RjhLUXvC0Q3sXHEbqWZir6aNhW
++NJQ542RBLFM4XKOqrybZblKEMXIIz8lK+hs5qDRe7DWd1alunl1L2zJzXwZUj756
++l4J81itIG0LcBluOQKTPhYpZCPo0btK9UiUFaCxdkW0k+q4WOcA1xBuz8F6hfd89
++UGtEB8nmOHU=
+ -----END CERTIFICATE-----
+diff --git a/examples/puma/client_certs/client_expired.key b/examples/puma/client_certs/client_expired.key
+index 371a4a1..9a511c3 100644
+--- a/examples/puma/client_certs/client_expired.key
++++ b/examples/puma/client_certs/client_expired.key
+@@ -1,27 +1,27 @@
+ -----BEGIN RSA PRIVATE KEY-----
+-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
+ -----END RSA PRIVATE KEY-----
+diff --git a/examples/puma/client_certs/client_unknown.crt b/examples/puma/client_certs/client_unknown.crt
+index ed467f1..b6b66fe 100644
+--- a/examples/puma/client_certs/client_unknown.crt
++++ b/examples/puma/client_certs/client_unknown.crt
+@@ -1,19 +1,19 @@
+ -----BEGIN CERTIFICATE-----
+ MIIDBTCCAe2gAwIBAgIBEzANBgkqhkiG9w0BAQsFADA5MRMwEQYKCZImiZPyLGQB
+-GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTEMMAoGA1UEAwwDQ0FVMB4XDTI0
+-MDgwMTAwMDAwMFoXDTI4MDgwMTAwMDAwMFowPzETMBEGCgmSJomT8ixkARkWA25l
++GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTEMMAoGA1UEAwwDQ0FVMB4XDTI1
++MDcwMTAwMDAwMFoXDTM2MDcwMTAwMDAwMFowPzETMBEGCgmSJomT8ixkARkWA25l
+ dDEUMBIGCgmSJomT8ixkARkWBHB1bWExEjAQBgNVBAMMCWxvY2FsaG9zdDCCASIw
+-DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALpCL06kbLE9BNknrrRVfW5YgkoJ
+-ih7EaPNNNqmUgnIsLBjPcCZ7qlsMaUa2ft0mRFxniFkccdrHKox1oAZQ4WrOV5Ls
+-pcLktNTESkuMG5oiobsASItz125YMoEs/q+cLhErf24EaUAhXjn3/ebvCwtza1il
+-7bL1RS0iwfkCS68cQi8MI+tQlBebcSUoWazoitg5YituPKNj493tS1nO5pL3vZuG
+-6tNmhLr8lW+3n4Fi8SElC/pBWiIvsUhaUZzRjrcyPeMS7H2+zdJXDgTj++RNyP0U
+-TLZzFigeZJXNmHia3uneHw7o3d4fyZERuBl2d990iboLbtPh/9Pf82bBIU0CAwEA
+-AaMSMBAwDgYDVR0PAQH/BAQDAgSwMA0GCSqGSIb3DQEBCwUAA4IBAQBO7O5IQJHh
+-4ENYDw/kJFdye3l204JSDrFMP8uMIWQLd1RiI22CWjoyhUSfoyumrzykbPNhxf4w
+-kj1E+z097/8Q491wxbbLbE1hfNdTtx35dnCUVGPb9lCP4YLK3v3swXw4OklVdsCb
+-k/cf8s6BdNKVPdhO0zXRBdCbq2Z2PPpzQtaZ2qH739v2tX6CulB68hUO/hQeQINA
+-eJGMck7mlR4FOE76IeHKYy4F2V4S9iNtkqvkf7M0wfdRwZFJqbdZBXTjRpOVMXgr
+-XFGvANl9HByFudJJHk8t+NmkIFP6rj5xQSV4i31KQQHMGNr3hCKgkk7X6Wn95BH5
+-FSJcNlLR8BuJ
++DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMAqcKCOd/f/Fi9CPDGvS3/IkhEk
++Q08pKToBNsaybIaoZq0cqjqrRT0/szOe1WfF6mYIeEnN54PlEEn4MVo15BxnqmEi
++Ow0Bh//U0IOgLejxj5XS0xRX/01pGojgjW5wTT+gDu/WFcMWopaRS8c2b5HY2Egw
++5Y0a2nNrMQr+ZEAITGME0mY+nr/CSEJAHRtXqJ/JdwKTcrEWPEFzRdBgQATucCdG
++NYcEyg2iX0suE5l4ocGHIub7/XYnYnABpY4LBVutjQ5LEDOc1RVeLiYJt5GKKnTk
++qUoUSTAuISkFwKCVa1vYQHoTrWKC5mcx697QnB0B2QDQq1+homQpLu+KhpcCAwEA
++AaMSMBAwDgYDVR0PAQH/BAQDAgSwMA0GCSqGSIb3DQEBCwUAA4IBAQBLU/+Nb6ZM
++QV63HgVF2RZ/q2zFjziP4qZS07WYFUl51aOH8xZ4D8wrjI949LHcloRsyky65T4s
++UH7kbgvd1MasHHWn80tcH5Wq2ekUGqdZsH46dmq6/QLzNb1/zdZTNmAwuGf5m9DM
++R+hd6qMbt9a3DZn3cznNXt6/pqoU570fmF/VchZKXj7rfo24niddBKXJbBtQkNhE
++oE0RPCi/mvYeVkMtJKZaX+ua0L/rn7txKqDusWHcsd5Bkmew6gIT1mI+PSNlO6b/
++wfu9YKTuGIhWbaqNET9T83mNgJs3+acdiphFLZWqsQOmyWC9QTZGjAlVyhFW2SJq
++M15arUrhr8Yu
+ -----END CERTIFICATE-----
+diff --git a/examples/puma/client_certs/client_unknown.key b/examples/puma/client_certs/client_unknown.key
+index efa436f..90ea42d 100644
+--- a/examples/puma/client_certs/client_unknown.key
++++ b/examples/puma/client_certs/client_unknown.key
+@@ -1,27 +1,27 @@
+ -----BEGIN RSA PRIVATE KEY-----
+-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
+ -----END RSA PRIVATE KEY-----
+diff --git a/examples/puma/client_certs/keystore.jks b/examples/puma/client_certs/keystore.jks
+index 17e7d5b..574fd32 100644
+--- a/examples/puma/client_certs/keystore.jks
++++ b/examples/puma/client_certs/keystore.jks
+@@ -1,27 +1,23 @@
+ 0$0	*H00	*H00*H
+-@0<0f	*H0Y08	*H0+?"]2V.%m' 0*H	 0	`He*[G (ym^6O%CXlkVS)ЮtqQwnL1s?X^nYCu@Рf([c4,AH۠+bQh$Ѣ?-Z,ǒ]$\DevKzJ8^?ʢ?Ε5^9:c!=4:9ԓ{v]E!n9+8%잲-a]ϫKSF<pVn凾^0&5Xz^`;WLt-lK0$2i} ~cvvG!$׀x,ʒ ad\ɛ:u$5u;'̣q FV%<Z&!JUpVg:@yQvN6q.u!,OCOll[B+G ʪUz1\~Ӯ(Z;i H$ٷ*Yk!"oѧn4q>FV7>#`Lq^"j:n=p-zMO%CYslt5]y[$1scs}nlގ{pJAg˕c;".vϚl3aмS?^G(CA4RWv$Ƚ"0Fz8V
+-0Pg}6W	yb*Iou["5DX-gDw&mOS~tUK%>>]E_=>6,-0JꟜ/b
+-6HDE)Ro;lx).~i62M5:fӤE֭L2=g@!/p=̪Bs٪rrbh
+-qWv..pA~AM,7WmXHeEH;LKC,-TMjū!KuojNxâ՟Vo-55U&$M&ÿNqDX%
+-BJ,rN
+-xN]OeZy-?'g.6Hh8|o(\EcR^&|t
+-$xb<^O%&sT._f70O!^eK-8lB,b\T@P`c
+-Oګ-9g$1YPۯ1@0	*H	1 s e r v e r0!	*H	1Time 17234156716910	*H
++@0<0f	*H0Y08	*H0+1[EJ*OjFWv<' 0*H	 0	`He*4prB+IJƱf<?BcX]PZ&Q.5s35)Fz!7ŏW$H2D=>[PǤ
++[ɞY c?9gkVhD~%sIa\{1T{ސSY;/}qd~Nnǲ
++n.0)q( 綯ELϲK>tXcnd"Xg|YThNp59K&oD7=u.w2͸<V
++D1iOlܗ:܃G+W⅞>böE.~ʮ4%zAj[-ѷ-ݾ7Ŵ);fâ8 |p;+6<j)$kq6r86Bʖ6G	1|A^d'(*ep&K=LO.s,[7qNSqs޶5ZHw;ԔD~v0M#$6WrH
++;9"۵؞rH:4 ;<aw2sh.GWp_QȂłDѦS|7?=#2Lo%@%pv|!4${*P'O"ro(0+1XRCM0cj(,Fo,on)2+r,EU>d%|'Ax҇\-٠̗К'/F\뫺"dn_1X8
++{FԶ7Ȝgv99k=&W8FSPs#^';
++.Vja6?eI'p_%<!!zs7+Hf~z2I׮w+,p6S.SJf+1 F5:]s;!3yH>ۭ*Ac4$HMPRl!^8#$W1{oE+AǠo"s[IBW'߹38B@p a,r~	xvkI
++jC=¬?_SHлaW;ikJ<SY&xGu8> i.Y96
++<ZOo,Of!K70$ <./j]wAFdՙ /u1@0	*H	1 s e r v e r0!	*H	1Time 17527482880920	*H
+ 0
+  0
+-	*H0f	*H0Y08	*H0+^AMJ6Xk+?K' 0*H	 0	`He*a]R3
+-pu|s!coCpR"E !$jTs]rxZylGтZ!OOގڥ08þt1/As/
+-*#n'	Ǟ@Um פIGu+7gollى1{ǬlGh{}h#̓)v3sz^hQ{7+퀔'ݱxkfԓ҆h5ι|XQ 3`'/Cw%HR=qHp أ[3Z#nB|޳"*h vX֪5VJHRP5B7-_rTp2W%isGdQ0AK
+-\ŧWio󔄗9#Sw'C ]AI&5CjQ'*51/qL'oILl?Z" >{CFrPf3[%nJ]z&x?Q;u/A+Z]	B(A®kP5G:Qj|֍(9JLknCjvx0hQy?HI(1_sRD++YcoDSRa9&nC3[9S@3Fo6yO`+G"IK,߇w۔ xs@CH 䆢E=b  <šZ%q,b'@YbǛi%*5.Pd-BLDÙ.oJB"<[81]5ìKu7[ܿ84YR:leӕhO4BK^,ˌyny ;ꑞOP1<7WA7U\^f~&T4;AZ1y~0LF(ҥXi=WzI`xW+@bH;߰R1!nƗ>?j,ѐ_~Я~wvHno7]8k>/=t&SoՆ]deh5Wy4a	lf	r9z8!k=گUZ7=Ɣ 6o 4z
+-ʛPPZor23ŤŃV1**UcSR]@=~d5?:s[(V*mWfR_VULyӽ,C?-.,v|k _6x-B`4cZ^ZYڟKBZ7IB[N}	9x*`B)Ҝb.Dt`%'gQ=Jx2.~#-[@#~<B&
+-$=D\|Q<|Ιg.*ewmn6Js>bY!i([ Jb/N1H<$N5b+XSOK@V
+-%:r_?L;۔tITPov[.􉻵ܒ,tEz.U?d<z'(OFgiKna6ֵ+,oc6pks7C8!/*'4̀NuM]>$dp .r6`I#t[?D%U
+-$Aٽת."]q`I!U
+-t5u=@9A߄A^[
+-KA,q,ۼ"^ݔ'ן
+-Ƈ{y;&o9Mf8肑u?]aE57hr~B #r)2)<2Z0<]Ӗ4CX[IWA0灻"gT܏XA	!9(/n7!W`Ө)ɶTD@)HP\kI4Ծ^tڄ84H/إ^@6vJV.y18D`^C7T:UJMށvYT59:џ$:^Wkscx_Tj
+- N^NFI	\%9u3U\	艅LkY'sR_<;$$f,W+v6MV Vz\΋+^51	f>HG 9"c]qA
+-&%[u>㢗dLϛn#5]D
+-UҞ{E+xǀRH8iE>Q&\!W?ALaAŎ`Ei%Hu؃/<[Hu30*|F{6>	P1`+pVAC4d?I=,!ćL^0݅xkȮE vscv294g)ŷ̩/9Aҵѱkmjc-uϋN9z
+-
+-bTK:E?Ap? f|V{b~$Tu{^:o0M010	`He  xl3kAU~R(q7)UXJ^	UT^'
+\ No newline at end of file
++	*H0f	*H0Y08	*H0+H͸@5"' 0*H	 0	`He*~ X=]z
++p(G)#s>imh%N;C;r+٦u*</pNs2ڪF?zZ,R^݇^\&Xȼխ3B
++yAnE=}"o&$H`CAJfvIn~Ѩ;lK4)SP]HwVKD>	ߋ>{vL}f$C6J~}1x+܂(~)o#H2k\oTgІ (d!EŌmX1zoMFi#&5 y2i 6>g9L{X(|cv#^x^yjܼآ1Z$.oK{qAgIV>+2T:d֠vUyرm+E/;|s5.V515HIy$(h9s, &PkOh%O_h6vp#m Q^jJ^xtT5{7{C8])K<RMb, %l:ƂM2f<+1W#J.Ԅ}gSH>ӝSR3?<θ>w(
++j&M^:9%qҼaDLmč v>ܫȊ.y>Ֆh+A"nlcm;vT~h~%1ɯH9quûej|Q>*T3/@qA1ܾ565NA[ehXAh$.}T'})~.G 5|OxߞCm\f}YuH߇(X[JU|OQ6-NJh$"OU@a_]`\W-~ͨϟuc0Slhg1~#.cdҙן4ȿ}P<.[riWdr6RY$eGWY^i>-Xi3~2}>#U:lfÔ=:r7
++l .%A4XEF U&/n%67K|$E}V`jx{5嵩<B1XtZC|Rq[Scɥ֜e:Se5w9Da8ݾ?'%/#ma8)e=6TrDŹhEG&+nŪu=iB	~5b؅T^sO0BD<m5@T2]4	6f@DvH`Yi28ޟD9m̠l[@j'u3>	V[/0
++l{77E1
++S o%e	
++>4c嶝C'r/Hoн	ˌB}61oYysxuXa+b](6"CpM6Z޸[54Њ91̜=X_~pv~zHrXv|%Pɏz.gPUyV14Nw@Sp>>ٮTP`E2"#:0kFtC}j$q̏nꎇ*>qi7nm!$4@0qDmrsg-џgt>htADOdz&~ՕIvdJKGw	W&9?hOʯGO|}e>t	 ,ydȨX6}O z# /$Hg{Y@
++]U̳w1}Xs^7Kh5=H8VsV怋~bEₔlvl3P-r,a3 S`	2Wʱu׽>=iҟVRl7ʖ$B]o4H~3mdP 0SSpie;0P:ɣl<4։/=07aL1~,Psɹ<`|eU񞼁EsDdR`{YeiN) ;mMÄ\: MUGiz2cƱ}JdZzSd=<ur/Fգ	RbQ)"e!)7\m%ش`_v0rA"-B0pLC<΅urty,[8Y=lKF1N0~dɯh6z~6řh_BֆRq-bi+VeqpT9[pG.},K< [CWD於-bLoa(+)%@q$&E)fqH@vpi5
++u_.u:?5L:`Amf*A\V*%e!wQ+g6{%sasPŹFnYfT&TDK/!T&X""(9޸%c90=KtuS.D
++W̊N=DE8n0M010	`He  &\}@xHSӵiОޏ0D~LU.ʉٕ9'
+\ No newline at end of file
+diff --git a/examples/puma/client_certs/server.crt b/examples/puma/client_certs/server.crt
+index 1335881..3a7cd3d 100644
+--- a/examples/puma/client_certs/server.crt
++++ b/examples/puma/client_certs/server.crt
+@@ -1,19 +1,19 @@
+ -----BEGIN CERTIFICATE-----
+ MIIDBDCCAeygAwIBAgIBBzANBgkqhkiG9w0BAQsFADA4MRMwEQYKCZImiZPyLGQB
+-GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTELMAkGA1UEAwwCQ0EwHhcNMjQw
+-ODAxMDAwMDAwWhcNMjgwODAxMDAwMDAwWjA/MRMwEQYKCZImiZPyLGQBGRYDbmV0
++GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTELMAkGA1UEAwwCQ0EwHhcNMjUw
++NzAxMDAwMDAwWhcNMzYwNzAxMDAwMDAwWjA/MRMwEQYKCZImiZPyLGQBGRYDbmV0
+ MRQwEgYKCZImiZPyLGQBGRYEcHVtYTESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjAN
+-BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxqbRfVxcH5wKCTGfuZTVisUKUIWS
+-TUOWkIoyIfBKVknREnVSN40aw72bs9GDh55F+R2IJ3y9F7TQXo0Y6PJ9tFXZqJMb
+-2NHXYTfhQCSN/w5wqKIrWOR7wbA4JHjs6x/vHYnjFVbvbx43M+wceKsMBlQ1eDLz
+-Ukr5vjLGASmdgzTq8AUd5bNKiNq+ERyAUTcuwXWC6ndXNdr3vdEgcYnzPWtgM7eo
+-1SpewqCqrlSeA1dzXThB8vCFkCNy7DYrJbCuGIIxm1D2garE2814LXztE/rhwdIG
+-zonh44/Zc43cFhzJQUhcJ/jOxFovgijHd5lvUfvqj6YoquC5yFVYEfsSwwIDAQAB
+-oxIwEDAOBgNVHQ8BAf8EBAMCBLAwDQYJKoZIhvcNAQELBQADggEBAK8iNpb7JRQ+
+-CNHl/dUV2DW9Js1TndISLs0YqAcAJHgzwtp5OPV8GHUV/BF7sf91sHU8y6ivety8
+-QsvG1ToZhWAVJXG+AStgJDM8Iw6g2xZbIY3wP3bBSuxAE5PGdcXM7nRfjwnAJM7i
+-Q1gdPcntc5J3dZ1Kt5d9iofI7UMBTuf0Ws+LWG73i/NeRj0lef6+VErQ6M93Yi7/
+-knXVzvRkpK2664fRmUHlavXP2Alleuuibgg8kgJ9M1yjluwwx66LXUbhMClrS/OD
+-hPM29fPZmO+XHJ1dtR79DhdmwqX+GOqjD78asYHIg2Yjy3yZsOX6chKvD0MWk6pc
+-DyFSu5fEHQ0=
++BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwemh+fx2FupgRmKG7ru3X2m//xDX
++DttQXdXI8OwqwQcWW/7fGxzYXImPGKSYToXUctU7pFM4+PjBvp0l4iZLXANn5lLA
++e3zEUzC6tZEGVol7Id0nRNVqVgt3CXLLmcxyuTwFZmTPM3AwxtxTu6WbGWz0l6v8
++ElFkIZ023Kb5e/D0GBUVHOJJDcqiaDf18WrzPjJd59VOE6gH8iO4GX2ckzpf2hBq
++VPVsmXi/3sTv+5RlBr5VSNPRq4LxBrARfWU/vTq8Q0u4mc0saLNPB3O3i3iN9wMj
++KKJV3tBNzV72OnsIhs2KprVrcE9bm1XT1U8KTqkpPprOmY+iVWHcjJTa9wIDAQAB
++oxIwEDAOBgNVHQ8BAf8EBAMCBLAwDQYJKoZIhvcNAQELBQADggEBADTBxt0J0+jn
++VWiuVEvkVNLutKP//CbQxwt/h9KsigHdwhBBQ4yeqZ45OnVMh8npTLc+7PHgqwnb
++VUO+0aqIOGJbeEAbGbjxI4ND0LA1sHwKkGRUPIQEETXOB4H4DPiM+HHsUMd+DuPb
++cWn5RqBZByj23wFCp9/Bf6Db8jzVNRnZx26+rjjtP8muQuxeIACjsgt58akLLQEk
++IVvLPoKrnZGxMbKnLejmXGYB8iLeWnF+nrR2+IrJNcBk3A+Fkb92EsJUpernqmzU
++3+Vrx1xeOrm5gRMgJshqUEdqZVeolOsQX6FW7LNV2AtvKHHGm3LtssaR/zHuZ36G
++ONP85Zw7QHA=
+ -----END CERTIFICATE-----
+diff --git a/examples/puma/client_certs/server.key b/examples/puma/client_certs/server.key
+index ea6f467..8b890fd 100644
+--- a/examples/puma/client_certs/server.key
++++ b/examples/puma/client_certs/server.key
+@@ -1,27 +1,27 @@
+ -----BEGIN RSA PRIVATE KEY-----
+-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
+ -----END RSA PRIVATE KEY-----
+diff --git a/examples/puma/client_certs/server.p12 b/examples/puma/client_certs/server.p12
+index 7f7e8ff..12cd7db 100644
+--- a/examples/puma/client_certs/server.p12
++++ b/examples/puma/client_certs/server.p12
+@@ -1,15 +1,14 @@
+-0L0	*H00B	*H30/ 0(	*H0W	*H0J0)	*H0~.ӟXyp 0*H	 0	`He*iD{Լ0]nS)9el!?Z77u\D3"*#':9S!6
+-0dd+b{#Љ!|L؜#m	<O%4/*7lߌ,z36s+,َ/xgAR <*bsĀzf{7=p%)HahtD;FaīD	6g[o£/!R47V^NY	֦nb%`7?A ~_ڕrmV	r}SRPa!؄ߑB*Ǥ[TAi݉?q)TI4G䌒l3~h˛\ge+4L?'dd!^_ U:POw<F極j"j4)uiKO#ꄶ/޲2I؝eV1rm,	P|bVOy0,Z䵊&mp)|WB_C ,R"ڶtŠ&EILL&@h5opFaf
+-cu>`#`ڙb~*NE~Yfp&+TCZ9)RZmS2DJ hV6.ڸfZB3Qo3цJޝHo7ܗTVl,l @RumֹSarه~R
+-?F+y^`H]lڮLŶ|"_K
+-87EԠޔ&FI􂹓(0S,cRFEP&\<*6r-JvlAJm}ѲAOa'{Lb<͔HցLܹ:ۮ*)Y'㿻QtQzo	r8k}N<Ori3V&CBM3ڦް0qdu&U&d@@n|ІMVsSDkBrk[P)!nCH4/pyvOUK-Xt';y(ҕ$u`__u7QY}aYUd{W?ܽZrgd׀GU]yLABxS߇ZGw1{sVsq
+-å! #Qokx^ӾF3R,o}9~@?zUiD	n~{Bahz/޺_xLFl*CUд%ZpjMC1^a3g,F,,Xt&SKF!|v|R>8FE0ҩcX9
+-+N5rXR0%R6]!.(TUڈV@IqY(y%b5Sb/sj]jo̴p#8we	S!Ky:b6#G*3wnO~q_' ^ M9!D1Xܸ^FKϡWtK13NO*tX;^hͤgeb5p-8:@x3Vb/R0IӾj/UTˮ%$0	*H00*H
+-10-0W	*H0J0)	*H0"~n) 0*H	 0	`He*/C?${`Xg5nn0K'obR$\ђWu~v	gҩ>إ]`z㽙'kW"Y
+-ٺw=,/$OUH&7?ʦ%M{B?F\lZ0Wh\/OyW$]../{T O(ҺTgy֭Ow}r#:8U-6x&9>>wd(ڤkT
+-S;4B㲅*>|OPRv䛎fV>lC2 U<Y̍ xcά
+-֯'7CvyUʭ'1APtRe2*7c~7 ZHP-/2eh)zzVv0&k[2▊p`+`@|񿜒..C~e(}mL`}y9C<8p#_ڽRRϙQ	! ]FI`Q@bΛп~}WzK_V1ЏR?qG_/Panݕ$ij4)Ϧ@PwqiM.7I#JӆT,=	ՉYkBc?R	Mm;GUv4}1<I2xRBhT5DLg @9{B8hM
+-[:=ǴVXLK$*R
+-{畚=c:|f&xiV,eV:d(|v*p?Ě=	a*"(0nV	ĔBHuz(]6ry#O?a*^(
+-zl gʦ 6&w*X!34H|c
+-Qpn_Ey3jl zqqͶ}` $/s: iyuCDK$	qdoh_N!oD<NkÒ]r~J&'c~ߌhVfIuX%V;$:K*x;#ϒIpyAO3Ma@3L]V:Jl5084tϹq; ՛Ԍhf"\vAhWD^NtcZh)Y9cSxM0}\k}1B0	*H	1 s e r v e r0#	*H	1QwBI[$|C0A010	`He  Wc^WXjbC'q+Tcfh T3tԨpt 
+\ No newline at end of file
++0\0	*H00J	*H;07 00	*H0_	*H0R01	*H0$&38FX 0*H	 0	`He*K&f#C:o$tM|lE͆Ǻbh
++"s6CТMVO1%e	;.-5Fr-8<!ӏĴ)yg*BU4)CzBMarXqӋrL âwؘn׸5>u;_2b@ɺzt2fo ve<}7?CcLI/\~eAu	$tƬQdQJ#V5}a9^J~	#:&cƶ, e`Klw1[%|
++N Eʓj=4 dK|?gLvw/s\z?0v쁽,	7<雙yvNt]kڭP/naCyF3ÿ6;-j%cJ[syoo%!Ln8^;ͶwJBpXsR0 FC>6.r>NBkdmj9LhށM#,lP!
++WC%嗌B?}<s2oaz ϝ LѸ0JgG\Em9fΉC˕jq^) r<v"Z63AB].7 (kkϤ?kQtQl/j0e-_f>XcfɄ3Iz;)ߧco_>LLб\x. 5f?Z#pI?vY~_*JmB@,wO#&T<[9S,̲a"4}b0g6k"nC8@o|H[o޵&qcǛozC3kf		qT@5 vpL_S*!Z9G8K[M3mq͢AV	ȶG|mPNDwqTyʰ7Hsj"Bw
++R-W/8;~FӽYxI	g$P"K+5s&'>#HjzLe,0a"{hcw;M(7}HFy~0-@fw~
++{^^y_'\lGaR
++KhB`,<0<CtOYm
++,pP&d9?һN\t$ !'[6=zX% N/{keQ٠v/r欦DޯUI9i?n4 !du[K	ڐC|fܯ;BtGA&^V1q!(ORD:u)OrYxWr0}Hmw!s['ewl	8T9cwugVKʰ}mxW,b*]֌q0maHT_0|9Q*)*oA?G?"]ƥ#c)=<vMѨ^ӿpgH*-$=]];G6\(IǃРf1^ℿWɾj.edFzR#WdG-<~JvwO0+8$<\uN8G{rAX5v~2J6)cS_,1p1P)<fSZwTh27+{kQ۲ɒub0	*H00*H
++9050_	*H0R01	*H0$`uߘe\ 0*H	 0	`He*DlAdwT,7CvA+9868| &)p"$:K+"ܢ%q&EPAI'\^U|To̵w_r.Y߾Fk	s,'Sa$OwZbk;.!X,j4
++l~uVAxyoﭏW\̡D
++H	>>{.qbb3'+& CEك'w{ٙKJnc\@8v5@i{ʸUEH[@fZڎ]F+pt~Ic6]pmd/I*fRg6廀p,wkw,_q9=)dK3!*ٽB~4#YoI|b&xOi7^;`dńUFG|=VhC֭ ('amtJBAMؾ^$N.1oL˪hգ͹%s`#gR'0/p/ 'kmuc6p\`daIQ~r/%MvV݅iUKRiS|ⳉ W/?E֨,Q{y9AԔ_gPk*p5X(/t~f53-N-}"ڑmEBnVPjK?/ -(w*ۑ?hL9uIa!.[)!ID|B~l2-SX"pt	emDD*c]4>H!À,g-o!tݙ,,s;7Ke6h6?
++M kvJfmDR	SΪѤȋnťVذ+irDWFc*<Uל/:l=gP[<
++^I!g,wGTUL8ס ?ZÀ`WZL#_TwsZjߩa51i5-<3wb1X;e+*2m6ӄץW`:q#)QѐteW2l_Q~l.ݡ$O@gtÉ.1h#Tq@^Y`郖lܮDvg=G_D,E]b/IgJ{*YzMg(j
++oO+>ى9QC_y.IcqO	1B0	*H	1 s e r v e r0#	*H	1@y~(i8.qwB g0A010	`He  g:Ptusuvh`xyZ" 
+\ No newline at end of file
+diff --git a/examples/puma/client_certs/unknown_ca.crt b/examples/puma/client_certs/unknown_ca.crt
+index 5c50d8f..4b07a87 100644
+--- a/examples/puma/client_certs/unknown_ca.crt
++++ b/examples/puma/client_certs/unknown_ca.crt
+@@ -1,19 +1,19 @@
+ -----BEGIN CERTIFICATE-----
+ MIIDEDCCAfigAwIBAgIBETANBgkqhkiG9w0BAQsFADA5MRMwEQYKCZImiZPyLGQB
+-GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTEMMAoGA1UEAwwDQ0FVMB4XDTI0
+-MDgwMTAwMDAwMFoXDTI4MDgwMTAwMDAwMFowOTETMBEGCgmSJomT8ixkARkWA25l
++GRYDbmV0MRQwEgYKCZImiZPyLGQBGRYEcHVtYTEMMAoGA1UEAwwDQ0FVMB4XDTI1
++MDcwMTAwMDAwMFoXDTM2MDcwMTAwMDAwMFowOTETMBEGCgmSJomT8ixkARkWA25l
+ dDEUMBIGCgmSJomT8ixkARkWBHB1bWExDDAKBgNVBAMMA0NBVTCCASIwDQYJKoZI
+-hvcNAQEBBQADggEPADCCAQoCggEBAKh5VmSGmeN97MEPb9Td++UYcWHhYVj+yxi9
+-leDzcLpAgqtd+z0yBYCS2ULRQqomf8uIYODEuWxaepVNjjRN5Y22Hzlodnp+kJ3G
+-CXQva6GtwxbTIxyZ21Yn8APPgb7OTHZ/js1EhZpJUSjum19PnSS8rPfQRkr6m2eg
+-HKDkzV3jrJXTpNdvUhTi2NVVo0vNzLYV5Kj45vqirlTEesLxdxHtDNx8vanYHaJY
+-JY7OryIJhPsxKYplSbQ7ydJuHtpx5SiFjRckw9ddhRzGjYsAQFE2eVBPjhiYJnDL
+-tmEnb2e+tgRNiru9ttffpfzN4EG3/d9qnyZV9nua03yn+tqe0sECAwEAAaMjMCEw
++hvcNAQEBBQADggEPADCCAQoCggEBAO17pO0lTeGMVgMplzEn/4IdsVQXt45z1MgS
++3irQEGPfIKkZHnVdPElJnag3pTg5bmFQ/yPOEdbP04Ao8/BvCgvUO6jqkTR9aic2
++PqnlXbTPeHckjskihhcbcr+ZKO23dBP42U40E+6TakZponUsZs/YlKE4pKUfjsYq
++btVyDxe0SQWxSp85XUNn6Sd2Wm274/wQtjjDdMeMtYANqGRJStKG6qZAe9bYwOlw
++UFddMu2osIV8i5CQcmJnkVW0MagUrpvGZSni6HO9i3h7Y63r+d76NlR+anFPz4+l
++kZKBugfWGI6lC1rSQ7q85ucEJeqSJN77dHGRyNITy2+PrYGcNAECAwEAAaMjMCEw
+ DwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQELBQAD
+-ggEBAAp+1M6+Z8T/CA+C0288CRF27tXKn5Kd5Iffrx1Dg7I5HrFGJl87tkzLRoZi
+-MKj+FfpF7fJ/QSyQt+UZa53R2vmJig6JUEQwfzXc5Bp+fusJgmkGPZQ1A5tnbwCZ
+-TTuyy8Sy9reCWdJkmdDWyK3ah55mjiuOwZ+woA3RAoC9vCRtIT4w08NqrISBYp2i
+-NeQCv3gooiQrbJuCUuo56Qm73juJ4T7GXElRMF+SupmhC2SHwFVGAbu0/g6Yc+ye
+-i6/T36t/GTT0fG3kKfGfFMq3NCvY3WI3vcPzYtK9fN8QYVy3LjdnsjcTV2L3SaxG
+-3fYURa9nn7mrxlMBX88UWLUIPlc=
++ggEBAOgqzVzIQwZAtnhBhZ52J49MQzw7e0jlUoI0nSBNcT1QckxOGNE2jGoh9gHr
++Ti1VlesIEO7v5IXAyDuL66sOWPWzmPdU2uKDoWmUE5ry02dJu4W2OoueTCQYilAg
++vmaPXgH6GySOsazj1LK2RNkAzbj0Kw49bwa4vOxEnrkPCLlZBonEAmMnhOh0t3iP
++TUk2wMTnSJrJ002xDArUQol+sjVXGktYWT/bReERDBnGA6opFqtMVap48kGqgCOV
++6lHEEOg+F86ubhM0wLfdpFp4j4q7aAFQTtapihnLlFXMKiz9imjpuAWllSKh0owP
++ZDowdJZgG1trNkK0oMgfICIYKlk=
+ -----END CERTIFICATE-----
+diff --git a/examples/puma/client_certs/unknown_ca.key b/examples/puma/client_certs/unknown_ca.key
+index 830cd91..06e0f03 100644
+--- a/examples/puma/client_certs/unknown_ca.key
++++ b/examples/puma/client_certs/unknown_ca.key
+@@ -1,27 +1,27 @@
+ -----BEGIN RSA PRIVATE KEY-----
+-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
+ -----END RSA PRIVATE KEY-----
+diff --git a/examples/puma/client_certs/unknown_ca_store.p12 b/examples/puma/client_certs/unknown_ca_store.p12
+index c74c940..04afb8b 100644
+--- a/examples/puma/client_certs/unknown_ca_store.p12
++++ b/examples/puma/client_certs/unknown_ca_store.p12
+@@ -1,10 +1,16 @@
+ 0
+-0		*H		0	0	*H0 0	*H0W	*H0J0)	*H0`Z 0*H	 0	`He*Ii;M k<j	 `BŌhbƱe?CV3ujelKpѫ»	tb)~M5@)v+?CEK_4ql]j~){Byd̟mYi O	6ICx7D}I/n"%2eBc{
+-_[Gmit]9$ B?/гloh30 n8yj<CyŽECA`!mCz*
+-)fDa2t	/P1KW2C ? 㳱l@,Xv>vӯT+5@1h|2	dV3siT%Ǚ<MJM溞jK}͑y:C	bDw%Vc%?ܢeM*#2	K1)Vp^nE8PQ#ኧ/}1/($I<TI~9ߕVXZnpӕ!
+- 桕xKn(؇ 84%=A(y*zܺxs``RBB{Q(|<$|&*.XYY@%MuVW!,,v̙=(aUrx @9BJhdDۙ%[?;N/-݋dݘ\b޴Ћ36gINdF*yy>||zvHY}5kv_D7|,pX;BwAP衑Β'(\xЖ)rxRORrU;;`Lpy3O q+wABYM#J</u*ѫsH<I$oCIh:=70	*H00*H
+-10-0W	*H0J0)	*H0A 0*H	 0	`He*1eZhc<WLg1V:%bOM,w]*$\Yb}-LI(ǅkĭ(EFׅ/N$p5DncLo%֨~ t{js6g+,VsJ= ce+i5&{MvuzVHH^O=Hɉ'F Auڐf#uBM]ڞ뼢
+-`X0-efGf8P1]	]A/;V֛(]mN0.ҥ)dmFiْ*"	S
+-Iy^%+-}wO0c#`5.* frCy0s*3#I-\!Q}z9,pAw*\MO.ذ|ƮSk>ǈv6NRoO#3Z){2`^ƢՓKJG[	*7{`G>fd4+)1z$Vmޅ}ƾ1rns[H5+6!,80-/Q~&5-Ǯu#nzn.mڱlXqg1ްJǁJ
+-jdVfrX`{2s& Ժj"6c<b뮬VB,>3p +؜T}m/Dq_/`ry*Hm8`טMc#+kAW(>Vi	- R2ݍi1ӶUrT%:H&qjVQr[6PO2X2NLQ?bKg}EWVڱcӶC]@*8ܫYH9Av@Mɽʹ*rPf/7Нm86oXjDgd',yiG]p~ùM#]6I[Xe疌<;u rbzd.^'~*~7<'WͶ̉AϭLi{*.{+Lat5IP!tׯW%fg<$(5C㽌AڜNXNn2ؤ+?߅fqf*%2݇WgHE"g[R/C:Ȋx^|SOotʧꅮm"-x6zvl,]݄qm"fwMȮgҴr<'k^=c&ΨKÐSa@1B0	*H	1 s e r v e r0#	*H	1=E
+-q/U_0A010	`He  Z@1GUq3=(;:>Ɇ׽_U 
+\ No newline at end of file
++,0		*H		0	0	*H0 0 	*H0_	*H0R01	*H0$U ?#U
++A 0*H	 0	`He*)`q7"]Mi
++!@_
++)fZ$+&v`͓vxݪ¦uS-~7^
++):eAؠ{mb׻,v+kuBQBg)6&fI61৤D-.nY"-871!V
++fe%{d)>_.xqVzɗzw9/| 'n_1#IDHR.(͜7V3
++نߡ$QfgϢ-NG,
++n(k~ndEvkT2fEP"lm* gH?/#jLሯQ:ؚ} ea:fV<fc'2xݑJo`6R1Խie6LVe&<Xz/c[}W+$]2Mh >ip1TĞAHYNYB}jѬYU`h*_V	7|&k̐+?kj;>zQTz7jK0U#ĔlExdh{ df\{R!%xv7RIYz.xTTq50h0.~)bPBHKjuBj[|m$*fd@=N4{QQ68+6u9wK<E;?pqK)C$mpbnۛw!2Io .x+V
++OLua־zhG3gI[QcAvM)qb~ӆtC62?!s;ܶb0	*H00*H
++9050_	*H0R01	*H0$4gsrP93  0*H	 0	`He*W}GΫv%]@	E293toT!d97EiC8Ѵ\2#8!5X!Δ.R,s9юѪ#tfkS A2zb5߂6\s||eloMw~%Ղg<,A+Cښlޗ]\|]HbG7NYzyтfVJج>ٿxRzl#ԭOH+^QgXk!t˝A4hsTNNWPUpS*q]gĮgAr4XE	-!5=ѡj%*qN`OOW|nv4IH[$|
++Cۧ5J'e1M$zhes6Pqo<H)9<)ȋK j9Y @(h<W5=A]|.WIA<A)#+	G
++eJt]Go^LYcaZG: ~$.W~RЅRNoa5tHDRDI2^[[K,kt<U4r}.5H?՗bZ8oڑ<PSH.2%@Ƌ$
++rv	fl;%\f18诲mw~(ҟn:dhqxýV[k`e|?1(pŔN7jFqeacte$4%u.%NmPU+KK0n%Y&7>{oh}\ʥU!HP5)PNQ~ka,Nۆc*8'Na'l4ØHq}=
++*d{	I缕0Du5pvX"л?-Ԭ"ak_=xՠy>w=㰂Ghx0]sAnՌMyC?HD5Nyrxk:dGe0{{>_mR-;p954huP0c7LnLjv4z$Ct?/7>WfUzNK0pkƢ)|) .TEu_'rxk`?u:fϯDB$*/E;vY].7`{rLaw"rI 	;QD,dW0V1RLY(E1B0	*H	1 s e r v e r0#	*H	1K$Mm(
++8۹0A010	`He  E)dkɧ|/>,pvZ 
+\ No newline at end of file
+diff --git a/examples/puma/encrypted_puma_keypair.pem b/examples/puma/encrypted_puma_keypair.pem
+index d876594..25becf1 100644
+--- a/examples/puma/encrypted_puma_keypair.pem
++++ b/examples/puma/encrypted_puma_keypair.pem
+@@ -1,30 +1,30 @@
+ -----BEGIN ENCRYPTED PRIVATE KEY-----
+-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
+ -----END ENCRYPTED PRIVATE KEY-----
+diff --git a/examples/puma/keystore.jks b/examples/puma/keystore.jks
+index e36f314..ef92af2 100644
+--- a/examples/puma/keystore.jks
++++ b/examples/puma/keystore.jks
+@@ -1,16 +1,8 @@
+-          puma  C)  00
+-+* ݝ˟m{.[9G}Du{&)a5vqlﳡRϺY|RrφLvzy+`,֐J19J5N7x::ʹq`o2?wl@Ŭr6hsڅgas_t!{a'=X]l\]iq~~K4s94le1*BBwߕCq^tgl{k(%u3jUt 9#Lg'M-H
+-E,?hcSұ]yBWGcİ;-u:6"#牤<bhbGd{f$]z|Hѫte'=?:6J[!SR2pҲgEizvv :PAI#ژ˄U'8ӡl*&ln@<Z\P!Ijh4DA^+
+-53]Y@=%Ȥ1c3j˨b1^L=e"fr%:2-Q=m&A.c:)Xe~s%o:ZuJ.4&P
+-EqFSt΅AtrࣣoaG@xĭͰD5d=GFIwiAGI=]'<_)IKuevb6tջ/eUZWY,1|)R͎ގ1OlڔJ$]g]9k8	PY'/'i:Gg)e
+-UNU>"|^	CmnM$<Q:T6c<e
+-Wh6ƗAr1t
+-@
+-
+-KV6	ۍSY\#$LupV0x=O(i1EW=4y1}eCQKwnoZ9l/81!U<}dobuC9(ѝZQ|Oyb卍;2=]6ōtV<ʽjφiިM_|?=*f)_\%OuwT֜ڳ=#1qW@aLj7Ae*X!oy_PuAk@^]EܱjS=Jmg[+5}Ϊ`ILEb6    X.509  00j0	*H 0910	UUS10U
+-local10Uaero10	UCA0240801000000Z280801000000Z0H10	UUS10U
++          puma  d  00
+++*&DŌ"Q}sbũlIW2'$7pKu9Iiz	?md8{omj^1\ZggKy=HNS+3ö*QMݡoyn㑨UY3E½`ތcµNY-wǸ~~62JѺn&J؁-r6+ЫLtgć atLnzo>F2REkE?DK]!$aO/x'L2[rhG3 l#hc򊝱m1,Ei!'?f:*}8USZwRd(ߙ>DeQƕ%M<]x#h2ܜ5x[6=yqs915.eǒ˯%ji1'Y>þ.ō#\|Z2cf0M8|kVZ}J3z+hr{)XOҏ jliҿl#caqmFЖIRN._5pMlK7c|7Rc=JfO!=NE_ȹҞ~MCx3020D"eE[GN3I"!%nL(+0xF#WY0+(%ps5PNPiG26?hoHUDWn#~穈#<ۼp2N<F/nCgt1PZU;ni#J37=퍂x$rQً"BثveQX\[t$QM@}@X%o,J?Oj 5.l@Iy,C$p%gwI.@7g~6]KP߳%ӥns9<9nL&#)7XbXKQ;Uxk0ׂ=-lt6^@ǩ;KFb=T'{W*d VYtoѴat
++VPW1@wF?uf;Db!($LAP7)~$7+ļэg!\m~1ϭk:$ou1Hx[=HweNel:nGk,AKy{ܨ
++1yT6(y 4zTrθN    X.509  00j0	*H 0910	UUS10U
++local10Uaero10	UCA0250701000000Z360701000000Z0H10	UUS10U
+ local10Uaero10	UCA10Upuma0"0	*H  0
+- ͓@b◯8U$Vy<m$&0%ɭp"b3ܑR~Sub1bdGC@m!-4Ab![Bg}Dcf<vHWE{Mrۓp~b0w ؍@'`ɩBgr6z#Zq$2jbafO>`R3t@|tĤus 00U0 01	`HB$"Ruby/OpenSSL Generated Certificate0U"eCF>Xkc0U0U%0
+-+0	*H  Z3_4=hݡ#Ʌ@37XQ3!CmBKo9~.InA:QJ[>/ϣtʱF\L/ó(j
+-z,GSe?Zgɝ0waNhV[Hh&x]KT-B+2f({ס+>MK1LO$VH2!$8u\!oa2*OE;݃VFdkS>46S!b4n_
+-[` 
+\ No newline at end of file
++ CpG/5nb/D֙ިa3z?U{byB]E]'Jꙗ*ʚXb|EX})\qb(]˸/675aHjn26+6<ٮPS0p$L>>]YAƢ [dWe4"րa[Ĺ	k%{_; m%}Gp-.m	=Tøg*%Xn_jZ5 00U0 01	`HB$"Ruby/OpenSSL Generated Certificate0U"eCF>Xkc0U0U%0
+++0	*H  WskW+<(JVN5UWcוN5dxZNEBʺSݯqcGwࡇh}p#'ZPg{'IxX	5JqUij;v0W9ec{`\%!s(桄T6Cs/.oK  iq4$?uNy̰NȢoZ;SquHypUѽz^-Vf,]Sen,&HJpwk){dI3$͒D
+\ No newline at end of file
+diff --git a/examples/puma/puma_keypair.pem b/examples/puma/puma_keypair.pem
+index 1aded78..f1c333e 100644
+--- a/examples/puma/puma_keypair.pem
++++ b/examples/puma/puma_keypair.pem
+@@ -1,27 +1,27 @@
+ -----BEGIN RSA PRIVATE KEY-----
+-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
+ -----END RSA PRIVATE KEY-----
+diff --git a/examples/puma/server.p12 b/examples/puma/server.p12
+index d928a19..49f76f8 100644
+--- a/examples/puma/server.p12
++++ b/examples/puma/server.p12
+@@ -1,13 +1,15 @@
+ 0
+-0
+->	*H
+-/
+-+0
+-'0	*Hs0o 0h	*H0W	*H0J0)	*H0{T 0*H	 0	`He*8\]}̛{<) TH9{#Cƭ>O̱]fT[ǨsV:! ^Y*\a&  HUty,ww|zkj$Vr,+0zRe}Fm.,:]tydTaÈ{#, /zArHhj&'$k.\.t6D+߈`?䝲#Y;-bjib<\JJk2%bwսBjIMIS.@0&V RgXAXUhH+JiWgv4(|l=cnygP2)7yd,`v|f*VH\(nqfՓ'"m!!9pQc n)4WDi Xy3m%FF,(wU˸ -	Q˵K<ȷȢ=ݠ S76^yAίc--LLcB||-* Y.'M޸NRyb< |/24l+@V÷TP	RICĀ<cBnb_Wx42yʍ]./Ϸc}[\oגd9k4Yv˧_3[̥1ov, a>W>^7kK-{oA;'9pu6|q"ȡ SS,w4f.6Gv@Uxf$r̜"N9dn͘xcs)nX_"[;+S:;jv:crg<ZI8u7+}DnBD{IQ8VrJ7I2lCʲ40ȃ̟RPR_hICua ZwvwDEO.X/&?GYXgR:MkTϱc
+-	Y0	*H00*H
+-10-0W	*H0J0)	*H0R)? 0*H	 0	`He*lrRQqvZ~knԴ(|Ԕ[__"<o~7S
+-Ij,ֵ==f$/`ASLm-sjv`.D{m=q1 3oXO԰A
+-4`G|O4P=& y8_IBO	!i3:̓[>B]_dƣ+=o%V}T*55䞷1`px2{ORrv3Z0&`
+-Oݷ%M+7֟4M1z/2A9^ʓ!mwއ/>TCk$j'ٟapDV'ǠBۿf)!oC˧E;5߳Qˌ]<M B8!YڒϠ
+-XH Tu^Am̟] )w6V^	mY%躯ly6+OuSoI}T5~_g~e	:HOfrX".Dc*i7SR šsCmvoS'p >TRi2XRXC6fS'?	#|&	Ԉe` 8#Jޱ|vFN}mq$a׬K<E+Y(?IA?/}}dJ3oi,@xOh@+Z3,	{{-t&[t%vڴۜ\Bji?*[V5=^H>D=-s\ 	qKX<$GqGn<EWyXjyfת DVBQ0DRV6j~|38ms{$'JbҦn)3>;Q.|Bԁ~H_i	qȺ؍}hVD[FmSbP<1|ʗY̗~0TIܔa`x:w\_b{e1wh;SϏ]8xFl0<JؤaX#ɢx?dYQ+8, _:<qȝkA4]k~M±:ܣ(X><WϦs}Vd%A6=R^}|)'(MrYmIקi">Ma>(LRl٧^vfi V</Ռ۹/j1>0	*H	1
+- p u m a0#	*H	1ԗS9Ww#l00A010	`He  X(6#+ǐaOJ}䟯Ia^ 
+\ No newline at end of file
++0
++N	*H
++?
++;0
++70	*H{0w 0p	*H0_	*H0R01	*H0$En#dVUp 0*H	 0	`He*to&d[S ;pFqHĥyѕ2hVP9|flk nL5$]8W:<II~	#t_jKH5Qk6LG
++J7_+3*ٟAG`ʍ)ʕ{QBXb־ 	H"̪N~a]I4g--uk<^gj+j|[\
++<qS2wtRwZr1 _3ɒj4!@s߰	$fr6cR_͍ o8f$<vg(	81Hvv TVttCKK.'68	#|v)2='I@Q8Z]*SV.bNu}oZS.xM#SZ.8he"n~"* |"Xdϋң<SDqoKWO"SA^ia l~Gw,LwnoN@:;bӆ67A֬ڄdMyQCdg%X{xi9Hm^"
++DO.K"7K|wDH*Cx*gr*er٥°Ǯ%$XiOr7
++<|[i-e\q#h7 fyH:zy𜎟Lb-d,:w~{[)4AJ1&W[jOM]UO{U1Rѡ'켢ێ'bل!<Ӆ8ڹs<5܏(nM=$hlqm|iD|K%?kcpx9-%L=7Zz"܄~zD?Ui<MLԩVwߖC/+؃?8+:uCA@I\FÜc,u-V'ʙJ!KS&3x/ݭmE%.Wf?4%bqq!m/iQ'܊I[01A>.3Bi0	*H00*H
++9050_	*H0R01	*H0$j<w^R&zo 0*H	 0	`He*}+/KVD֊v4FԹgcihi9{BV 2zZf踡a:閟3hz3_⳩wY#r&K|N' 2G=)iy]	+ 7j͢e%H`O=tp1Bh
++VAg&bCZc B-#ܯ=pbSFD<:t+޵G'QK-mN,&&^j?h,8ut3Ș<f먍tsYyhPqVA3Ǚ$pF;`EGgVofo|YǠ0`kKW&m 5YۮP!8h:tH[.st12}6wE`W߁8]{k޴&[kt	g|sl-V)u6)a6jD&{]A/{qnn:~GSMO;Ѱ rckDf0#寽\6ҏxr$ÐPٟM-;>;/8hn٩U|L+BwM[q1o8mrp2A,&Nf΀9b֑~
++AttTvS¤L+LSGz}Ls4~xm%ԇO"r*,l%h_E{p	]utCaB%ceW_*X,njg{s7	R^8O
++`<Iݑq$2cH~WAb-C<{HR:NEX'&73/.D\zp/%fH6҈)ͰAN^|$B͑Qd{jdnn5M/`Ź#i~ꄑM)-d--RfCR	f!I*ՒM_f¥^Oqsג5g͟eJV^˵|iR%G NC0W pY|\aH\V ڡ2c C8k`vspZܡ`M(jBPLPͼ8wO_oK=9dh6@>p릃lͯ,&E]Q0><xyH9W64C>	 3:ZLF`܇%loݦ`i}gt2OZ1>0	*H	1
++ p u m a0#	*H	17HRn햼O"K0A010	`He  73z{DFlNrHOqk4{ 
+\ No newline at end of file
diff -Nru puma-6.6.0/debian/patches/series puma-6.6.0/debian/patches/series
--- puma-6.6.0/debian/patches/series	2025-07-16 16:51:16.000000000 -0300
+++ puma-6.6.0/debian/patches/series	2025-07-17 07:20:19.000000000 -0300
@@ -8,4 +8,5 @@
 0017-disable-test-failing-on-armhf.patch
 0018-disable-test-failing-with-ruby3.2.patch
 0010-Disable-test-concurrency-without-concurrent_ruby.patch
-0019-do-not-download-ca-gem.patch
+0019-adapt-test-certs-generation.patch
+0020-update-ex-certs.patch
diff -Nru puma-6.6.0/debian/README.source puma-6.6.0/debian/README.source
--- puma-6.6.0/debian/README.source	2025-07-16 16:51:16.000000000 -0300
+++ puma-6.6.0/debian/README.source	2025-07-17 07:20:19.000000000 -0300
@@ -1,3 +1,20 @@
+puma (6.6.0-4)
+
+  Added the capability to re-generate test certificates in the examples
+  directory. This should require installing
+  - default-jre, and
+  - ruby-certificate-authority
+  which are currently not listed as dependencies of this package. You can also
+  use faketime to run the upstream tests in a future date to test if the
+  certificates will be valid throughout the Debian release support cycle.
+
+  Note that these certificates are not being re-generated during build time
+  because the examples/generate_all_certs script depends on the keytool binary
+  shipped in the JRE package (we do not want to build depend on Java just for
+  this). It should be possible to re-write the script to use the minijks
+  package instead (written in Go) so we can always generate these certificates
+  during package builds.
+
 puma (4.3.1-1)
 
   Several tests have been disabled by default:
diff -Nru puma-6.6.0/debian/rules puma-6.6.0/debian/rules
--- puma-6.6.0/debian/rules	2025-07-16 16:51:16.000000000 -0300
+++ puma-6.6.0/debian/rules	2025-07-17 07:20:19.000000000 -0300
@@ -12,12 +12,3 @@
 
 override_dh_installchangelogs:
 	dh_installchangelogs History.md
-
-EXAMPLES_CERT_DIR = examples/puma
-execute_before_dh_auto_test:
-	cp -r $(EXAMPLES_CERT_DIR) $(EXAMPLES_CERT_DIR).upstream
-	examples/generate_all_certs
-
-execute_before_dh_clean:
-	if test -d $(EXAMPLES_CERT_DIR).upstream; then rm -r $(EXAMPLES_CERT_DIR) && mv $(EXAMPLES_CERT_DIR).upstream $(EXAMPLES_CERT_DIR); fi
-
