elasticsearch-certutil

elasticsearch-certutil コマンドは、Elastic Stack におけるトランスポート層セキュリティ (TLS) 用の証明書の作成を簡素化します。

Synopsis

Shell

  1. bin/elasticsearch-certutil
  2. (
  3. (ca [--ca-dn <name>] [--days <n>] [--pem])
  4. | (cert ([--ca <file_path>] | [--ca-cert <file_path> --ca-key <file_path>])
  5. [--ca-dn <name>] [--ca-pass <password>] [--days <n>]
  6. [--dns <domain_name>] [--in <input_file>] [--ip <ip_addresses>]
  7. [--multiple] [--name <file_name>] [--pem] [--self-signed])
  8. | (csr [--dns <domain_name>] [--in <input_file>] [--ip <ip_addresses>]
  9. [--name <file_name>])
  10. [-E <KeyValuePair>] [--keysize <bits>] [--out <file_path>]
  11. [--pass <password>]
  12. )
  13. | http
  14. [-h, --help] ([-s, --silent] | [-v, --verbose])

Description

次のモードのいずれかを指定できます: ca, cert, csr, httpelasticsearch-certutil コマンドは、バッチ操作を容易にするためのサイレントモードの操作もサポートしています。

CA mode

ca モードは、新しい証明書機関 (CA) を生成します。デフォルトでは、CA 証明書と CA の秘密鍵を保持する単一の PKCS#12 出力ファイルを生成します。--pem パラメータを指定すると、コマンドは PEM 形式の証明書と秘密鍵を含む zip ファイルを生成します。

その後、これらのファイルをコマンドの cert モードの入力として使用できます。

CERT mode

cert モードは、X.509 証明書と秘密鍵を生成します。デフォルトでは、単一のインスタンスで使用するための単一の証明書と鍵を生成します。

複数のインスタンス用の証明書と鍵を生成するには、--multiple パラメータを指定し、各インスタンスの詳細を入力するように求められます。あるいは、--in パラメータを使用して、インスタンスの詳細を含む YAML ファイルを指定できます。

インスタンスは、TLS または SSL 証明書を必要とする Elastic Stack の任意の部分です。構成に応じて、Elasticsearch、Logstash、Kibana、および Beats はすべて、証明書と秘密鍵を必要とする場合があります。インスタンスに必要な最小情報は、その名前であり、これは証明書の共通名として使用されます。インスタンス名はホスト名の値または完全な識別名であることができます。インスタンス名が無効なファイルまたはディレクトリ名になる場合、--name コマンドパラメータまたは入力 YAML ファイルの filename フィールドでファイル名を指定する必要があります。

各インスタンスの IP アドレスまたは DNS 名をオプションで提供できます。IP アドレスまたは DNS 名のいずれも指定されていない場合、Elastic Stack 製品はホスト名の検証を実行できず、verification_mode セキュリティ設定を certificate のみに構成する必要があるかもしれません。この設定の詳細については、Security settings を参照してください。

このコマンドによって生成されるすべての証明書は、--self-signed パラメータが指定されていない限り、CA によって署名されます。--ca または --ca-cert および --ca-key パラメータを使用して独自の CA を提供する必要がありますが、--self-signed が指定されている場合は除きます。CA の生成に関する詳細については、CA mode of this command を参照してください。自己署名証明書を生成するには、--self-signed パラメータを使用します。

デフォルトでは、cert モードは、インスタンス証明書、インスタンス秘密鍵、および CA 証明書を保持する単一の PKCS#12 出力ファイルを生成します。--pem パラメータを指定すると、コマンドは PEM 形式の証明書と鍵を生成し、それらを zip ファイルにパッケージします。--multiple または --in パラメータを指定すると、コマンドは生成された証明書と鍵を含む zip ファイルを生成します。

CSR mode

csr モードは、信頼できる証明書機関に送信して署名された証明書を取得するための証明書署名要求 (CSR) を生成します。署名された証明書は、Elasticsearch のセキュリティ機能で機能するために PEM または PKCS#12 形式でなければなりません。

デフォルトでは、コマンドは単一のインスタンス用の単一の CSR を生成します。

複数のインスタンス用の CSR を生成するには、--multiple パラメータを指定し、各インスタンスの詳細を入力するように求められます。あるいは、--in パラメータを使用して、インスタンスの詳細を含む YAML ファイルを指定できます。

