TLSを設定する
Crypto TLSは、Collectorの個々のレシーバーまたはエクスポーター内で調整できるさまざまな設定を公開しています。
TLS / mTLSを設定する
デフォルトでは、TLSは有効になっています:
-
利用可能な必須およびオプションの設定を確認する
-
TLS/mTLS の設定を完了するには、「Configure TLS clients」あるいは「Configure TLS servers」を参照してください。
必須の設定
以下の設定が必要です:
-
insecure。デフォルトではfalseです。エクスポータの HTTPs または gRPC 接続のクライアントトランスポートセキュリティを有効にするかどうかを定義します。-
gRCP については Golang の grpc.WithInsecure() を参照してください。
-
-
cert_fileします。insecureがfalseに設定されている場合にのみ使用します。TLS 必須接続に使用する TLS 証明書へのパス。 -
cert_pemします。cert_fileの代替です。証明書の内容をファイルパスの代わりに文字列で指定します。 -
key_fileします。insecureがfalseに設定されている場合にのみ使用します。TLS 必須接続に使用する TLS キーへのパス。 -
key_pem:key_fileの代替です。キーの内容をファイルパスの代わりに文字列で指定します。
追加設定
認証局
認証局を定義するには、次を使用します:
-
ca_fileします。insecureがfalseに設定されている場合にのみ使用します。CA 証明書へのパスです。-
クライアントの場合は、これによりサーバー証明書を検証します。
-
サーバーの場合、これはクライアント証明書を検証します。
-
空の場合、システムルートCAを使用します。
-
-
ca_pemします。ca_fileの代替です。CA 証明書の内容をファイルパスの代わりに文字列で指定します。
認証局の定義とシステム認証局の定義を組み合わせるには、次を使用します:
-
include_system_ca_certs_pool。デフォルトではfalseです。認証局と一緒にシステム認証局プールをロードするかどうかを指定します。
さらに、TLS を有効にしつつ、サーバーの証明書チェーンの検証をスキップするように設定することもできます。insecure は TLS を使用しないため、insecure と組み合わせることはできません。
-
insecure_skip_verify。デフォルトではfalseです。証明書の検証をスキップするかどうかを指定します。
TLSのバージョン
TLSバージョンの最小値と最大値を設定できます:
-
min_versionします。デフォルトでは「1.2」となっています。TLS の最低許容バージョンです。-
オプション:"1.0"、"1.1"、"1.2"、"1.3"
-
-
max_versionです。デフォルトでは "" となっています。TLS の最大許容バージョンです。-
オプション:"1.0"、"1.1"、"1.2"、"1.3"
-
暗号スイート
cipher_suites を使って明示的に暗号スイートを設定することができます。
-
デフォルトでは
[]です。空白のままにすると安全なデフォルトリストが適用されます。 -
対応する暗号リストは「Cipher suites source files」からご確認ください。
例:
cipher_suites:
- TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
証明書を再読み込みする
オプションとして、証明書を再読み込みする期間を指定する reload_interval を使用することができます。
-
設定されていない場合、証明書はリロードされません。
-
有効な時間単位は、"ns"、"us" (または"µs")、"ms"、"s"、"m"、"h"です。
TLSクライアントを設定する
エクスポータで TLS クライアントを設定するには、前のセクションの設定を使用します。
オプションで、server_name_override を設定することもできます。
-
空でない文字列に設定された場合、リクエスト中の権限のバーチャルホスト名をオーバーライドします。
-
これは通常、テストに使用されます。
例:
exporters:
otlp:
endpoint: myserver.local:55690
tls:
insecure: false
ca_file: server.crt
cert_file: client.crt
key_file: client.key
min_version: "1.1"
max_version: "1.2"
otlp/insecure:
endpoint: myserver.local:55690
tls:
insecure: true
otlp/secure_no_verify:
endpoint: myserver.local:55690
tls:
insecure: false
insecure_skip_verify: true
TLSサーバーを設定する
Collector レシーバで TLS サーバーを設定するには、前のセクションの設定を使用します。
オプションで、次を設定することもできます。
-
client_ca_fileします。サーバーがクライアント証明書を検証するために使用する TLS 証明書へのパス。これにより、TLS 構成で ClientCA と ClientAuth がRequireAndVerifyClientCertに設定されます。詳しくは https://godoc.org/crypto/tls#Config を参照してください。 -
client_ca_file_reload。デフォルトではfalseです。ClientCAs ファイルが変更されたときに再読み込みします。
例:
receivers:
otlp:
protocols:
grpc:
endpoint: mysite.local:55690
tls:
cert_file: server.crt
key_file: server.key
otlp/mtls:
protocols:
grpc:
endpoint: mysite.local:55690
tls:
client_ca_file: client.pem
cert_file: server.crt
key_file: server.key
otlp/notls:
protocols:
grpc:
endpoint: mysite.local:55690
さらに詳しく
利用可能な設定について、詳しくは OpenTelemetry の GitHub レポジトリより「TLS Configuration Settings」をご確認ください。