文件首頁
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 參考手冊  /  ...  /  使用安全套接層 (SSL) 保護群組通訊連線

20.6.2 使用安全套接層 (SSL) 保護群組通訊連線

安全套接字可用於群組成員之間的群組通訊連線。

群組複寫系統變數 group_replication_ssl_mode 用於啟用 SSL 以進行群組通訊連線,並指定連線的安全性模式。預設設定表示不使用 SSL。此選項具有以下可能的值

表格 20.1 group_replication_ssl_mode 設定值

描述

DISABLED

建立未加密的連線 (預設)。

REQUIRED

如果伺服器支援安全連線,則建立安全連線。

VERIFY_CA

REQUIRED 相同,但另外根據設定的憑證授權單位 (CA) 憑證驗證伺服器 TLS 憑證。

VERIFY_IDENTITY

VERIFY_CA 相同,但另外驗證伺服器憑證是否與嘗試連線的主機相符。


如果使用 SSL,則設定安全連線的方式取決於群組通訊是使用 XCom 還是 MySQL 通訊堆疊。

使用 XCom 通訊堆疊時 (group_replication_communication_stack=XCOM):  群組複寫的群組通訊連線的其餘設定取自伺服器的 SSL 設定。如需設定伺服器 SSL 選項的詳細資訊,請參閱加密連線的命令選項。套用至群組複寫的群組通訊連線的伺服器 SSL 選項如下

表格 20.2 SSL 選項

伺服器設定 描述
ssl_key PEM 格式的 SSL 私密金鑰檔案路徑名稱。在用戶端,這是用戶端私密金鑰。在伺服器端,這是伺服器私密金鑰。
ssl_cert PEM 格式的 SSL 公開金鑰憑證檔案路徑名稱。在用戶端,這是用戶端公開金鑰憑證。在伺服器端,這是伺服器公開金鑰憑證。
ssl_ca PEM 格式的憑證授權單位 (CA) 憑證檔案路徑名稱。
ssl_capath 包含 PEM 格式的信任 SSL 憑證授權單位 (CA) 憑證檔案的目錄路徑名稱。
ssl_crl 包含 PEM 格式的憑證撤銷清單的檔案路徑名稱。
ssl_crlpath 包含 PEM 格式的憑證撤銷清單檔案的目錄路徑名稱。
ssl_cipher 用於加密連線的允許密碼清單。
tls_version 伺服器允許用於加密連線的 TLS 通訊協定清單。
tls_ciphersuites 伺服器允許用於加密連線的 TLSv1.3 密碼套件。

重要事項
  • MySQL 8.0 中已移除對 TLSv1 和 TLSv1.1 連線通訊協定的支援。如果使用已淘汰的 TLS 通訊協定版本,包括作為用戶端的群組複寫伺服器執行個體在內的 MySQL 用戶端不會傳回警告給使用者。如需更多資訊,請參閱移除對 TLSv1 和 TLSv1.1 通訊協定的支援

  • MySQL 8.4 支援 TLSv1.3 通訊協定,前提是 MySQL 伺服器是使用 OpenSSL 1.1.1 編譯的。伺服器會在啟動時檢查 OpenSSL 的版本;如果版本低於 1.1.1,則會從所有與 TLS 版本相關的伺服器系統變數的預設值中移除 TLSv1.3,包括 group_replication_recovery_tls_version

  • MySQL 8.4 群組複寫支援 TLSv1.3。

  • 使用 group_replication_recovery_tls_versiongroup_replication_recovery_tls_ciphersuites 來設定對任何密碼套件選擇的用戶端支援,如果需要,包括僅非預設密碼套件。

  • tls_version 系統變數中指定的 TLS 通訊協定清單中,請確定指定的版本是連續的 (例如,TLSv1.2,TLSv1.3)。如果通訊協定清單中有任何間隔 (例如,如果您指定 TLSv1,TLSv1.2,省略 TLS 1.1),則群組複寫可能無法建立群組通訊連線。

在一個複寫群組中,OpenSSL 會協商使用所有成員都支援的最高 TLS 通訊協定。一個加入的成員若設定為僅使用 TLSv1.3 (tls_version=TLSv1.3),則無法加入任何現有成員不支援 TLSv1.3 的複寫群組,因為在這種情況下,群組成員會使用較低的 TLS 通訊協定版本。若要將成員加入群組,您必須設定加入的成員也允許使用現有群組成員支援的較低 TLS 通訊協定版本。反之,如果一個加入的成員不支援 TLSv1.3,但現有的群組成員都支援且彼此連線使用該版本,則如果現有群組成員已允許使用適當的較低 TLS 通訊協定版本,或者如果您將其設定為允許,則該成員可以加入。在這種情況下,OpenSSL 會對每個成員到加入成員的連線使用較低的 TLS 通訊協定版本。每個成員與其他現有成員的連線會繼續使用雙方成員都支援的最高可用通訊協定。

您可以在執行時變更 tls_version 系統變數,以修改伺服器允許的 TLS 通訊協定版本清單。對於群組複寫,ALTER INSTANCE RELOAD TLS 陳述式會根據定義內容的系統變數的目前值重新設定伺服器的 TLS 內容,但不會在群組複寫執行時變更群組複寫的群組通訊連線的 TLS 內容。若要將重新設定套用到這些連線,您必須執行 STOP GROUP_REPLICATION,然後執行 START GROUP_REPLICATION,以在您變更 tls_version 系統變數的成員上重新啟動群組複寫。同樣地,如果您想要讓群組的所有成員變更為使用更高或更低的 TLS 通訊協定版本,您必須在變更允許的 TLS 通訊協定版本清單後,對成員執行群組複寫的滾動重新啟動,以便在滾動重新啟動完成時,OpenSSL 可以協商使用更高的 TLS 通訊協定版本。如需在執行時變更允許的 TLS 通訊協定版本清單的指示,請參閱第 8.3.2 節,「加密連線 TLS 通訊協定和密碼」「加密連線的伺服器端執行時間設定和監控」

以下範例顯示 my.cnf 檔案中的一個區段,該區段設定伺服器上的 SSL,並啟動群組複寫群組通訊連線的 SSL

[mysqld]
ssl_ca = "cacert.pem"
ssl_capath = "/.../ca_directory"
ssl_cert = "server-cert.pem"
ssl_cipher = "DHE-RSA-AEs256-SHA"
ssl_crl = "crl-server-revoked.crl"
ssl_crlpath = "/.../crl_directory"
ssl_key = "server-key.pem"
group_replication_ssl_mode= REQUIRED
重要事項

ALTER INSTANCE RELOAD TLS 陳述式會根據定義內容的系統變數的目前值重新設定伺服器的 TLS 內容,但不會在群組複寫執行時變更群組複寫的群組通訊連線的 TLS 內容。若要將重新設定套用到這些連線,您必須執行 STOP GROUP_REPLICATION,然後執行 START GROUP_REPLICATION 以重新啟動群組複寫。

加入成員和現有成員之間為了分散式復原而建立的連線不包含在上述選項中。這些連線會使用群組複寫的專用分散式復原 SSL 選項,這些選項在第 20.6.3.2 節,「用於分散式復原的安全通訊端層 (SSL) 連線」中說明。

當使用 MySQL 通訊堆疊 (group_replication_communication_stack=MYSQL) 時:群組分散式復原的安全設定會套用到群組成員之間的正常通訊。請參閱第 20.6.3 節,「保護分散式復原連線」,瞭解如何設定安全設定。