csr モードは、各インスタンスの CSR と秘密鍵を含む単一の zip ファイルを生成します。各 CSR は、PKCS#10 CSR の標準 PEM エンコーディングとして提供されます。各鍵は、RSA 秘密鍵の PEM エンコーディングとして提供されます。

HTTP mode

http モードは、Elasticsearch の HTTP (REST) インターフェースで使用するための証明書を生成するプロセスを案内します。ニーズに合ったファイルのセットを生成するために、いくつかの質問をします。たとえば、選択に応じて、CA、証明書署名要求 (CSR)、または Elasticsearch および Kibana で使用するための証明書と鍵を含む zip ファイルを生成することがあります。zip ファイル内の各フォルダーには、ファイルの使用方法を説明する README が含まれています。

Parameters

  • ca
  • 新しいローカル証明書機関 (CA) を生成することを指定します。このパラメータは、csrcert または http パラメータと一緒に使用することはできません。
  • cert
  • 新しい X.509 証明書と鍵を生成することを指定します。このパラメータは、csrca または http パラメータと一緒に使用することはできません。
  • csr
  • 証明書署名要求を生成することを指定します。このパラメータは、cacert または http パラメータと一緒に使用することはできません。
  • http
  • Elasticsearch HTTP インターフェース用の新しい証明書または証明書要求を生成します。このパラメータは、cacert または csr パラメータと一緒に使用することはできません。
  • --ca <file_path>
  • 既存の CA 鍵ペアのパスを指定します (PKCS#12 形式)。このパラメータは、cert パラメータにのみ適用されます。
  • --ca-cert <file_path>
  • 既存の CA 証明書のパスを指定します (PEM 形式)。--ca-key パラメータも指定する必要があります。--ca-cert パラメータは、cert パラメータにのみ適用されます。
  • --ca-dn <name>
  • 生成された CA 証明書に使用される識別名 (DN) を定義します。デフォルト値は CN=Elastic Certificate Tool Autogenerated CA です。このパラメータは、csr または http パラメータと一緒に使用することはできません。
  • --ca-key <file_path>
  • 既存の CA 秘密鍵のパスを指定します (PEM 形式)。--ca-cert パラメータも指定する必要があります。--ca-key パラメータは、cert パラメータにのみ適用されます。
  • --ca-pass <password>
  • 既存の CA 秘密鍵または生成された CA 秘密鍵のパスワードを指定します。このパラメータは、cert パラメータにのみ適用されます。
  • --days <n>
  • 生成された証明書が有効な日数を表す整数値を指定します。デフォルト値は 1095 です。このパラメータは、csr または http パラメータと一緒に使用することはできません。
  • --dns <domain_name>
  • DNS 名のカンマ区切りリストを指定します。このパラメータは、ca または http パラメータと一緒に使用することはできません。
  • -E <KeyValuePair>
  • 設定を構成します。
  • -h, --help
  • すべてのコマンドパラメータを返します。
  • --in <input_file>
  • サイレントモードで実行するために使用されるファイルを指定します。入力ファイルは YAML ファイルでなければなりません。このパラメータは、ca または http パラメータと一緒に使用することはできません。
  • --ip <IP_addresses>
  • IP アドレスのカンマ区切りリストを指定します。このパラメータは、ca または http パラメータと一緒に使用することはできません。
  • --keysize <bits>
  • 生成された RSA 鍵に使用されるビット数を定義します。デフォルト値は 2048 です。このパラメータは、http パラメータと一緒に使用することはできません。
  • --multiple
  • 複数のインスタンス用のファイルを生成することを指定します。このパラメータは、ca または http パラメータと一緒に使用することはできません。
  • --name <file_name>
  • 生成された証明書の名前を指定します。このパラメータは、ca または http パラメータと一緒に使用することはできません。
  • --out <file_path>
  • 出力ファイルのパスを指定します。このパラメータは、http パラメータと一緒に使用することはできません。
  • --pass <password>
  • 生成された秘密鍵のパスワードを指定します。このパラメータは、http パラメータと一緒に使用することはできません。
    PKCS#12 形式で保存された鍵は常にパスワード保護されますが、このパスワードは空白にすることができます。プロンプトなしで空白のパスワードを指定したい場合は、コマンドラインで --pass "" (= なし) を使用してください。
    PEM 形式で保存された鍵は、--pass パラメータが指定されている場合にのみパスワード保護されます。--pass パラメータに引数を提供しない場合、パスワードの入力を求められます。暗号化された PEM ファイルは空白のパスワードをサポートしていません (PEM 鍵をパスワード保護したくない場合は、--pass を指定しないでください)。
  • --pem
  • PKCS#12 の代わりに PEM 形式で証明書と鍵を生成します。このパラメータは、csr または http パラメータと一緒に使用することはできません。
  • --self-signed
  • 自己署名証明書を生成します。このパラメータは、cert パラメータにのみ適用されます。
    このオプションは、クラスターでの TLS の設定 には推奨されません。実際、自己署名証明書は、CA が確実に必要ないことが確信でき、信頼が証明書自体に直接与えられる場合にのみ使用すべきです。
  • -s, --silent
  • 最小限の出力を表示します。
  • -v, --verbose
  • 詳細な出力を表示します。

Examples

次のコマンドは、PKCS#12 形式で CA 証明書と秘密鍵を生成します:

  1. bin/elasticsearch-certutil ca

出力ファイル名とパスワードの入力を求められます。あるいは、--out および --pass パラメータを指定できます。

その後、新しい CA を使用して X.509 証明書と秘密鍵を生成できます。たとえば:

  1. bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12

CA パスワードと出力ファイル名およびパスワードの入力を求められます。あるいは、--ca-pass--out、および --pass パラメータを指定できます。

デフォルトでは、このコマンドは elastic-certificates.p12 というファイルを生成し、これは構成したい各 Elastic 製品の関連する構成ディレクトリにコピーできます。詳細については、Encrypt internode communications with TLS を参照してください。

Using elasticsearch-certutil in Silent Mode

サイレントモードを使用するには、インスタンスに関する情報を含む YAML ファイルを作成する必要があります。次の形式に一致する必要があります:

Yaml

  1. instances:
  2. - name: "node1"
  3. ip:
  4. - "192.0.2.1"
  5. dns:
  6. - "node1.mydomain.com"
  7. - name: "node2"
  8. ip:
  9. - "192.0.2.2"
  10. - "198.51.100.1"
  11. - name: "node3"
  12. - name: "node4"
  13. dns:
  14. - "node4.mydomain.com"
  15. - "node4.internal"
  16. - name: "CN=node5,OU=IT,DC=mydomain,DC=com"
  17. filename: "node5"
インスタンスの名前。これは単純な文字列値であるか、識別名 (DN) であることができます。これは唯一の必須フィールドです。
このインスタンスの IP アドレスを表す文字列のオプションの配列。IPv4 および IPv6 の値が許可されています。値は、サブジェクト代替名として追加されます。
このインスタンスの DNS 名を表す文字列のオプションの配列。値は、サブジェクト代替名として追加されます。
このインスタンスに使用するファイル名。この名前は、出力内のインスタンスのファイルを含むディレクトリの名前として使用されます。また、ディレクトリ内のファイルの名前にも使用されます。このファイル名には拡張子を付けないでください。注意: インスタンスに提供された name が有効なファイル名を表さない場合、filename フィールドが存在する必要があります。

YAML ファイルが準備できたら、elasticsearch-certutil コマンドを使用して証明書または証明書署名要求を生成できます。--in パラメータを使用してファイルの場所を指定してください。たとえば:

  1. bin/elasticsearch-certutil cert --silent --in instances.yml --out test1.zip --pass testpassword --ca elastic-stack-ca.p12

このコマンドは、圧縮された test1.zip ファイルを生成します。出力ファイルを解凍すると、instances.yml ファイルにリストされた各インスタンスのディレクトリがあります。各インスタンスディレクトリには、インスタンス証明書、インスタンス秘密鍵、および CA 証明書を含む単一の PKCS#12 (.p12) ファイルが含まれています。

YAML ファイルを使用して証明書署名要求を生成することもできます。たとえば:

  1. bin/elasticsearch-certutil csr --silent --in instances.yml --out test2.zip --pass testpassword

このコマンドは、各インスタンスのディレクトリを含む圧縮ファイルを生成します。各インスタンスディレクトリには、証明書署名要求 (*.csr ファイル) と秘密鍵 (*.key ファイル) が含まれています。