prometheus / prometheus/alertmanager

[Feat/bug] TLS config, allow to define x509.VerifyOptions.KeyUsages

Open
#5,151 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Go
Stars
8.6k
Forks
2.5k
Avg merge
2d 6h
Merged PRs (30d)
61

Description

Proposal

Since this: Ending TLS Client Authentication Certificate Support in 2026


  • LE removed "TLS Client Authentication EKU" (this is just some field)
  • Modern Go strictly enforces that if a specific usage is requested in VerifyOptions, the certificate must have it.

Please add to AM option, with that administrator can disable check for "X509v3 Extended Key Usage", because we okay with just cert is valid


Example gossip configuration:

tls_client_config:
    cert_file: /etc/pki/tls/private/le/fullchain.pem
    key_file: /etc/pki/tls/private/le/privkey.pem
    server_name: am2.example.com
tls_server_config:
    cert_file: /etc/pki/tls/private/le/fullchain.pem
    client_auth_type: RequireAndVerifyClientCert
    key_file: /etc/pki/tls/private/le/privkey.pem
    min_version: TLS13

Alertmanager log:

Apr 03 16:14:26 am2.example.com alertmanager[1853810]: time=2026-04-03T16:14:26.440+07:00 level=DEBUG source=net.go:974 msg="[DEBUG] memberlist: Initiating push/pull sync with:  100.100.101.30:9094" component=cluster
Apr 03 16:14:26 am2.example.com alertmanager[1853810]: time=2026-04-03T16:14:26.443+07:00 level=DEBUG source=memberlist.go:288 msg="[DEBUG] memberlist: failed to join 100.100.101.30:9094: remote error: tls: bad certificate" component=cluster
Apr 03 16:14:26 am2.example.com alertmanager[1853810]: time=2026-04-03T16:14:26.443+07:00 level=DEBUG source=cluster.go:440 msg=failure component=cluster msg=reconnect peer="" addr=100.100.101.30:9094 err="1 error occurred:\n\t* failed to join 100.100.101.30:9094: remote error: tls: bad certificate\n\n"
Apr 03 16:14:27 am2.example.com alertmanager[1853810]: time=2026-04-03T16:14:27.336+07:00 level=DEBUG source=tls_transport.go:275 msg="error reading from connection" component=cluster err="error reading message length: tls: failed to verify certificate: x509: certificate specifies an incompatible key usage"

Contributor guide

No contributing guide indexed for this repository

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 by tracing the Go TLS configuration paths for tls_client_config and tls_server_config, then read how x509.VerifyOptions and certificate key usages are selected. Define where the administrator option belongs and verify that disabling the Extended Key Usage check permits the shown certificates while retaining other certificate validation.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
networking, security
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.