若要使用加密連線傳輸複製期間所需的二進位日誌,來源和副本伺服器都必須支援加密網路連線。如果任一伺服器不支援加密連線 (因為尚未針對加密連線進行編譯或設定),則無法透過加密連線進行複製。
設定複製的加密連線與設定用戶端/伺服器連線類似。您必須取得 (或建立) 適用於來源的安全憑證,以及每個副本上的類似憑證 (來自相同的憑證授權單位)。您也必須取得適當的金鑰檔案。
如需設定伺服器和用戶端加密連線的詳細資訊,請參閱第 8.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
:伺服器私有金鑰檔案的路徑名稱。
若要在複本上啟用加密連線,請使用 CHANGE REPLICATION SOURCE TO
陳述式。
若要使用
CHANGE REPLICATION SOURCE TO
來命名複本的憑證和 SSL 私有金鑰檔案,請加入適當的SOURCE_SSL_
選項,如下所示:xxx
-> SOURCE_SSL_CA = 'ca_file_name', -> SOURCE_SSL_CAPATH = 'ca_directory_name', -> SOURCE_SSL_CERT = 'cert_file_name', -> SOURCE_SSL_KEY = 'key_file_name',
這些選項對應於具有相同名稱的
--ssl-
選項,如 加密連線的命令選項中所述。要使這些選項生效,還必須設定xxx
SOURCE_SSL=1
。對於複寫連線,指定SOURCE_SSL_CA
或SOURCE_SSL_CAPATH
其中一個值,對應於設定--ssl-mode=VERIFY_CA
。只有在使用指定的資訊找到有效的相符憑證授權機構 (CA) 憑證時,連線嘗試才會成功。若要啟用主機名稱身分驗證,請加入
SOURCE_SSL_VERIFY_SERVER_CERT
選項,如下所示:-> SOURCE_SSL_VERIFY_SERVER_CERT=1,
對於複寫連線,指定
SOURCE_SSL_VERIFY_SERVER_CERT=1
對應於設定--ssl-mode=VERIFY_IDENTITY
,如 加密連線的命令選項中所述。要使此選項生效,還必須設定SOURCE_SSL=1
。主機名稱身分驗證不適用於自我簽署的憑證。若要啟用憑證撤銷清單 (CRL) 檢查,請加入
SOURCE_SSL_CRL
或SOURCE_SSL_CRLPATH
選項,如下所示:-> SOURCE_SSL_CRL = 'crl_file_name', -> SOURCE_SSL_CRLPATH = 'crl_directory_name',
這些選項對應於具有相同名稱的
--ssl-
選項,如 加密連線的命令選項中所述。如果未指定這些選項,則不會進行 CRL 檢查。xxx
若要指定複本允許用於複寫連線的密碼、密碼套件和加密協定清單,請使用
SOURCE_SSL_CIPHER
、SOURCE_TLS_VERSION
和SOURCE_TLS_CIPHERSUITES
選項,如下所示:-> SOURCE_SSL_CIPHER = 'cipher_list', -> SOURCE_TLS_VERSION = 'protocol_list', -> SOURCE_TLS_CIPHERSUITES = 'ciphersuite_list',
SOURCE_SSL_CIPHER
選項指定一個以冒號分隔的清單,其中包含複本允許用於複寫連線的一或多個密碼。SOURCE_TLS_VERSION
選項指定一個以逗號分隔的清單,其中包含複本允許用於複寫連線的 TLS 加密協定,格式類似於tls_version
伺服器系統變數。連線程序會協商使用來源和複本都允許的最高 TLS 版本。為了能夠連線,複本必須與來源至少有一個共同的 TLS 版本。如果連線使用 TLSv1.3,
SOURCE_TLS_CIPHERSUITES
選項會指定一個以冒號分隔的清單,其中包含複本允許用於複寫連線的一或多個密碼套件。如果在使用 TLSv1.3 時將此選項設定為NULL
(如果您不設定該選項,則為預設值),則允許使用預設啟用的密碼套件。如果您將選項設定為空字串,則不允許任何密碼套件,因此不會使用 TLSv1.3。
您可以在這些清單中指定的協定、密碼和密碼套件取決於用於編譯 MySQL 的 SSL 程式庫。有關格式、允許的值以及如果您不指定選項時的預設值,請參閱 第 8.3.2 節,「加密連線 TLS 協定和密碼」。
注意您可以使用
SOURCE_TLS_CIPHERSUITES
選項來指定任何密碼套件的選取項目,包括如果您想要的話,只使用非預設的密碼套件。更新來源資訊後,請在複本上啟動複寫程序,如下所示:
mysql> START REPLICA;
您可以使用
SHOW REPLICA 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;