Skip to content

Force Jetty header cache to be case-sensitive, to avoid signature mismatch#837

Merged
gaul merged 1 commit intogaul:masterfrom
re1709:fix_content_type_signature_mismatch
Jul 16, 2025
Merged

Force Jetty header cache to be case-sensitive, to avoid signature mismatch#837
gaul merged 1 commit intogaul:masterfrom
re1709:fix_content_type_signature_mismatch

Conversation

@re1709
Copy link

@re1709 re1709 commented Jul 16, 2025

Jetty's header cache sometimes results in headers (and their values) being changed from what is sent in the request due to it's case insensitive nature.

This breaks AWS V2 and V4 signature calculations, as the sender will have calculated the signature with slightly different values.

E.g.

  1. Charset is 'utf-8' when calculating the signature and sent across in the headers as 'utf-8'
  2. Jetty's cache results in this becoming 'UTF-8' at S3Proxy
  3. S3Proxy then uses 'UTF-8' when calculating the signature.
  4. Signature mismatch then occurs

Forcing the cache to be case sensitive fixes this. Looks like this was an issue in the past, and was fixed by using the LEGACY validation option. However seems to now require this additional setting, which might be caused by the upgrade to Jetty 11?
(Jetty 12 has further work on this, so might need reviewing if/when that upgrade happens).

…match (e.g. upper case charset used in S3Proxy, but lowercase used in original signature calculation)
@gaul gaul merged commit 5ff5896 into gaul:master Jul 16, 2025
3 checks passed
@gaul
Copy link
Owner

gaul commented Jul 16, 2025

Thank you for your contribution @re1709!

@gaul gaul mentioned this pull request Jul 17, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants