TiDB データ移行用の自己署名証明書を生成する
このドキュメントでは、 openssl
使用して TiDB データ移行 (DM) 用の自己署名証明書を生成する例を示します。また、必要に応じて要件を満たす証明書とキーを生成することもできます。
インスタンス クラスターのトポロジが次のとおりであると仮定します。
名前 | ホストIP | サービス |
---|---|---|
ノード1 | 172.16.10.11 | DMマスター1 |
ノード2 | 172.16.10.12 | DMマスター2 |
ノード3 | 172.16.10.13 | DMマスター3 |
ノード4 | 172.16.10.14 | DMワーカー1 |
ノード5 | 172.16.10.15 | DMワーカー2 |
ノード6 | 172.16.10.16 | DMワーカー3 |
OpenSSLをインストールする
Debian または Ubuntu OS の場合:
apt install opensslRedHat または CentOS OS の場合:
yum install openssl
インストールについては OpenSSL の公式ドキュメントをダウンロードも参照してください。
CA証明書を生成する
証明機関 (CA) は、デジタル証明書を発行する信頼できる機関です。実際には、管理者に連絡して証明書を発行するか、信頼できる CA を使用します。CA は複数の証明書ペアを管理します。ここでは、次のようにしてオリジナルの証明書ペアを生成するだけです。
CA キーを生成します。
openssl genrsa -out ca-key.pem 4096CA 証明書を生成します。
openssl req -new -x509 -days 1000 -key ca-key.pem -out ca.pemCA 証明書を検証します。
openssl x509 -text -in ca.pem -noout
個々のコンポーネントの証明書を発行する
クラスターで使用される可能性のある証明書
- DM-master が他のコンポーネントに対して DM-master を認証するために使用する
master
証明書。 - DM-worker が他のコンポーネントに対して DM-worker を認証するために使用する
worker
証明書。 - DM マスターと DM ワーカーのクライアントを認証するために dmctl によって使用される
client
証明書。
DMマスターの証明書を発行する
DM マスター インスタンスに証明書を発行するには、次の手順を実行します。
証明書に対応する秘密鍵を生成します。
openssl genrsa -out master-key.pem 2048OpenSSL 構成テンプレート ファイルのコピーを作成します (テンプレート ファイルは複数の場所にある可能性があるため、実際の場所を参照してください)。
cp /usr/lib/ssl/openssl.cnf .実際の場所がわからない場合は、ルート ディレクトリで探します。
find / -name openssl.cnfopenssl.cnf
編集し、[ req ]
フィールドの下にreq_extensions = v3_req
を追加し、[ v3_req ]
フィールドの下にsubjectAltName = @alt_names
を追加します。最後に、新しいフィールドを作成し、上記のクラスター トポロジの説明に従ってSubject Alternative Name
(SAN) の情報を編集します。[ alt_names ] IP.1 = 127.0.0.1 IP.2 = 172.16.10.11 IP.3 = 172.16.10.12 IP.4 = 172.16.10.13現在、SAN の次のチェック項目がサポートされています。
IP
DNS
URI
注記:
0.0.0.0
のような特殊な IP を接続や通信に使用する場合は、alt_names
にも追加する必要があります。openssl.cnf
ファイルを保存し、証明書要求ファイルを生成します。(Common Name (e.g. server FQDN or YOUR name) []:
に入力するときに、証明書にdm
などの共通名 (CN) を割り当てます。これは、サーバーがクライアントの ID を検証するために使用されます。各コンポーネントは、デフォルトでは検証を有効にしません。構成ファイルで有効にすることができます。)openssl req -new -key master-key.pem -out master-cert.pem -config openssl.cnf証明書を発行して生成します。
openssl x509 -req -days 365 -CA ca.pem -CAkey ca-key.pem -CAcreateserial -in master-cert.pem -out master-cert.pem -extensions v3_req -extfile openssl.cnf証明書に SAN フィールドが含まれていることを確認します (オプション)。
openssl x509 -text -in master-cert.pem -noout現在のディレクトリに次のファイルが存在することを確認します。
ca.pem master-cert.pem master-key.pem
注記:
DM ワーカー インスタンスの証明書を発行するプロセスも同様であるため、このドキュメントでは繰り返しません。
クライアントの証明書を発行する (dmctl)
クライアント (dmctl) に証明書を発行するには、次の手順を実行します。
証明書に対応する秘密鍵を生成します。
openssl genrsa -out client-key.pem 2048証明書要求ファイルを生成します (この手順では、証明書に共通名を割り当てることもできます。共通名は、サーバーがクライアントの ID を検証するために使用されます。各コンポーネントはデフォルトで検証を有効にしませんが、構成ファイルで有効にすることができます)。
openssl req -new -key client-key.pem -out client-cert.pem証明書を発行して生成します。
openssl x509 -req -days 365 -CA ca.pem -CAkey ca-key.pem -CAcreateserial -in client-cert.pem -out client-cert.pem