レプリケーション中に必要なバイナリログの転送に暗号化された接続を使用するには、ソースサーバーと複製サーバーの両方が暗号化されたネットワーク接続をサポートしている必要があります。 いずれかのサーバーが暗号化された接続をサポートしていない場合 (それらに対してコンパイルまたは構成されていないため)、暗号化された接続を介したレプリケーションはできません。
レプリケーション用の暗号化された接続の設定は、クライアント/サーバー接続の場合と同様です。 ソースで使用できる適切なセキュリティ証明書と、各レプリカで (同じ認証局から) 同様の証明書を取得 (または作成) する必要があります。 適切なキーファイルも取得する必要があります。
暗号化された接続のためのサーバーおよびクライアントの設定の詳細は、セクション6.3.1「暗号化接続を使用するための MySQL の構成」 を参照してください。
ソースで暗号化された接続を有効にするには、適切な証明書およびキーファイルを作成または取得し、必要に応じてファイル名を変更して、ソース my.cnf
ファイルの[mysqld]
セクション内のソース構成に次の構成パラメータを追加する必要があります:
[mysqld]
ssl_ca=cacert.pem
ssl_cert=server-cert.pem
ssl_key=server-key.pem
ファイルへのパスは相対パスまたは絶対パスである可能性があります。この目的には、常に完全なパスを使用することをお薦めします。
構成パラメータは次のとおりです:
ssl_ca
: 認証局 (CA) 証明書ファイルのパス名。(ssl_capath
は類似していますが、CA 証明書ファイルのディレクトリのパス名を指定します。)ssl_cert
: サーバー公開キー証明書ファイルのパス名。 この証明書はクライアントに送信し、クライアントが持っている CA 証明書に対して認証できます。ssl_key
: サーバー秘密キーファイルのパス名。
レプリカで暗号化された接続を有効にするには、(MySQL 8.0.23 の) CHANGE REPLICATION SOURCE TO
ステートメントまたは (MySQL 8.0.23 の前の) CHANGE MASTER TO
ステートメントを使用します。 レプリカ my.cnf
ファイルの[client]
セクションで、暗号化された接続に必要なレプリカ証明書および SSL 秘密キーファイルに名前を付けることも、CHANGE REPLICATION SOURCE TO
| CHANGE MASTER TO
ステートメントを使用してその情報を明示的に指定することもできます。
-
オプションファイルを使用してレプリカ証明書およびキーファイルに名前を付けるには、レプリカ
my.cnf
ファイルの[client]
セクションに次の行を追加し、必要に応じてファイル名を変更します:[client] ssl-ca=cacert.pem ssl-cert=client-cert.pem ssl-key=client-key.pem
-
レプリカがソースに接続しないようにするには、
--skip-slave-start
オプションを使用してレプリカサーバーを再起動します。CHANGE REPLICATION SOURCE TO
|CHANGE MASTER TO
を使用してソース構成を指定し、暗号化を使用して接続するためのMASTER_SSL
オプションを追加します:mysql> CHANGE MASTER TO -> MASTER_HOST='source_hostname', -> MASTER_USER='repl', -> MASTER_PASSWORD='password', -> MASTER_SSL=1; Or from MySQL 8.0.23: mysql> CHANGE REPLICATION SOURCE TO -> SOURCE_HOST='source_hostname', -> SOURCE_USER='repl', -> SOURCE_PASSWORD='password', -> SOURCE_SSL=1;
レプリケーション接続用の
SOURCE_SSL=1
|MASTER_SSL=1
を設定し、それ以上のSOURCE_SSL_
|xxx
MASTER_SSL_
オプションを設定しないことは、暗号化接続のコマンドオプション で説明されているように、クライアント用のxxx
--ssl-mode=REQUIRED
の設定に対応します。SOURCE_SSL=1
|MASTER_SSL=1
では、暗号化された接続を確立できる場合にのみ接続が成功します。 レプリケーション接続は暗号化されていない接続にフォールバックしないため、レプリケーションの--ssl-mode=PREFERRED
設定に対応する設定はありません。SOURCE_SSL=0
|MASTER_SSL=0
が設定されている場合、これは--ssl-mode=DISABLED
に対応します。 -
CHANGE REPLICATION SOURCE TO
|CHANGE MASTER TO
ステートメントを使用してレプリカ証明書および SSL 秘密キーファイルに名前を付けるには、レプリカmy.cnf
ファイルで指定していない場合は、適切なSOURCE_SSL_
|xxx
MASTER_SSL_
オプションを追加します:xxx
-> MASTER_SSL_CA = 'ca_file_name', -> MASTER_SSL_CAPATH = 'ca_directory_name', -> MASTER_SSL_CERT = 'cert_file_name', -> MASTER_SSL_KEY = 'key_file_name',
これらのオプションは、暗号化接続のコマンドオプション で説明されている同じ名前の
--ssl-
オプションに対応しています。 これらのオプションを有効にするには、xxx
MASTER_SSL=1
も設定する必要があります。 レプリケーション接続の場合、MASTER_SSL_CA
またはMASTER_SSL_CAPATH
のいずれかの値を指定するか、レプリカmy.cnf
ファイルでこれらのオプションを指定すると、--ssl-mode=VERIFY_CA
の設定に対応します。 接続試行は、指定された情報を使用して有効な一致する認証局 (CA) 証明書が見つかった場合にのみ成功します。 -
ホスト名アイデンティティ検証をアクティブ化するには、
MASTER_SSL_VERIFY_SERVER_CERT
オプションを追加します:-> MASTER_SSL_VERIFY_SERVER_CERT=1,
このオプションは、MySQL 5.7 から非推奨になり、MySQL 8.0 で削除された
--ssl-verify-server-cert
オプションに対応します。 レプリケーション接続の場合、暗号化接続のコマンドオプション で説明されているように、MASTER_SSL_VERIFY_SERVER_CERT=1
の指定は--ssl-mode=VERIFY_IDENTITY
の設定に対応します。 このオプションを有効にするには、MASTER_SSL=1
も設定する必要があります。 ホスト名アイデンティティ検証は、自己署名証明書では機能しません。 -
証明書失効リスト (CRL) チェックをアクティブ化するには、
MASTER_SSL_CRL
またはMASTER_SSL_CRLPATH
オプションを追加します:-> MASTER_SSL_CRL = 'crl_file_name', -> MASTER_SSL_CRLPATH = 'crl_directory_name',
これらのオプションは、暗号化接続のコマンドオプション で説明されている同じ名前の
--ssl-
オプションに対応しています。 指定しない場合、CRL チェックは行われません。xxx
-
レプリケーション接続のレプリカで許可される暗号、暗号スイートおよび暗号化プロトコルのリストを指定するには、
MASTER_SSL_CIPHER
、MASTER_TLS_VERSION
およびMASTER_TLS_CIPHERSUITES
オプションを使用します:-> MASTER_SSL_CIPHER = 'cipher_list', -> MASTER_TLS_VERSION = 'protocol_list', -> MASTER_TLS_CIPHERSUITES = 'ciphersuite_list',
MASTER_SSL_CIPHER
オプションは、レプリケーション接続のレプリカで許可される暗号のコロン区切りリストを指定します。MASTER_TLS_VERSION
オプションは、レプリケーション接続のレプリカで許可される TLS 暗号化プロトコルのコンマ区切りリストを、tls_version
サーバーシステム変数と同様の形式で指定します。 接続手順では、ソースとレプリカの両方で許可されている最上位 TLS バージョンの使用をネゴシエーションします。 接続できるようにするには、レプリカにソースと共通の TLS バージョンが少なくとも 1 つ必要です。MASTER_TLS_CIPHERSUITES
オプション (MySQL 8.0.19 から使用可能) は、TLSv1.3 が接続に使用されている場合にレプリケーション接続のレプリカで許可される暗号スイートのコロン区切りリストを指定します。 TLSv1.3 の使用時にこのオプションがNULL
に設定されている場合 (オプションを設定しない場合のデフォルト)、デフォルトで有効になっている暗号スイートが許可されます。 オプションを空の文字列に設定した場合、暗号スイートは許可されないため、TLSv1.3 は使用されません。
これらのリストで指定できるプロトコル、暗号および暗号スイートは、MySQL のコンパイルに使用される SSL ライブラリによって異なります。 フォーマット、許可される値、およびオプションを指定しない場合のデフォルトの詳細は、セクション6.3.2「暗号化された接続 TLS プロトコルおよび暗号」 を参照してください。
注記8.0.18 を介した MySQL 8.0.16 では、MySQL は TLSv1.3 をサポートしていますが、
MASTER_TLS_CIPHERSUITES
オプションは使用できません。 これらのリリースでは、ソースとレプリカ間の接続に TLSv1.3 を使用する場合、デフォルトで有効になっている少なくとも 1 つの TLSv1.3 暗号スイートの使用をソースで許可する必要があります。 MySQL 8.0.19 から、オプションを使用して、デフォルト以外の暗号スイートのみを含め、任意の暗号スイートの選択を指定できます。 -
ソース情報が更新されたら、レプリカでレプリケーションプロセスを開始します:
mysql> START SLAVE; Or from MySQL 8.0.22: mysql> START REPLICA;
SHOW REPLICA | SLAVE STATUS
ステートメントを使用して、暗号化された接続が正常に確立されたことを確認できます。 -
レプリカで暗号化された接続を要求しても、ソースがレプリカからの暗号化された接続を必要とすることは保証されません。 ソースが暗号化された接続を使用して接続するレプリカのみを受け入れるようにするには、
REQUIRE SSL
オプションを使用してソースにレプリケーションユーザーアカウントを作成し、そのユーザーにREPLICATION SLAVE
権限を付与します。 例:mysql> CREATE USER 'repl'@'%.example.com' IDENTIFIED BY 'password' -> REQUIRE SSL; mysql> GRANT REPLICATION SLAVE ON *.* -> TO 'repl'@'%.example.com';
ソースに既存のレプリケーションユーザーアカウントがある場合は、次のステートメントを使用して
REQUIRE SSL
を追加できます:mysql> ALTER USER 'repl'@'%.example.com' REQUIRE SSL;