TLS transport socket

This extension may be referenced by the qualified name envoy.transport_sockets.tls

Note

This extension is intended to be robust against both untrusted downstream and upstream traffic.

The TLS contexts below provide the transport socket configuration for upstream/downstream TLS.

auth.UpstreamTlsContext

[auth.UpstreamTlsContext proto]

{
  "common_tls_context": "{...}",
  "sni": "...",
  "allow_renegotiation": "...",
  "max_session_keys": "{...}"
}
common_tls_context

(auth.CommonTlsContext) Common TLS context settings.

Attention

Server certificate verification is not enabled by default. Configure trusted_ca to enable verification.

sni

(string) SNI string to use when creating TLS backend connections.

allow_renegotiation

(bool) If true, server-initiated TLS renegotiation will be allowed.

Attention

TLS renegotiation is considered insecure and shouldn’t be used unless absolutely necessary.

max_session_keys

(UInt32Value) Maximum number of session keys (Pre-Shared Keys for TLSv1.3+, Session IDs and Session Tickets for TLSv1.2 and older) to store for the purpose of session resumption.

Defaults to 1, setting this to 0 disables session resumption.

auth.DownstreamTlsContext

[auth.DownstreamTlsContext proto]

{
  "common_tls_context": "{...}",
  "require_client_certificate": "{...}",
  "session_ticket_keys": "{...}",
  "session_ticket_keys_sds_secret_config": "{...}",
  "disable_stateless_session_resumption": "...",
  "session_timeout": "{...}"
}
common_tls_context

(auth.CommonTlsContext) Common TLS context settings.

require_client_certificate

(BoolValue) If specified, Envoy will reject connections without a valid client certificate.

session_ticket_keys

(auth.TlsSessionTicketKeys) TLS session ticket key settings.

Only one of session_ticket_keys, session_ticket_keys_sds_secret_config, disable_stateless_session_resumption may be set.

session_ticket_keys_sds_secret_config

(auth.SdsSecretConfig) Config for fetching TLS session ticket keys via SDS API.

Only one of session_ticket_keys, session_ticket_keys_sds_secret_config, disable_stateless_session_resumption may be set.

disable_stateless_session_resumption

(bool) Config for controlling stateless TLS session resumption: setting this to true will cause the TLS server to not issue TLS session tickets for the purposes of stateless TLS session resumption. If set to false, the TLS server will issue TLS session tickets and encrypt/decrypt them using the keys specified through either session_ticket_keys or session_ticket_keys_sds_secret_config. If this config is set to false and no keys are explicitly configured, the TLS server will issue TLS session tickets and encrypt/decrypt them using an internally-generated and managed key, with the implication that sessions cannot be resumed across hot restarts or on different hosts.

Only one of session_ticket_keys, session_ticket_keys_sds_secret_config, disable_stateless_session_resumption may be set.

session_timeout

(Duration) If specified, session_timeout will change maximum lifetime (in seconds) of TLS session Currently this value is used as a hint to TLS session ticket lifetime (for TLSv1.2) <https://tools.ietf.org/html/rfc5077#section-5.6> only seconds could be specified (fractional seconds are going to be ignored).

auth.CommonTlsContext

[auth.CommonTlsContext proto]

TLS context shared by both client and server TLS contexts.

{
  "tls_params": "{...}",
  "tls_certificates": [],
  "tls_certificate_sds_secret_configs": [],
  "validation_context": "{...}",
  "validation_context_sds_secret_config": "{...}",
  "combined_validation_context": "{...}",
  "alpn_protocols": []
}
tls_params

(auth.TlsParameters) TLS protocol versions, cipher suites etc.

tls_certificates

(repeated auth.TlsCertificate) Multiple TLS certificates can be associated with the same context to allow both RSA and ECDSA certificates.

Only a single TLS certificate is supported in client contexts. In server contexts, the first RSA certificate is used for clients that only support RSA and the first ECDSA certificate is used for clients that support ECDSA.

tls_certificate_sds_secret_configs

(repeated auth.SdsSecretConfig) Configs for fetching TLS certificates via SDS API.

validation_context

(auth.CertificateValidationContext) How to validate peer certificates.

Only one of validation_context, validation_context_sds_secret_config, combined_validation_context may be set.

validation_context_sds_secret_config

(auth.SdsSecretConfig) Config for fetching validation context via SDS API.

Only one of validation_context, validation_context_sds_secret_config, combined_validation_context may be set.

combined_validation_context

(auth.CommonTlsContext.CombinedCertificateValidationContext) Combined certificate validation context holds a default CertificateValidationContext and SDS config. When SDS server returns dynamic CertificateValidationContext, both dynamic and default CertificateValidationContext are merged into a new CertificateValidationContext for validation. This merge is done by Message::MergeFrom(), so dynamic CertificateValidationContext overwrites singular fields in default CertificateValidationContext, and concatenates repeated fields to default CertificateValidationContext, and logical OR is applied to boolean fields.

Only one of validation_context, validation_context_sds_secret_config, combined_validation_context may be set.

alpn_protocols

(repeated string) Supplies the list of ALPN protocols that the listener should expose. In practice this is likely to be set to one of two values (see the codec_type parameter in the HTTP connection manager for more information):

  • “h2,http/1.1” If the listener is going to support both HTTP/2 and HTTP/1.1.

  • “http/1.1” If the listener is only going to support HTTP/1.1.

There is no default for this parameter. If empty, Envoy will not expose ALPN.

auth.CommonTlsContext.CombinedCertificateValidationContext

[auth.CommonTlsContext.CombinedCertificateValidationContext proto]

{
  "default_validation_context": "{...}",
  "validation_context_sds_secret_config": "{...}"
}
default_validation_context

(auth.CertificateValidationContext, REQUIRED) How to validate peer certificates.

validation_context_sds_secret_config

(auth.SdsSecretConfig, REQUIRED) Config for fetching validation context via SDS API.