3.6.2 SSL 連線階段重用

自 MySQL 8.0.29 起,伺服器預設支援 SSL 連線階段重用,但僅限於使用者啟用此功能後的可設定逾時期間內。所有 MySQL 客戶端應用程式都支援連線階段重用。有關伺服器端和客戶端操作的說明,請參閱重用 SSL 連線階段

本節說明 C 應用程式如何使用 C API 功能來啟用加密連線的連線階段重用。

SSL 連線階段重用運作方式如下

  1. 在進行中的作用中 SSL 連線中,您的應用程式可以呼叫 mysql_get_ssl_session_data() 來請求目前的 SSL 連線階段資料。此呼叫會傳回記憶體中物件的指標,目前該物件是連線階段的 PEM 序列化 ASCII 字串。

  2. 然後,您的應用程式會將指標傳遞給 mysql_options(),並使用 MYSQL_OPT_SSL_SESSION_DATA 選項,以便在正在建立的新連線中使用(在連線前階段)。

  3. 在執行階段,應用程式會像平常一樣連線。此時,先前的連線階段有可能被重用。您的應用程式可以透過呼叫 mysql_get_ssl_session_reused() 來判斷新連線是否正在重用連線階段。如果存在連線階段並且已重用,則此呼叫會傳回 TRUE

  4. 在您的應用程式不再需要指標後,務必呼叫 mysql_free_ssl_session_data() 將其釋放。

MySQL 使用隨機的 TLS 內容相關內容 ID,這也適用於連線階段重用。使用 TLS 1.3 時,當發生先前描述的呼叫順序時,OpenSSL 會使用預先共用的金鑰進行連線階段重用。相反地,使用 TLS 1.2 時,OpenSSL 會使用連線階段票證。