本节描述C应用程序如何使用C API功能进行加密连接。默认情况下,如果服务器支持加密连接,MySQL程序尝试使用加密连接,如果无法建立加密连接,则返回到未加密连接(参见配置MySQL使用加密连接).对于需要在默认行为之外控制加密连接建立方式的应用程序,C API提供了以下功能:
的
mysql_options ()
功能允许应用程序在调用之前设置适当的SSL/TLS选项mysql_real_connect ()
.例如,要要求使用加密连接,请参见强制加密连接.的
mysql_get_ssl_cipher ()
函数使应用程序能够在建立连接后确定该连接是否使用加密。一个零
返回值表示未使用加密。一个非零
返回值表示加密的连接,并将加密命名为cipher。看到部分5.4.34”mysql_get_ssl_cipher ().
mysql_options ()
提供以下选项来控制加密连接的使用。有关选项的详细信息,请参见部分5.4.50”mysql_options ().
MYSQL_OPT_SSL_CA
: CA证书文件的路径名称。如果使用此选项,则必须指定服务器使用的相同证书。MYSQL_OPT_SSL_CAPATH
: SSL CA证书文件所在目录的路径名。MYSQL_OPT_SSL_CERT
:客户端公钥证书文件的路径名称。MYSQL_OPT_SSL_CIPHER
: SSL加密允许的密码列表。MYSQL_OPT_SSL_CRL
:包含证书撤销列表的文件的路径名。MYSQL_OPT_SSL_CRLPATH
:证书吊销列表文件所在目录的路径名。MYSQL_OPT_SSL_KEY
:客户端私钥文件路径名称。MYSQL_OPT_SSL_MODE
:连接安全状态。MYSQL_OPT_SSL_VERIFY_SERVER_CERT
:是否对服务器证书进行主机名身份验证。MYSQL_OPT_TLS_VERSION
:客户端允许的加密协议。
mysql_ssl_set ()
可以作为一套方便的例程使用吗mysql_options ()
指定证书和密钥文件、加密密码等的调用。看到部分5.4.75”mysql_ssl_set ().
mysql_options ()
如果连接可用,则使用SSL证书和密钥文件等信息选项来建立加密的连接,但不强制要求对获得的连接进行加密。要使用加密连接,请使用以下技术:
调用
mysql_options ()
根据需要提供适当的SSL参数(证书和密钥文件、加密密码等等)。调用
mysql_options ()
通过MYSQL_OPT_SSL_MODE
值为的选项SSL_MODE_REQUIRED
或者是一种限制性更强的期权价值。调用
mysql_real_connect ()
连接到服务器。如果无法获得加密连接,则调用失败;退出与一个错误。
相对于默认加密提供的安全性,客户端可以提供一个与服务器使用的CA证书匹配的CA证书,并启用主机名身份验证。通过这种方式,服务器和客户端将它们的信任放在同一个CA证书中,客户端验证它所连接的主机是否是预期的主机:
要指定CA证书,调用
mysql_options ()
通过MYSQL_OPT_SSL_CA
(或MYSQL_OPT_SSL_CAPATH
)期权和看涨期权mysql_options ()
通过MYSQL_OPT_SSL_MODE
值为的选项SSL_MODE_VERIFY_CA
.要也启用主机名身份验证,请调用
mysql_options ()
通过MYSQL_OPT_SSL_MODE
值为的选项SSL_MODE_VERIFY_IDENTITY
而不是SSL_MODE_VERIFY_CA
.
主机名身份验证SSL_MODE_VERIFY_IDENTITY
不能使用服务器自动创建的自签名证书,或手动使用的mysql_ssl_rsa_setup(见使用MySQL创建SSL、RSA证书和密钥).此类自签名证书不包含“Common name”值那样的服务器名。
主机名标识验证也不适用于使用通配符指定通用名的证书,因为该名称与服务器名称是逐字比较的。