3.6.1支持加密连接

本节描述C应用程序如何使用C API功能进行加密连接。默认情况下,如果服务器支持加密连接,MySQL程序尝试使用加密连接,如果无法建立加密连接,则返回到未加密连接(参见配置MySQL使用加密连接).对于需要在默认行为之外控制加密连接建立方式的应用程序,C API提供了以下功能:

加密连接选项

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证书和密钥文件等信息选项来建立加密的连接,但不强制要求对获得的连接进行加密。要使用加密连接,请使用以下技术:

  1. 调用mysql_options ()根据需要提供适当的SSL参数(证书和密钥文件、加密密码等等)。

  2. 调用mysql_options ()通过MYSQL_OPT_SSL_MODE值为的选项SSL_MODE_REQUIRED或者是一种限制性更强的期权价值。

  3. 调用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”值那样的服务器名。

主机名标识验证也不适用于使用通配符指定通用名的证书,因为该名称与服务器名称是逐字比较的。