若要使用加密連線傳輸複寫期間所需的二進位日誌,來源和複寫副本伺服器都必須支援加密網路連線。如果任一伺服器不支援加密連線 (因為它未針對加密連線編譯或設定),則無法透過加密連線進行複寫。
為複寫設定加密連線與為用戶端/伺服器連線設定加密連線類似。您必須取得 (或建立) 適用於來源伺服器的安全憑證,以及每個複寫副本上類似的憑證 (來自相同的憑證授權單位)。您也必須取得適用的金鑰檔案。
如需設定伺服器和用戶端以進行加密連線的詳細資訊,請參閱第 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 版本。SOURCE_TLS_CIPHERSUITES
選項指定一個或多個密碼套件的冒號分隔清單,如果複寫連線使用 TLSv1.3,則複本允許使用這些密碼套件。如果此選項在 TLSv1.3 被使用時設定為NULL
(如果您不設定此選項,則預設值為 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;