文件首頁
MySQL 9.0 C API 開發人員指南
下載本手冊
PDF (美式信紙) - 1.4Mb
PDF (A4) - 1.4Mb


5.4.82 mysql_ssl_set()

bool
mysql_ssl_set(MYSQL *mysql,
              const char *key,
              const char *cert,
              const char *ca,
              const char *capath,
              const char *cipher)

說明

注意

從 MySQL 8.0.35 開始,mysql_ssl_set() 已被棄用,並可能在未來的 MySQL 版本中移除。所有 mysql_ssl_set() 參數都有對應的 mysql_options() TLS 選項。

mysql_ssl_set() 用於建立使用 SSL 的加密連線。mysql 引數必須是有效的連線處理常式。任何未使用的 SSL 引數可以指定為 NULL

如果使用 mysql_ssl_set(),則必須在 mysql_real_connect() 之前呼叫。mysql_ssl_set() 只有在用戶端程式庫中啟用 SSL 支援時才會執行任何動作。

呼叫 mysql_ssl_set() 來取得加密連線是可選的,因為預設情況下,如果伺服器支援加密連線,MySQL 程式會嘗試使用加密連線,如果無法建立加密連線,則會退回到未加密的連線(請參閱 配置 MySQL 以使用加密連線)。mysql_ssl_set() 對於必須指定特定憑證和金鑰檔案、加密密碼等的應用程式可能很有用。

mysql_ssl_set() 指定 SSL 資訊,例如憑證和金鑰檔案,以在可用時建立加密連線,但不會強制要求取得的連線必須加密。若要要求加密連線,請使用 第 3.6.1 節「支援加密連線」 中描述的技術。

為了提高相對於預設加密提供的額外安全性,用戶端可以提供與伺服器使用的 CA 憑證相符的憑證,並啟用主機名稱身分驗證。這樣,伺服器和用戶端會信任相同的 CA 憑證,且用戶端會驗證其連線的主機是否為預期的主機。如需詳細資訊,請參閱 第 3.6.1 節「支援加密連線」

mysql_ssl_set() 是一個方便的函數,基本上等效於以下這組 mysql_options() 呼叫

mysql_options(mysql, MYSQL_OPT_SSL_KEY,    key);
mysql_options(mysql, MYSQL_OPT_SSL_CERT,   cert);
mysql_options(mysql, MYSQL_OPT_SSL_CA,     ca);
mysql_options(mysql, MYSQL_OPT_SSL_CAPATH, capath);
mysql_options(mysql, MYSQL_OPT_SSL_CIPHER, cipher);

由於這種等效性,應用程式可以不呼叫 mysql_ssl_set(),而是直接呼叫 mysql_options(),並省略選項值為 NULL 的那些選項的呼叫。此外,mysql_options() 提供使用 mysql_ssl_set() 無法使用的加密連線選項,例如 MYSQL_OPT_SSL_MODE 指定連線的安全性狀態,以及 MYSQL_OPT_TLS_VERSION 指定用戶端允許用於加密連線的通訊協定。

引數

  • mysql:從 mysql_init() 傳回的連線處理常式。

  • key:用戶端私密金鑰檔案的路徑名稱。

  • cert:用戶端公開金鑰憑證檔案的路徑名稱。

  • ca:憑證授權機構 (CA) 憑證檔案的路徑名稱。如果使用此選項,則必須指定伺服器使用的相同憑證。

  • capath:包含信任的 SSL CA 憑證檔案的目錄的路徑名稱。

  • cipher:SSL 加密允許的密碼清單。

傳回值

如果作業成功,則此函數會傳回 false,否則會傳回 true。如果 SSL 設定不正確,則在嘗試連線時,後續的 mysql_real_connect() 呼叫會傳回錯誤。