為MySQL客戶端啟用TLS
TLS 也被稱為 SSL (安全套接字層)。它指的是傳輸層安全協議。
當MySQL客戶端和伺服器之間存在未加密連線時,擁有網路訪問許可權的人員可以監視所有流量並檢查客戶端和伺服器之間傳送或接收的資料。當用戶希望透過網路以安全的方式移動資訊時,未加密的連線是不可接受的。
為了使任何型別的資料不可讀,必須使用加密。加密演算法通常包括有助於抵抗許多已知攻擊的安全元素,其中一些包括更改加密訊息的順序或兩次重放資料。MySQL支援客戶端和伺服器之間發生的加密連線,它們都使用TLS協議。但MySQL不使用SSL協議進行加密連線,因為其加密強度較弱。
TLS使用加密演算法來確保透過公共網路接收的資料是可信賴的資料。它有多種方法可以檢測資料更改、丟失或重放。TLS還使用帶有身份驗證演算法,藉助X.509標準。
啟用TLS的步驟
MySQL對每個連線執行加密。給定使用者的加密可以是可選的,也可以是強制性的。這使使用者可以根據應用程式的要求選擇加密或未加密的連線。
讓我們瞭解如何為MySQL客戶端啟用TLS
- 啟動伺服器時,必須在配置檔案中指定ssl-cert和ssl-key引數。
- 證書或金鑰使用OpenSSL進行簽名和生成。
- 此金鑰也可以使用MySQL中的mysql_ssl_rsa_setup工具生成。
mysql_ssl_rsa_setup --datadir=./certs
- 如果引數正確,則啟動時將輸出一個啟用的安全連線。
- 證書、金鑰和CA被重新載入 - 在伺服器例項上執行ALTER INSTANCE RELOAD TLS語句。這確保伺服器例項不需要重新載入。
- 新載入的證書、金鑰和CA將在成功執行建立的連線後生效。
- MySQL客戶端配置為使用加密連線 - 預設情況下嘗試設定加密連線。如果伺服器不支援加密連線,則會自動返回未加密連線。
- 可以使用--ssl-mode引數更改客戶端的連線行為。
--ssl-mode=REQUIRED- Tells that en encrypted connection is needed.
需要啟用身份驗證:如果未指定ssl-ca引數,則客戶端或伺服器預設不執行身份驗證。
- 必須在伺服器中指定ssl-cert和ssl-key引數。
- 在MySQL客戶端中指定--ssl-ca引數。
- 在MySQL客戶端中將--ssl-mode指定為VERIFY_CA。
- 伺服器中配置的證書由客戶端--ssl-ca引數指定的CA簽名。
- 如果不是,則身份驗證失敗。
從伺服器驗證MySQL客戶端
- 在伺服器中指定ssl-cert、ssl-key和ssl-ca引數。
- 在客戶端中指定--ssl-cert和--ssl-key引數。
- 伺服器配置的證書和客戶端配置的證書由伺服器指定的ssl-ca簽名。
- 伺服器到客戶端的身份驗證是可選的。如果客戶端在TLS握手期間不顯示其身份驗證證書,則仍然建立TLS連線。
- 檢查當前連線是否使用任何加密。
廣告