文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  設定複製以使用加密連線

19.3.1 設定複製以使用加密連線

若要使用加密連線傳輸複製期間所需的二進位日誌,來源和副本伺服器都必須支援加密網路連線。如果任一伺服器不支援加密連線 (因為尚未針對加密連線進行編譯或設定),則無法透過加密連線進行複製。

設定複製的加密連線與設定用戶端/伺服器連線類似。您必須取得 (或建立) 適用於來源的安全憑證,以及每個副本上的類似憑證 (來自相同的憑證授權單位)。您也必須取得適當的金鑰檔案。

如需設定伺服器和用戶端加密連線的詳細資訊,請參閱第 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_CASOURCE_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_CRLSOURCE_SSL_CRLPATH 選項,如下所示:

        -> SOURCE_SSL_CRL = 'crl_file_name',
        -> SOURCE_SSL_CRLPATH = 'crl_directory_name',

    這些選項對應於具有相同名稱的 --ssl-xxx 選項,如 加密連線的命令選項中所述。如果未指定這些選項,則不會進行 CRL 檢查。

  • 若要指定複本允許用於複寫連線的密碼、密碼套件和加密協定清單,請使用 SOURCE_SSL_CIPHERSOURCE_TLS_VERSIONSOURCE_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;