transparency-dev / transparency-dev/tesseract

HEAD requests are not available

Open
#540 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
Go
Stars
37
Forks
18
Avg merge
19h 22m
Merged PRs (30d)
15

Description

Description

Not sure if this is a bug or working as intended, but I have noticed that TesseraCT (at least the POSIX one) does not implement HEAD requests, only POST and GET:

Compare:

$ curl -Ssv  https://halloumi2025h2.log.ct.ipng.ch/ct/v1/get-roots -o /dev/null
...
< HTTP/2 200 
< server: nginx/1.26.3
< date: Wed, 27 Aug 2025 21:03:22 GMT
< content-type: text/plain; charset=utf-8
< vary: Accept-Encoding
< x-ipng-frontend: nginx0-chrma0
< 
{ [8060 bytes data]

With:

$ curl -ISsv  https://halloumi2025h2.log.ct.ipng.ch/ct/v1/get-roots -o /dev/null
< HTTP/2 405 
< server: nginx/1.26.3
< date: Wed, 27 Aug 2025 21:04:10 GMT
< content-type: text/plain; charset=utf-8
< content-length: 44
< x-content-type-options: nosniff
< x-ipng-frontend: nginx0-chplo0
< 
{ [0 bytes data]

This is not a frontend issue, hitting the IPv4 / IPv6 endpoint directly yields the same result:

ctlog@ctlog1:~$ curl -I  localhost:16900/ct/v1/get-roots 
HTTP/1.1 405 Method Not Allowed
Content-Type: text/plain; charset=utf-8
X-Content-Type-Options: nosniff
Date: Wed, 27 Aug 2025 21:05:52 GMT
Content-Length: 44

ctlog@ctlog1:~$ ps auxw | grep 16900
ctlog      51635  2.3  0.2 4418792 45844 ?       Ssl  Aug26  52:54 /home/ctlog/bin/tesseract-posix --private_key=/ssd-vol0/enc/tesseract/keys/lipase2025h2.pem --origin=lipase2025h2.log.ct.ipng.ch --storage_dir=/ssd-vol0/logs/lipase2025h2/data --roots_pem_file=/ssd-vol0/logs/lipase2025h2/data/roots.pem --http_endpoint=[::]:16900 --not_after_start=2025-07-01T00:00:00Z --not_after_limit=2026-01-01T00:00:00Z

Perhaps we can consider documenting that HEAD requests are ineffective in TesseraCT, or update it to implement HEAD requests.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start at the HTTP handling for the /ct/v1/get-roots entry point and compare its current GET and POST method behavior with the reported HEAD request. Decide whether HEAD should be supported or documented as ineffective; done when the chosen behavior is covered by the relevant checks or documentation.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
api, backend
Issue type
Feature
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.