証明書を生成する

ノート:

クライアントとサーバーの間で TLS を有効にするには、 auto-tlsを設定するだけです。

このドキュメントでは、 opensslを使用して自己署名証明書を生成する例を示します。また、要求に応じて要件を満たす証明書と鍵を生成することもできます。

インスタンス クラスタのトポロジが次のようになっているとします。

名前ホスト IPサービス
ノード1172.16.10.11PD1、TiDB1
ノード2172.16.10.12PD2
ノード3172.16.10.13PD3
ノード4172.16.10.14TiKV1
ノード5172.16.10.15TiKV2
ノード6172.16.10.16TiKV3

OpenSSL をインストールする

  • Debian または Ubuntu OS の場合:

    apt install openssl
  • RedHat または CentOS OS の場合:

    yum install openssl

インストールについては、OpenSSL の公式ドキュメントをダウンロードを参照することもできます。

CA 証明書を生成する

認証局 (CA) は、デジタル証明書を発行する信頼できるエンティティです。実際には、管理者に連絡して証明書を発行するか、信頼できる CA を使用してください。 CA は、複数の証明書ペアを管理します。ここでは、次のように証明書の元のペアを生成するだけです。

  1. ルート キーを生成します。

    openssl genrsa -out root.key 4096
  2. ルート証明書を生成します。

    openssl req -new -x509 -days 1000 -key root.key -out root.crt
  3. ルート証明書を検証します。

    openssl x509 -text -in root.crt -noout

個々のコンポーネントの証明書を発行する

このセクションでは、個々のコンポーネントの証明書を発行する方法について説明します。

クラスターで使用される可能性のある証明書

  • tidb-server 証明書: TiDB が他のコンポーネントやクライアントに対して TiDB を認証するために使用します。
  • tikv-server certificate: TiKV が他のコンポーネントやクライアントに対して TiKV を認証するために使用します
  • pd-server 証明書: PD が他のコンポーネントとクライアントの PD を認証するために使用
  • クライアント証明書: PD、TiKV、および TiDB からクライアントを認証するために使用されます ( pd-ctltikv-ctlなど)。

TiKV インスタンスに証明書を発行する

TiKV インスタンスに証明書を発行するには、次の手順を実行します。

  1. 証明書に対応する秘密鍵を生成します。

    openssl genrsa -out tikv.key 2048
  2. OpenSSL 構成テンプレート ファイルのコピーを作成します (複数の場所にある可能性があるため、テンプレート ファイルの実際の場所を参照してください)。

    cp /usr/lib/ssl/openssl.cnf .

    実際の場所がわからない場合は、ルート ディレクトリで探します。

    find / -name openssl.cnf
  3. openssl.cnfを編集し、 [ req ]フィールドの下にreq_extensions = v3_reqを追加し、 [ v3_req ]フィールドの下にsubjectAltName = @alt_namesを追加します。最後に、新しいフィールドを作成し、SAN の情報を編集します。

    [ alt_names ] IP.1 = 127.0.0.1 IP.2 = 172.16.10.14 IP.3 = 172.16.10.15 IP.4 = 172.16.10.16
  4. openssl.cnfのファイルを保存し、証明書要求ファイルを生成します (この手順では、証明書に Common Name を割り当てることもできます。これは、サーバーがクライアントの ID を検証できるようにするために使用されます。各コンポーネントは、による検証を有効にしません。デフォルトであり、構成ファイルで有効にすることができます):

    openssl req -new -key tikv.key -out tikv.csr -config openssl.cnf
  5. 証明書を発行して生成します。

    openssl x509 -req -days 365 -CA root.crt -CAkey root.key -CAcreateserial -in tikv.csr -out tikv.crt -extensions v3_req -extfile openssl.cnf
  6. 証明書に SAN フィールドが含まれていることを確認します (オプション)。

    openssl x509 -text -in tikv.crt -noout
  7. 現在のディレクトリに次のファイルが存在することを確認します。

    root.crt tikv.crt tikv.key

他の TiDB コンポーネントの証明書を発行するプロセスは似ているため、このドキュメントでは繰り返しません。

クライアントの証明書を発行する

クライアントに証明書を発行するには、次の手順を実行します。

  1. 証明書に対応する秘密鍵を生成します。

    openssl genrsa -out client.key 2048
  2. 証明書要求ファイルを生成します (この手順では、証明書に Common Name を割り当てることもできます。これは、サーバーがクライアントの ID を検証できるようにするために使用されます。各コンポーネントは、既定では検証を有効にしておらず、有効にすることができます。それは構成ファイルにあります):

    openssl req -new -key client.key -out client.csr
  3. 証明書を発行して生成します。

    openssl x509 -req -days 365 -CA root.crt -CAkey root.key -CAcreateserial -in client.csr -out client.crt