27.7.6.73 mysql_ssl_set()

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

Description

mysql_ssl_set()用于使用 SSL 构建加密连接。 mysql参数必须是有效的连接处理程序。任何未使用的 SSL 参数都可以指定为NULL

如果使用,则必须在mysql_real_connect()之前调用mysql_ssl_set()mysql_ssl_set()不会执行任何操作,除非在 Client 端库中启用了 SSL 支持。

可以选择调用mysql_ssl_set()来获取加密连接,因为默认情况下,如果服务器支持加密连接,则 MySQL 程序会尝试使用加密进行连接,如果无法构建加密连接,则会退回到未加密连接(请参见第 6.3.1 节“配置 MySQL 以使用加密连接”)。 mysql_ssl_set()对于必须指定特定证书和密钥文件,加密密码等的应用程序可能很有用。

mysql_ssl_set()指定 SSL 信息,例如证书和密钥文件,用于构建加密连接(如果可用),但是不强制要求对获得的连接进行加密。要要求加密连接,请使用第 27.7.14 节“加密连接的 C API 支持”中描述的技术。

为了获得相对于默认加密所提供的安全性更高的安全性,Client 端可以提供与服务器使用的证书相匹配的 CA 证书,并启用主机名身份验证。这样,服务器和 Client 端将他们的信任放在相同的 CA 证书中,并且 Client 端将验证其连接的主机是否是预期的主机。有关详细信息,请参见第 27.7.14 节“加密连接的 C API 支持”

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_options()而不是直接调用mysql_options(),而不必选择那些值为NULL的选项。此外,mysql_options()提供了使用mysql_ssl_set()不能使用的加密连接选项,例如MYSQL_OPT_SSL_MODE指定连接的安全状态,而MYSQL_OPT_TLS_VERSION指定 Client 端允许进行加密连接的协议。

Arguments:

  • mysql:连接处理程序从mysql_init()返回。

  • key:Client 端私钥文件的路径名。

  • cert:Client 端公共密钥证书文件的路径名。

  • ca:证书颁发机构(CA)证书文件的路径名。如果使用此选项,则必须指定服务器使用的相同证书。

  • capath:包含受信任的 SSL CA 证书文件的目录的路径名。

  • cipher:SSL 加密的允许密码列 table。

Return Values

此函数始终返回0。如果 SSL 设置不正确,则当您尝试连接时,随后的mysql_real_connect()调用将返回错误。