TLSを設定する

Crypto TLSは、Collectorの個々のレシーバーまたはエクスポーター内で調整できるさまざまな設定を公開しています。

注: 相互TLS(mTLS)もサポートされています。

TLS / mTLSを設定する

デフォルトでは、TLSは有効になっています:

  1. 利用可能な必須およびオプションの設定を確認する

  2. TLS/mTLS の設定を完了するには、「Configure TLS clients」あるいは「Configure TLS servers」を参照してください。

必須の設定

以下の設定が必要です:

  • insecure。デフォルトでは false です。エクスポータの HTTPs または gRPC 接続のクライアントトランスポートセキュリティを有効にするかどうかを定義します。

  • cert_fileします。insecurefalse に設定されている場合にのみ使用します。TLS 必須接続に使用する TLS 証明書へのパス。

  • cert_pemします。cert_file の代替です。証明書の内容をファイルパスの代わりに文字列で指定します。

  • key_fileします。insecurefalse に設定されている場合にのみ使用します。TLS 必須接続に使用する TLS キーへのパス。

  • key_pemkey_file の代替です。キーの内容をファイルパスの代わりに文字列で指定します。

追加設定

認証局

認証局を定義するには、次を使用します:

  • ca_fileします。insecurefalse に設定されている場合にのみ使用します。CA 証明書へのパスです。

    • クライアントの場合は、これによりサーバー証明書を検証します。

    • サーバーの場合、これはクライアント証明書を検証します。

    • 空の場合、システムルートCAを使用します。

  • ca_pemします。ca_file の代替です。CA 証明書の内容をファイルパスの代わりに文字列で指定します。

認証局の定義とシステム認証局の定義を組み合わせるには、次を使用します:

  • include_system_ca_certs_pool。デフォルトでは false です。認証局と一緒にシステム認証局プールをロードするかどうかを指定します。

さらに、TLS を有効にしつつ、サーバーの証明書チェーンの検証をスキップするように設定することもできます。insecure は TLS を使用しないため、insecure と組み合わせることはできません。

  • insecure_skip_verify。デフォルトでは false です。証明書の検証をスキップするかどうかを指定します。

TLSのバージョン

注意: TLS 1.0 および 1.1 の使用は避けてください。どちらも脆弱性が認められるため非推奨となっています。

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 ファイルが変更されたときに再読み込みします。

注: これらはmTLSに必要です。

例:

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」をご確認ください。