|
| 1 | +.. _collector-common-config-tls: |
| 2 | + |
| 3 | +********************************************************************************* |
| 4 | +Configure TLS |
| 5 | +********************************************************************************* |
| 6 | + |
| 7 | +:ref:`Collector receivers <otel-components-receivers>` leverage network configuration to set connection and transport information. |
| 8 | + |
| 9 | +Crypto TLS exposes a variety of settings. Several of these settings are available for configuration within individual receivers or exporters. |
| 10 | + |
| 11 | +Note that mutual TLS (mTLS) is also supported. |
| 12 | + |
| 13 | +TLS / mTLS Configuration |
| 14 | +By default, TLS is enabled: |
| 15 | + |
| 16 | +insecure (default = false): whether to enable client transport security for the exporter's HTTPs or gRPC connection. See grpc.WithInsecure() for gRPC. |
| 17 | +As a result, the following parameters are also required: |
| 18 | + |
| 19 | +cert_file: Path to the TLS cert to use for TLS required connections. Should only be used if insecure is set to false. |
| 20 | + |
| 21 | +cert_pem: Alternative to cert_file. Provide the certificate contents as a string instead of a filepath. |
| 22 | +key_file: Path to the TLS key to use for TLS required connections. Should only be used if insecure is set to false. |
| 23 | + |
| 24 | +key_pem: Alternative to key_file. Provide the key contents as a string instead of a filepath. |
| 25 | +A certificate authority may also need to be defined: |
| 26 | + |
| 27 | +ca_file: Path to the CA cert. For a client this verifies the server certificate. For a server this verifies client certificates. If empty uses system root CA. Should only be used if insecure is set to false. |
| 28 | +ca_pem: Alternative to ca_file. Provide the CA cert contents as a string instead of a filepath. |
| 29 | +You can also combine defining a certificate authority with the system certificate authorities. |
| 30 | + |
| 31 | +include_system_ca_certs_pool (default = false): whether to load the system certificate authorities pool alongside the certificate authority. |
| 32 | +Additionally you can configure TLS to be enabled but skip verifying the server's certificate chain. This cannot be combined with insecure since insecure won't use TLS at all. |
| 33 | + |
| 34 | +insecure_skip_verify (default = false): whether to skip verifying the certificate or not. |
| 35 | +Minimum and maximum TLS version can be set: |
| 36 | + |
| 37 | +IMPORTANT: TLS 1.0 and 1.1 are deprecated due to known vulnerabilities and should be avoided. |
| 38 | + |
| 39 | +min_version (default = "1.2"): Minimum acceptable TLS version. |
| 40 | + |
| 41 | +options: ["1.0", "1.1", "1.2", "1.3"] |
| 42 | +max_version (default = "" handled by crypto/tls - currently TLS 1.3): Maximum acceptable TLS version. |
| 43 | + |
| 44 | +options: ["1.0", "1.1", "1.2", "1.3"] |
| 45 | +Explicit cipher suites can be set. If left blank, a safe default list is used. See https://go.dev/src/crypto/tls/cipher_suites.go for a list of supported cipher suites. |
| 46 | + |
| 47 | +cipher_suites: (default = []): List of cipher suites to use. |
| 48 | +Example: |
| 49 | + |
| 50 | + cipher_suites: |
| 51 | + - TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 |
| 52 | + - TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 |
| 53 | + - TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 |
| 54 | +Additionally certificates may be reloaded by setting the below configuration. |
| 55 | + |
| 56 | +reload_interval (optional) : ReloadInterval specifies the duration after which the certificate will be reloaded. If not set, it will never be reloaded. Accepts a duration string, valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h". |
| 57 | +How TLS/mTLS is configured depends on whether configuring the client or server. See below for examples. |
| 58 | + |
| 59 | +Client Configuration |
| 60 | +Exporters leverage client configuration. The TLS configuration parameters are defined under tls, like server configuration. |
| 61 | + |
| 62 | +Beyond TLS configuration, the following setting can optionally be configured: |
| 63 | + |
| 64 | +server_name_override: If set to a non-empty string, it will override the virtual host name of authority (e.g. :authority header field) in requests (typically used for testing). |
| 65 | +Example: |
| 66 | + |
| 67 | +exporters: |
| 68 | + otlp: |
| 69 | + endpoint: myserver.local:55690 |
| 70 | + tls: |
| 71 | + insecure: false |
| 72 | + ca_file: server.crt |
| 73 | + cert_file: client.crt |
| 74 | + key_file: client.key |
| 75 | + min_version: "1.1" |
| 76 | + max_version: "1.2" |
| 77 | + otlp/insecure: |
| 78 | + endpoint: myserver.local:55690 |
| 79 | + tls: |
| 80 | + insecure: true |
| 81 | + otlp/secure_no_verify: |
| 82 | + endpoint: myserver.local:55690 |
| 83 | + tls: |
| 84 | + insecure: false |
| 85 | + insecure_skip_verify: true |
| 86 | +Server Configuration |
| 87 | +Receivers leverage server configuration. |
| 88 | + |
| 89 | +Beyond TLS configuration, the following setting can optionally be configured (required for mTLS): |
| 90 | + |
| 91 | +client_ca_file: Path to the TLS cert to use by the server to verify a client certificate. (optional) This sets the ClientCAs and ClientAuth to RequireAndVerifyClientCert in the TLSConfig. Please refer to https://godoc.org/crypto/tls#Config for more information. |
| 92 | +client_ca_file_reload (default = false): Reload the ClientCAs file when it is modified. |
| 93 | +Example: |
| 94 | + |
| 95 | +receivers: |
| 96 | + otlp: |
| 97 | + protocols: |
| 98 | + grpc: |
| 99 | + endpoint: mysite.local:55690 |
| 100 | + tls: |
| 101 | + cert_file: server.crt |
| 102 | + key_file: server.key |
| 103 | + otlp/mtls: |
| 104 | + protocols: |
| 105 | + grpc: |
| 106 | + endpoint: mysite.local:55690 |
| 107 | + tls: |
| 108 | + client_ca_file: client.pem |
| 109 | + cert_file: server.crt |
| 110 | + key_file: server.key |
| 111 | + otlp/notls: |
| 112 | + protocols: |
| 113 | + grpc: |
| 114 | + endpoint: mysite.local:55690 |
| 115 | + |
| 116 | + |
| 117 | + |
0 commit comments