bool
mysql_ssl_set(MYSQL *mysql,
const char *key,
const char *cert,
const char *ca,
const char *capath,
const char *cipher)
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 加密允许的密码列表。
此函数始终返回0
。如果 SSL 设置不正确,则后续
mysql_real_connect()
调用会在您尝试连接时返回错误。