Skip to content

proposal: crypto/tls: remove minimum version requirement for tls.Config used for QUIC #77631

@marten-seemann

Description

@marten-seemann

Proposal Details

The crypto/tls package requires tls.Config.MinVersion >= VersionTLS13 for QUIC connections to enforce RFC 9001's TLS 1.3 requirement.

This forces QUIC implementations and users to clone the tls.Config when sharing it between TCP (which may allow TLS 1.2+) and QUIC. Cloning adds overhead and is problematic after changes to Config.Clone (see #77113) and other QUIC workarounds (see #77363).

A common use case is a dual-stack HTTP server supporting HTTP/2 (TLS 1.2+) and HTTP/3 (TLS 1.3 only) with a single shared tls.Config where MinVersion = VersionTLS12.

Proposal
Remove the explicit MinVersion check for QUIC. When a tls.Config is used in QUIC context, internally clamp the effective minimum to VersionTLS13 while preserving the original value for non-QUIC use.

This would:

  • Remove a major reason to clone tls.Config for QUIC.
  • Simplify dual-stack server configurations.
  • Leave QUIC-only Configs unaffected.

Metadata

Metadata

Assignees

No one assigned

    Labels

    LibraryProposalIssues describing a requested change to the Go standard library or x/ libraries, but not to a toolProposal

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions